resourceloader: Replace some Xml::encodeJs calls with RL's own encodeJson
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 16 Jul 2019 00:15:32 +0000 (01:15 +0100)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 16 Jul 2019 00:15:32 +0000 (01:15 +0100)
Bug: T32956
Change-Id: I614fe0e80ff308b857639a27d7772f969899b468

includes/resourceloader/ResourceLoader.php
tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php

index 6eb9908..f8e76ac 100644 (file)
@@ -1259,11 +1259,9 @@ MESSAGE;
         * @return string JavaScript code
         */
        public static function makeMessageSetScript( $messages ) {
-               return Xml::encodeJsCall(
-                       'mw.messages.set',
-                       [ (object)$messages ],
-                       self::inDebugMode()
-               );
+               return 'mw.messages.set('
+                       . self::encodeJsonForScript( (object)$messages )
+                       . ');';
        }
 
        /**
@@ -1347,11 +1345,9 @@ MESSAGE;
                if ( !is_array( $states ) ) {
                        $states = [ $states => $state ];
                }
-               return Xml::encodeJsCall(
-                       'mw.loader.state',
-                       [ $states ],
-                       self::inDebugMode()
-               );
+               return 'mw.loader.state('
+                       . self::encodeJsonForScript( $states )
+                       . ');';
        }
 
        private static function isEmptyObject( stdClass $obj ) {
@@ -1435,11 +1431,9 @@ MESSAGE;
 
                array_walk( $modules, [ self::class, 'trimArray' ] );
 
-               return Xml::encodeJsCall(
-                       'mw.loader.register',
-                       [ $modules ],
-                       self::inDebugMode()
-               );
+               return 'mw.loader.register('
+                       . self::encodeJsonForScript( $modules )
+                       . ');';
        }
 
        /**
@@ -1460,11 +1454,9 @@ MESSAGE;
                if ( !is_array( $sources ) ) {
                        $sources = [ $sources => $loadUrl ];
                }
-               return Xml::encodeJsCall(
-                       'mw.loader.addSource',
-                       [ $sources ],
-                       self::inDebugMode()
-               );
+               return 'mw.loader.addSource('
+                       . self::encodeJsonForScript( $sources )
+                       . ');';
        }
 
        /**
index 2691ccc..213eed2 100644 (file)
@@ -14,10 +14,10 @@ class ResourceLoaderStartUpModuleTest extends ResourceLoaderTestCase {
                                'msg' => 'Empty registry',
                                'modules' => [],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [] );'
+});
+mw.loader.register([]);'
                        ] ],
                        [ [
                                'msg' => 'Basic registry',
@@ -25,15 +25,15 @@ mw.loader.register( [] );'
                                        'test.blank' => [ 'class' => ResourceLoaderTestModule::class ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                'msg' => 'Optimise the dependency tree (basic case)',
@@ -56,10 +56,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "a",
         "{blankVer}",
@@ -83,7 +83,7 @@ mw.loader.register( [
         "d",
         "{blankVer}"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                'msg' => 'Optimise the dependency tree (tolerate unknown deps)',
@@ -102,10 +102,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "a",
         "{blankVer}",
@@ -126,7 +126,7 @@ mw.loader.register( [
         "c",
         "{blankVer}"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                // Regression test for T223402.
@@ -154,10 +154,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "top",
         "{blankVer}",
@@ -192,7 +192,7 @@ mw.loader.register( [
         "util",
         "{blankVer}"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                // Regression test for T223402.
@@ -208,10 +208,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "top",
         "{blankVer}",
@@ -224,7 +224,7 @@ mw.loader.register( [
         "util",
         "{blankVer}"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                'msg' => 'Version falls back gracefully if getVersionHash throws',
@@ -241,18 +241,18 @@ mw.loader.register( [
                                        ]
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.fail",
         ""
     ]
-] );
-mw.loader.state( {
+]);
+mw.loader.state({
     "test.fail": "error"
-} );',
+});',
                        ] ],
                        [ [
                                'msg' => 'Use version from getVersionHash',
@@ -267,15 +267,15 @@ mw.loader.state( {
                                        ]
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.version",
         "1234567"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                'msg' => 'Re-hash version from getVersionHash if too long',
@@ -290,15 +290,15 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.version",
         "016es8l"
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                'msg' => 'Group signature',
@@ -314,10 +314,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
@@ -334,7 +334,7 @@ mw.loader.register( [
         [],
         "x-bar"
     ]
-] );'
+]);'
                        ] ],
                        [ [
                                'msg' => 'Different target (non-test should not be registered)',
@@ -346,15 +346,15 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
     ]
-] );'
+]);'
                        ] ],
                        [ [
                                'msg' => 'Safemode disabled (default; register all modules)',
@@ -375,10 +375,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
@@ -395,7 +395,7 @@ mw.loader.register( [
         "test.user",
         "{blankVer}"
     ]
-] );'
+]);'
                        ] ],
                        [ [
                                'msg' => 'Safemode enabled (filter modules with user/site origin)',
@@ -417,10 +417,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
@@ -429,7 +429,7 @@ mw.loader.register( [
         "test.core-generated",
         "{blankVer}"
     ]
-] );'
+]);'
                        ] ],
                        [ [
                                'msg' => 'Foreign source',
@@ -446,11 +446,11 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php",
     "example": "http://example.org/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}",
@@ -458,7 +458,7 @@ mw.loader.register( [
         null,
         "example"
     ]
-] );'
+]);'
                        ] ],
                        [ [
                                'msg' => 'Conditional dependency function',
@@ -487,10 +487,10 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.x.core",
         "{blankVer}"
@@ -520,7 +520,7 @@ mw.loader.register( [
             2
         ]
     ]
-] );',
+]);',
                        ] ],
                        [ [
                                // This may seem like an edge case, but a plain MediaWiki core install
@@ -593,11 +593,11 @@ mw.loader.register( [
                                        ],
                                ],
                                'out' => '
-mw.loader.addSource( {
+mw.loader.addSource({
     "local": "/w/load.php",
     "example": "http://example.org/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
@@ -661,7 +661,7 @@ mw.loader.register( [
         "x-bar",
         "example"
     ]
-] );'
+]);'
                        ] ],
                ];
        }
@@ -748,10 +748,10 @@ mw.loader.register( [
                $rl->register( $modules );
                $module = new ResourceLoaderStartUpModule();
                $out =
-'mw.loader.addSource( {
+'mw.loader.addSource({
     "local": "/w/load.php"
-} );
-mw.loader.register( [
+});
+mw.loader.register([
     [
         "test.blank",
         "{blankVer}"
@@ -766,7 +766,7 @@ mw.loader.register( [
         null,
         "return !!(    window.JSON \u0026\u0026    JSON.parse \u0026\u0026    JSON.stringify);"
     ]
-] );';
+]);';
 
                $this->assertEquals(
                        self::expandPlaceholders( $out ),
index f47bdaf..412272d 100644 (file)
@@ -560,12 +560,12 @@ END
         */
        public function testMakeLoaderRegisterScript() {
                $this->assertEquals(
-                       'mw.loader.register( [
+                       'mw.loader.register([
     [
         "test.name",
         "1234567"
     ]
-] );',
+]);',
                        ResourceLoader::makeLoaderRegisterScript( [
                                [ 'test.name', '1234567' ],
                        ] ),
