mediawiki.requestIdleCallback: Avoid native window.requestIdleCallback
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 20 Sep 2016 23:01:16 +0000 (00:01 +0100)
committerAaron Schulz <aschulz@wikimedia.org>
Tue, 20 Sep 2016 23:24:57 +0000 (23:24 +0000)
Follows-up 482ad8d9fb.

This currently has bugs in Chrome that can cause it to not get called
for up to 30 seconds.

https://bugs.chromium.org/p/chromium/issues/detail?id=647870

Change-Id: I221cd6c2bcdbee89bc7401c071f2ab1865a738ed

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

index dfc98ad..b58cb69 100644 (file)
         * @member mw
         * @param {Function} callback
         */
+       mw.requestIdleCallback = mw.requestIdleCallbackInternal;
+       /*
+       // XXX: Polyfill disabled due to https://bugs.chromium.org/p/chromium/issues/detail?id=647870
        mw.requestIdleCallback = window.requestIdleCallback
                // Bind because it throws TypeError if context is not window
                ? window.requestIdleCallback.bind( window )
                : mw.requestIdleCallbackInternal;
+       */
 }( mediaWiki ) );
index 7a09964..df02693 100644 (file)
@@ -95,8 +95,9 @@
        if ( window.requestIdleCallback ) {
                QUnit.test( 'native', function ( assert ) {
                        var done = assert.async();
-                       // Remove polyfill
+                       // Remove polyfill and clock stub
                        mw.requestIdleCallback.restore();
+                       this.clock.restore();
                        mw.requestIdleCallback( function () {
                                assert.expect( 0 );
                                done();