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

Reply via email to