Page MenuHomePhabricator

D19437.diff
No OneTemporary

D19437.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -10,7 +10,7 @@
'conpherence.pkg.css' => 'e68cf1fa',
'conpherence.pkg.js' => '15191c65',
'core.pkg.css' => '8be474cc',
- 'core.pkg.js' => 'e1f0f7bd',
+ 'core.pkg.js' => 'e452721e',
'differential.pkg.css' => '06dc617c',
'differential.pkg.js' => 'c2ca903a',
'diffusion.pkg.css' => 'a2d17c7d',
@@ -259,7 +259,7 @@
'rsrc/externals/javelin/lib/__tests__/URI.js' => '1e45fda9',
'rsrc/externals/javelin/lib/__tests__/behavior.js' => '1ea62783',
'rsrc/externals/javelin/lib/behavior.js' => '61cbc29a',
- 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '8d3bc1b2',
+ 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => 'dfaf006b',
'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '70baed2f',
'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => '185bbd53',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '503e17fd',
@@ -710,7 +710,7 @@
'javelin-scrollbar' => '9065f639',
'javelin-sound' => '949c0fe5',
'javelin-stratcom' => '327f418a',
- 'javelin-tokenizer' => '8d3bc1b2',
+ 'javelin-tokenizer' => 'dfaf006b',
'javelin-typeahead' => '70baed2f',
'javelin-typeahead-composite-source' => '503e17fd',
'javelin-typeahead-normalizer' => '185bbd53',
@@ -1573,12 +1573,6 @@
'javelin-stratcom',
'javelin-behavior',
),
- '8d3bc1b2' => array(
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
- ),
'8d4a8c72' => array(
'javelin-install',
'javelin-dom',
@@ -2025,6 +2019,12 @@
'phuix-icon-view',
'phabricator-prefab',
),
+ 'dfaf006b' => array(
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-install',
+ ),
'e1d25dfb' => array(
'javelin-behavior',
'javelin-stratcom',
diff --git a/src/applications/paste/conduit/PasteCreateConduitAPIMethod.php b/src/applications/paste/conduit/PasteCreateConduitAPIMethod.php
--- a/src/applications/paste/conduit/PasteCreateConduitAPIMethod.php
+++ b/src/applications/paste/conduit/PasteCreateConduitAPIMethod.php
@@ -64,9 +64,12 @@
->setTransactionType(PhabricatorPasteTitleTransaction::TRANSACTIONTYPE)
->setNewValue($title);
- $xactions[] = id(new PhabricatorPasteTransaction())
- ->setTransactionType(PhabricatorPasteLanguageTransaction::TRANSACTIONTYPE)
- ->setNewValue($language);
+ if (strlen($language)) {
+ $xactions[] = id(new PhabricatorPasteTransaction())
+ ->setTransactionType(
+ PhabricatorPasteLanguageTransaction::TRANSACTIONTYPE)
+ ->setNewValue($language);
+ }
$editor = id(new PhabricatorPasteEditor())
->setActor($viewer)
diff --git a/src/applications/paste/xaction/PhabricatorPasteLanguageTransaction.php b/src/applications/paste/xaction/PhabricatorPasteLanguageTransaction.php
--- a/src/applications/paste/xaction/PhabricatorPasteLanguageTransaction.php
+++ b/src/applications/paste/xaction/PhabricatorPasteLanguageTransaction.php
@@ -38,4 +38,20 @@
$this->renderLanguageValue($this->getNewValue()));
}
+ public function validateTransactions($object, array $xactions) {
+ $errors = array();
+
+ foreach ($xactions as $xaction) {
+ $new = $xaction->getNewValue();
+
+ if ($new !== null && !strlen($new)) {
+ $errors[] = $this->newInvalidError(
+ pht('Paste language must be null or a nonempty string.'),
+ $xaction);
+ }
+ }
+
+ return $errors;
+ }
+
}
diff --git a/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js b/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
--- a/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
+++ b/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
@@ -395,8 +395,12 @@
break;
case 'delete':
if (!this._focus.value.length) {
+ // In unusual cases, it's possible for us to end up with a token
+ // that has the empty string ("") as a value. Support removal of
+ // this unusual token.
+
var tok;
- while ((tok = this._tokens.pop())) {
+ while ((tok = this._tokens.pop()) !== null) {
if (this._remove(tok, true)) {
break;
}

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 13, 10:08 PM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7634553
Default Alt Text
D19437.diff (4 KB)

Event Timeline