[BASILISK] Skip notifications for background tabs when restoring a session

This commit is contained in:
JustOff 2018-09-16 19:47:19 +03:00 committed by Roy Tam
commit ee4ef937d9
3 changed files with 18 additions and 3 deletions

View file

@ -2117,6 +2117,7 @@
var aRelatedBrowser;
var aOriginPrincipal;
var aOpener;
var aSkipBackgroundNotify;
if (arguments.length == 2 &&
typeof arguments[1] == "object" &&
!(arguments[1] instanceof Ci.nsIURI)) {
@ -2139,6 +2140,7 @@
aRelatedBrowser = params.relatedBrowser;
aOriginPrincipal = params.originPrincipal;
aOpener = params.opener;
aSkipBackgroundNotify = params.skipBackgroundNotify;
}
// if we're adding tabs, we're past interrupt mode, ditch the owner
@ -2167,6 +2169,11 @@
t.setAttribute("crop", "end");
t.setAttribute("onerror", "this.removeAttribute('image');");
if (aSkipBackgroundNotify) {
t.setAttribute("skipbackgroundnotify", true);
}
t.className = "tabbrowser-tab";
this.tabContainer._unlockTabSizing();
@ -5951,7 +5958,11 @@
this._fillTrailingGap();
this._handleTabSelect();
} else {
this._notifyBackgroundTab(tab);
if (tab.hasAttribute("skipbackgroundnotify")) {
tab.removeAttribute("skipbackgroundnotify");
} else {
this._notifyBackgroundTab(tab);
}
}
// XXXmano: this is a temporary workaround for bug 345399

View file

@ -3113,7 +3113,8 @@ var SessionStoreInternal = {
tabbrowser.addTab("about:blank",
{skipAnimation: true,
forceNotRemote,
userContextId});
userContextId,
skipBackgroundNotify: true});
// If we inserted a new tab because the userContextId didn't match with the
// open tab, even though `t < openTabCount`, we need to remove that open tab

View file

@ -14,7 +14,10 @@ this.EXPORTED_SYMBOLS = ["TabAttributes"];
// 'pending' is used internal by sessionstore and managed accordingly.
// 'iconLoadingPrincipal' is same as 'image' that it should be handled by
// using the gBrowser.getIcon()/setIcon() methods.
const ATTRIBUTES_TO_SKIP = new Set(["image", "muted", "pending", "iconLoadingPrincipal"]);
// 'skipbackgroundnotify' is used internal by tabbrowser.xml.
const ATTRIBUTES_TO_SKIP = new Set(["image", "muted", "pending",
"iconLoadingPrincipal",
"skipbackgroundnotify"]);
// A set of tab attributes to persist. We will read a given list of tab
// attributes when collecting tab data and will re-set those attributes when