Bug 1331873 - Null-check tab in TelemetryReportingPolicyImpl._openFirstRunPage's progress listener since it can be called synchronously before we have a reference to the tab. r?gijs
MozReview-Commit-ID: Gcktb3x7o4W
--- a/toolkit/components/telemetry/TelemetryReportingPolicy.jsm
+++ b/toolkit/components/telemetry/TelemetryReportingPolicy.jsm
@@ -428,21 +428,23 @@ var TelemetryReportingPolicyImpl = {
if (!win) {
this._log.info("Couldn't find browser window to open first-run page. Falling back to infobar.");
return false;
}
// We'll consider the user notified once the privacy policy has been loaded
// in a background tab even if that tab hasn't been selected.
+ let tab;
let progressListener = {};
progressListener.onStateChange =
(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) => {
if (aWebProgress.isTopLevel &&
- aBrowser == tab.linkedBrowser &&
+ tab &&
+ tab.linkedBrowser == aBrowser &&
aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK) {
let uri = aBrowser.documentURI;
if (uri && !/^about:(blank|neterror|certerror|blocked)/.test(uri.spec)) {
this._userNotified();
} else {
this._log.info("Failed to load first-run page. Falling back to infobar.");
this._showInfobar();
@@ -454,17 +456,17 @@ var TelemetryReportingPolicyImpl = {
let removeListeners = () => {
win.removeEventListener("unload", removeListeners);
win.gBrowser.removeTabsProgressListener(progressListener);
};
win.addEventListener("unload", removeListeners);
win.gBrowser.addTabsProgressListener(progressListener);
- let tab = win.gBrowser.loadOneTab(firstRunPolicyURL, { inBackground: true });
+ tab = win.gBrowser.loadOneTab(firstRunPolicyURL, { inBackground: true });
return true;
},
observe(aSubject, aTopic, aData) {
if (aTopic != "sessionstore-windows-restored") {
return;
}