forked from mirrors/gecko-dev
This is a backout of Bug 1347791 part 4; 49b533231388. 49b533231388 took the mediaBlocked attribute and stored it in session store, and caused us to call browser.resumeMedia() or blockMedia() as appropriate upon restore. We don't want to session restore whether tabs have had delay playback start unblocked anymore, so remove the code that session stores that attribute. MozReview-Commit-ID: AkRVlufrUAK --HG-- extra : rebase_source : 613619e2ec587b546cede7795b76b049258df9dd
75 lines
2 KiB
JavaScript
75 lines
2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
var EXPORTED_SYMBOLS = ["TabAttributes"];
|
|
|
|
// We never want to directly read or write these attributes.
|
|
// 'image' should not be accessed directly but handled by using the
|
|
// gBrowser.getIcon()/setIcon() methods.
|
|
// 'muted' should not be accessed directly but handled by using the
|
|
// tab.linkedBrowser.audioMuted/toggleMuteAudio methods.
|
|
// '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"]);
|
|
|
|
// 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
|
|
// the given tab data is restored to a new tab.
|
|
var TabAttributes = Object.freeze({
|
|
persist(name) {
|
|
return TabAttributesInternal.persist(name);
|
|
},
|
|
|
|
get(tab) {
|
|
return TabAttributesInternal.get(tab);
|
|
},
|
|
|
|
set(tab, data = {}) {
|
|
TabAttributesInternal.set(tab, data);
|
|
}
|
|
});
|
|
|
|
var TabAttributesInternal = {
|
|
_attrs: new Set(),
|
|
|
|
persist(name) {
|
|
if (this._attrs.has(name) || ATTRIBUTES_TO_SKIP.has(name)) {
|
|
return false;
|
|
}
|
|
|
|
this._attrs.add(name);
|
|
return true;
|
|
},
|
|
|
|
get(tab) {
|
|
let data = {};
|
|
|
|
for (let name of this._attrs) {
|
|
if (tab.hasAttribute(name)) {
|
|
data[name] = tab.getAttribute(name);
|
|
}
|
|
}
|
|
|
|
return data;
|
|
},
|
|
|
|
set(tab, data = {}) {
|
|
// Clear attributes.
|
|
for (let name of this._attrs) {
|
|
tab.removeAttribute(name);
|
|
}
|
|
|
|
// Set attributes.
|
|
for (let name in data) {
|
|
if (!ATTRIBUTES_TO_SKIP.has(name)) {
|
|
tab.setAttribute(name, data[name]);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|