jenkins-bot has submitted this change and it was merged.
Change subject: mediawiki.Uri: Support names of Object prototypes as keys in
query
......................................................................
mediawiki.Uri: Support names of Object prototypes as keys in query
JSHint W001 has to be disabled to avoid warnings about a key named
'hasOwnProperty'.
Bug: T114344
Change-Id: I7a58204c98d7a490906c6a23620e9f24ebb3db0a
---
M resources/src/mediawiki/mediawiki.Uri.js
M tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
2 files changed, 18 insertions(+), 3 deletions(-)
Approvals:
Krinkle: Looks good to me, approved
jenkins-bot: Verified
diff --git a/resources/src/mediawiki/mediawiki.Uri.js
b/resources/src/mediawiki/mediawiki.Uri.js
index 29b224e..9d29b4c 100644
--- a/resources/src/mediawiki/mediawiki.Uri.js
+++ b/resources/src/mediawiki/mediawiki.Uri.js
@@ -276,7 +276,8 @@
*/
parse: function ( str, options ) {
var q, matches,
- uri = this;
+ uri = this,
+ hasOwn =
Object.prototype.hasOwnProperty;
// Apply parser regex and set all properties
based on the result
matches = parser[ options.strictMode ? 'strict'
: 'loose' ].exec( str );
@@ -298,7 +299,7 @@
// If overrideKeys,
always (re)set top level value.
// If not overrideKeys
but this key wasn't set before, then we set it as well.
- if (
options.overrideKeys || q[ k ] === undefined ) {
+ if (
options.overrideKeys || !hasOwn.call( q, k ) ) {
q[ k ] = v;
// Use arrays if
overrideKeys is false and key was already seen before
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
index 51374bd..63de2fd 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
@@ -60,7 +60,7 @@
} );
} );
- QUnit.test( 'Constructor( String[, Object ] )', 10, function ( assert )
{
+ QUnit.test( 'Constructor( String[, Object ] )', 11, function ( assert )
{
var uri;
uri = new mw.Uri(
'http://www.example.com/dir/?m=foo&m=bar&n=1', {
@@ -132,6 +132,20 @@
strictMode: false
} );
assert.equal( uri.toString(), 'http://example.com/bar/baz',
'normalize URI without protocol or // in loose mode' );
+
+ /*jshint -W001 */
+ uri = new mw.Uri(
'http://example.com/index.php?key=key&hasOwnProperty=hasOwnProperty&constructor=constructor&watch=watch'
);
+ assert.deepEqual(
+ uri.query,
+ {
+ key: 'key',
+ constructor: 'constructor',
+ hasOwnProperty: 'hasOwnProperty',
+ watch: 'watch'
+ },
+ 'Keys in query strings support names of Object
prototypes (bug T114344)'
+ );
+ /*jshint +W001 */
} );
QUnit.test( 'Constructor( Object )', 3, function ( assert ) {
--
To view, visit https://gerrit.wikimedia.org/r/242815
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7a58204c98d7a490906c6a23620e9f24ebb3db0a
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Gerrit Patch Uploader <[email protected]>
Gerrit-Reviewer: Bartosz DziewoĆski <[email protected]>
Gerrit-Reviewer: Edokter <[email protected]>
Gerrit-Reviewer: Fomafix
Gerrit-Reviewer: Gerrit Patch Uploader <[email protected]>
Gerrit-Reviewer: Jack Phoenix <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits