resourceloader: Support absolute-path references in mw.loader.load()
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 15 Sep 2015 23:51:18 +0000 (00:51 +0100)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 15 Sep 2015 23:51:18 +0000 (00:51 +0100)
Follows-up b5e69c4ef621 which made loader sources no longer expanded urls.

Change-Id: Ia2fcd13f46d548a98620c3e78b8f59b81d976eb4

resources/src/mediawiki/mediawiki.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js

index 122e512..5dd2acb 100644 (file)
                                        if ( typeof modules !== 'object' && typeof modules !== 'string' ) {
                                                throw new Error( 'modules must be a string or an array, not a ' + typeof modules );
                                        }
-                                       // Allow calling with an external url or single dependency as a string
+                                       // Allow calling with a url or single dependency as a string
                                        if ( typeof modules === 'string' ) {
-                                               if ( /^(https?:)?\/\//.test( modules ) ) {
+                                               // "https://example.org/x.js", "http://example.org/x.js", "//example.org/x.js", "/x.js"
+                                               if ( /^(https?:)?\/?\//.test( modules ) ) {
                                                        if ( type === 'text/css' ) {
                                                                // Support: IE 7-8
                                                                // Use properties instead of attributes as IE throws security
index b55b1e7..111d85b 100644 (file)
                // This bug was actually already fixed in 1.18 and later when discovered in 1.17.
                // Test is for regressions!
 
-               // Forge an URL to the test callback script
+               // Forge a URL to the test callback script
                var target = QUnit.fixurl(
                        mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/qunitOkCall.js'
                );
                mw.loader.load( target );
        } );
 
+       QUnit.asyncTest( 'mw.loader( "/absolute-path" )', 2, function ( assert ) {
+               // Forge a URL to the test callback script
+               var target = QUnit.fixurl(
+                       mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/qunitOkCall.js'
+               );
+
+               // Confirm that mw.loader.load() works with absolute-paths (relative to current hostname)
+               assert.equal( target.slice( 0, 1 ), '/', 'URL is relative to document root' );
+
+               // Async!
+               // The target calls QUnit.start
+               mw.loader.load( target );
+       } );
+
        QUnit.asyncTest( 'mw.loader() executing race (T112232)', 2, function ( assert ) {
                var done = false;