forked from mirrors/gecko-dev
56 lines
1.9 KiB
JavaScript
56 lines
1.9 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/. */
|
|
|
|
const MediaQueryDOMSorting = {
|
|
init() {
|
|
this.recentlyClosedTabs = document.getElementById(
|
|
"recently-closed-tabs-container"
|
|
);
|
|
this.colorwayLandmark = document.getElementById("colorway-landmark");
|
|
this.mql = window.matchMedia("(max-width: 65rem)");
|
|
this.mql.addEventListener("change", () => this.changeHandler());
|
|
this.changeHandler();
|
|
},
|
|
cleanup() {
|
|
this.mql.removeEventListener("change", () => this.changeHandler());
|
|
},
|
|
changeHandler() {
|
|
const oldFocus = document.activeElement;
|
|
if (this.mql.matches) {
|
|
this.recentlyClosedTabs.before(this.colorwayLandmark);
|
|
} else {
|
|
this.colorwayLandmark.before(this.recentlyClosedTabs);
|
|
}
|
|
if (oldFocus) {
|
|
Services.focus.setFocus(oldFocus, Ci.nsIFocusManager.FLAG_NOSCROLL);
|
|
}
|
|
},
|
|
};
|
|
|
|
window.addEventListener("DOMContentLoaded", async () => {
|
|
Services.telemetry.setEventRecordingEnabled("firefoxview", true);
|
|
Services.telemetry.recordEvent("firefoxview", "entered", "firefoxview", null);
|
|
document.getElementById("recently-closed-tabs-container").onLoad();
|
|
MediaQueryDOMSorting.init();
|
|
// If Firefox View was reloaded by the user, force syncing of tabs
|
|
// to get the most up to date synced tabs.
|
|
if (
|
|
performance
|
|
.getEntriesByType("navigation")
|
|
.map(nav => nav.type)
|
|
.includes("reload")
|
|
) {
|
|
await document.getElementById("tab-pickup-container").onReload();
|
|
}
|
|
});
|
|
|
|
window.addEventListener("unload", () => {
|
|
const tabPickupList = document.querySelector("tab-pickup-list");
|
|
if (tabPickupList) {
|
|
tabPickupList.cleanup();
|
|
}
|
|
document.getElementById("tab-pickup-container").cleanup();
|
|
document.getElementById("recently-closed-tabs-container").cleanup();
|
|
MediaQueryDOMSorting.cleanup();
|
|
});
|