@@ -573,7 +573,7 @@ END
                );
 
                $this->assertEquals(
-                       'mw.loader.register( [
+                       'mw.loader.register([
     [
         "test.foo",
         "100"
@@ -601,7 +601,7 @@ END
         null,
         "return true;"
     ]
-] );',
+]);',
                        ResourceLoader::makeLoaderRegisterScript( [
                                [ 'test.foo', '100' , [], null, null ],
                                [ 'test.bar', '200', [ 'test.unknown' ], null ],
@@ -617,29 +617,29 @@ END
         */
        public function testMakeLoaderSourcesScript() {
                $this->assertEquals(
-                       'mw.loader.addSource( {
+                       'mw.loader.addSource({
     "local": "/w/load.php"
-} );',
+});',
                        ResourceLoader::makeLoaderSourcesScript( 'local', '/w/load.php' )
                );
                $this->assertEquals(
-                       'mw.loader.addSource( {
+                       'mw.loader.addSource({
     "local": "/w/load.php"
-} );',
+});',
                        ResourceLoader::makeLoaderSourcesScript( [ 'local' => '/w/load.php' ] )
                );
                $this->assertEquals(
-                       'mw.loader.addSource( {
+                       'mw.loader.addSource({
     "local": "/w/load.php",
     "example": "https://example.org/w/load.php"
-} );',
+});',
                        ResourceLoader::makeLoaderSourcesScript( [
                                'local' => '/w/load.php',
                                'example' => 'https://example.org/w/load.php'
                        ] )
                );
                $this->assertEquals(
-                       'mw.loader.addSource( [] );',
+                       'mw.loader.addSource([]);',
                        ResourceLoader::makeLoaderSourcesScript( [] )
                );
        }
@@ -747,9 +747,9 @@ END
                                'modules' => [
                                        'foo' => 'foo()',
                                ],
-                               'expected' => "foo()\n" . 'mw.loader.state( {
+                               'expected' => "foo()\n" . 'mw.loader.state({
     "foo": "ready"
-} );',
+});',
                                'minified' => "foo()\n" . 'mw.loader.state({"foo":"ready"});',
                                'message' => 'Script without semi-colon',
                        ],
@@ -758,10 +758,10 @@ END
                                        'foo' => 'foo()',
                                        'bar' => 'bar()',
                                ],
-                               'expected' => "foo()\nbar()\n" . 'mw.loader.state( {
+                               'expected' => "foo()\nbar()\n" . 'mw.loader.state({
     "foo": "ready",
     "bar": "ready"
-} );',
+});',
                                'minified' => "foo()\nbar()\n" . 'mw.loader.state({"foo":"ready","bar":"ready"});',
                                'message' => 'Two scripts without semi-colon',
                        ],
@@ -769,9 +769,9 @@ END
                                'modules' => [
                                        'foo' => "foo()\n// bar();"
                                ],
-                               'expected' => "foo()\n// bar();\n" . 'mw.loader.state( {
+                               'expected' => "foo()\n// bar();\n" . 'mw.loader.state({
     "foo": "ready"
-} );',
+});',
                                'minified' => "foo()\n" . 'mw.loader.state({"foo":"ready"});',
                                'message' => 'Script with semi-colon in comment (T162719)',
                        ],
@@ -866,11 +866,11 @@ END
                $this->assertCount( 1, $errors );
                $this->assertRegExp( '/Ferry not found/', $errors[0] );
                $this->assertEquals(
-                       "foo();\nbar();\n" . 'mw.loader.state( {
+                       "foo();\nbar();\n" . 'mw.loader.state({
     "ferry": "error",
     "foo": "ready",
     "bar": "ready"
-} );',
+});',
                        $response
                );
        }