Backed out 3 changesets (bug 1434883) for frequent leaks in AbstractThread, AnimationTimeline, Annotators, Array, AsyncFreeSnowWhite, ... on a CLOSED TREE

Backed out changeset c8115e90ffa8 (bug 1434883)
Backed out changeset 22c83b1d417d (bug 1434883)
Backed out changeset 085796417462 (bug 1434883)
This commit is contained in:
Cosmin Sabou
2018-02-06 16:30:56 +02:00
parent 7e30184f37
commit 27ede269b6
12 changed files with 91 additions and 307 deletions

View File

@@ -6,8 +6,6 @@ ChromeUtils.defineModuleGetter(this, "AppMenuNotifications",
"resource://gre/modules/AppMenuNotifications.jsm");
ChromeUtils.defineModuleGetter(this, "NewTabUtils",
"resource://gre/modules/NewTabUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PanelMultiView",
"resource:///modules/PanelMultiView.jsm");
ChromeUtils.defineModuleGetter(this, "ScrollbarSampler",
"resource:///modules/ScrollbarSampler.jsm");
@@ -217,9 +215,7 @@ const PanelUI = {
}, {once: true});
anchor = this._getPanelAnchor(anchor);
PanelMultiView.openPopup(this.panel, anchor, {
triggerEvent: domEvent,
}).catch(Cu.reportError);
this.panel.openPopup(anchor, { triggerEvent: domEvent });
}, (reason) => {
console.error("Error showing the PanelUI menu", reason);
});
@@ -234,7 +230,7 @@ const PanelUI = {
return;
}
PanelMultiView.hidePopup(this.panel);
this.panel.hidePopup();
},
observe(subject, topic, status) {
@@ -422,6 +418,10 @@ const PanelUI = {
await oldMultiView.showMainView();
}
let viewShown = false;
let listener = () => viewShown = true;
viewNode.addEventListener("ViewShown", listener, {once: true});
let multiView = document.createElement("panelmultiview");
multiView.setAttribute("id", "customizationui-widget-multiview");
multiView.setAttribute("viewCacheId", "appMenu-viewCache");
@@ -431,7 +431,6 @@ const PanelUI = {
tempPanel.appendChild(multiView);
viewNode.classList.add("cui-widget-panelview");
let viewShown = false;
let panelRemover = () => {
viewNode.classList.remove("cui-widget-panelview");
if (viewShown) {
@@ -446,6 +445,18 @@ const PanelUI = {
tempPanel.remove();
};
// Wait until all the tasks needed to show a view are done.
await multiView.currentShowPromise;
if (!viewShown) {
viewNode.removeEventListener("ViewShown", listener);
panelRemover();
return;
}
CustomizableUI.addPanelCloseListeners(tempPanel);
tempPanel.addEventListener("popuphidden", panelRemover);
if (aAnchor.parentNode.id == "PersonalToolbar") {
tempPanel.classList.add("bookmarks-toolbar");
}
@@ -456,21 +467,10 @@ const PanelUI = {
anchor.setAttribute("consumeanchor", aAnchor.id);
}
try {
viewShown = await PanelMultiView.openPopup(tempPanel, anchor, {
position: "bottomcenter topright",
triggerEvent: domEvent,
});
} catch (ex) {
Cu.reportError(ex);
}
if (viewShown) {
CustomizableUI.addPanelCloseListeners(tempPanel);
tempPanel.addEventListener("popuphidden", panelRemover);
} else {
panelRemover();
}
tempPanel.openPopup(anchor, {
position: "bottomcenter topright",
triggerEvent: domEvent,
});
}
},
@@ -620,7 +620,9 @@ const PanelUI = {
this.navbar.setAttribute("nonemptyoverflow", "true");
this.overflowPanel.setAttribute("hasfixeditems", "true");
} else if (!hasKids && this.navbar.hasAttribute("nonemptyoverflow")) {
PanelMultiView.hidePopup(this.overflowPanel);
if (this.overflowPanel.state != "closed") {
this.overflowPanel.hidePopup();
}
this.overflowPanel.removeAttribute("hasfixeditems");
this.navbar.removeAttribute("nonemptyoverflow");
}