Bug 1367450 - Don't trigger captive portal check until delayed startup has completed. r=florian
MozReview-Commit-ID: LCinITjTlK7
--- a/browser/base/content/browser-captivePortal.js
+++ b/browser/base/content/browser-captivePortal.js
@@ -57,34 +57,45 @@ var CaptivePortalWatcher = {
// A captive portal has already been detected.
this._captivePortalDetected();
// Automatically open a captive portal tab if there's no other browser window.
let windows = Services.wm.getEnumerator("navigator:browser");
if (windows.getNext() == window && !windows.hasMoreElements()) {
this.ensureCaptivePortalTab();
}
+ } else if (cps.state == cps.UNKNOWN) {
+ // We trigger a portal check after delayed startup to avoid doing a network
+ // request before first paint.
+ this._delayedRecheckPending = true;
+ Services.obs.addObserver(this, "browser-delayed-startup-finished");
}
-
- cps.recheckCaptivePortal();
},
uninit() {
Services.obs.removeObserver(this, "captive-portal-login");
Services.obs.removeObserver(this, "captive-portal-login-abort");
Services.obs.removeObserver(this, "captive-portal-login-success");
+ if (this._delayedRecheckPending) {
+ Services.obs.removeObserver(this, "browser-delayed-startup-finished");
+ }
if (this._delayedCaptivePortalDetectedInProgress) {
Services.obs.removeObserver(this, "xul-window-visible");
}
},
observe(aSubject, aTopic, aData) {
switch (aTopic) {
+ case "browser-delayed-startup-finished":
+ Services.obs.removeObserver(this, "browser-delayed-startup-finished");
+ delete this._delayedRecheckPending;
+ cps.recheckCaptivePortal();
+ break;
case "captive-portal-login":
this._captivePortalDetected();
break;
case "captive-portal-login-abort":
case "captive-portal-login-success":
this._captivePortalGone();
break;
case "xul-window-visible":