Bug 1353013 - Ensure there's a large enough idle period to load the preloaded about:newtab. r?florian
MozReview-Commit-ID: GODsMgG8SST
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -2040,36 +2040,44 @@
// custom newtab URLs.
return Services.prefs.getBoolPref("browser.newtab.preload") &&
!aboutNewTabService.overridden;
]]>
</body>
</method>
<field name="_preloadBrowserMinUserIdleSeconds">1</field>
+ <field name="_preloadBrowserMinIdlePeriodMs">40</field>
<method name="requestPreloadBrowser">
<body><![CDATA[
// Do nothing if we have a preloaded browser already or we're about
// to create one or preloading is disabled.
if (this._preloadedBrowser ||
this._preloadBrowserIdleObserver ||
!this._isPreloadingEnabled()) {
return;
}
this._preloadBrowserIdleObserver = (aSubject, aTopic) => {
if (aTopic == "idle") {
Services.idle.removeIdleObserver(this._preloadBrowserIdleObserver,
this._preloadBrowserMinUserIdleSeconds);
this._preloadBrowserIdleObserver = null;
- window.requestIdleCallback(() => this._createPreloadBrowser());
+ let idleCallback = (deadline) => {
+ if (deadline.timeRemaining() < this._preloadBrowserMinIdlePeriodMs) {
+ window.requestIdleCallback(idleCallback);
+ } else {
+ this._createPreloadBrowser();
+ }
+ };
+ window.requestIdleCallback(idleCallback);
}
};
- Services.idle.addIdleObserver(this._preloadBrowserIdleObserver, 1);
+ Services.idle.addIdleObserver(this._preloadBrowserIdleObserver, this._preloadBrowserMinUserIdleSeconds);
]]></body>
</method>
<method name="_createPreloadBrowser">
<body>
<![CDATA[
// Do nothing if we have a preloaded browser already
// or preloading of newtab pages is disabled.