Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit e063f2d

Browse files
committed
🐛 Fix browser de-init in the sidebar
1 parent bbdb0ee commit e063f2d

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

src/browser/base/content/browser-sidebar-js.patch

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js
2-
index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f587815197 100644
2+
index c5ac301416d2d820ba95e21c0ce1fe305e63b554..fa3cd3184cce8759c834fa0fadc645afde674dd8 100644
33
--- a/browser/base/content/browser-sidebar.js
44
+++ b/browser/base/content/browser-sidebar.js
55
@@ -11,6 +11,10 @@ var SidebarUI = {
@@ -75,7 +75,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
7575
]));
7676
},
7777

78-
@@ -61,7 +97,10 @@ var SidebarUI = {
78+
@@ -61,12 +97,16 @@ var SidebarUI = {
7979
return (this._browser = document.getElementById("sidebar"));
8080
},
8181
POSITION_START_PREF: "sidebar.position_start",
@@ -86,7 +86,13 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
8686

8787
// lastOpenedId is set in show() but unlike currentID it's not cleared out on hide
8888
// and isn't persisted across windows
89-
@@ -76,8 +115,13 @@ var SidebarUI = {
89+
lastOpenedId: null,
90+
91+
+ /** @type {HTMLElement?} */
92+
_box: null,
93+
// The constructor of this label accesses the browser element due to the
94+
// control="sidebar" attribute, so avoid getting this label during startup.
95+
@@ -76,8 +116,13 @@ var SidebarUI = {
9096
}
9197
return (this.__title = document.getElementById("sidebar-title"));
9298
},
@@ -100,7 +106,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
100106
_reversePositionButton: null,
101107
_switcherPanel: null,
102108
_switcherTarget: null,
103-
@@ -110,15 +154,59 @@ var SidebarUI = {
109+
@@ -110,15 +155,59 @@ var SidebarUI = {
104110
this._switcherTarget = document.getElementById("sidebar-switcher-target");
105111
this._switcherArrow = document.getElementById("sidebar-switcher-arrow");
106112

@@ -160,7 +166,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
160166
},
161167

162168
uninit() {
163-
@@ -127,7 +215,10 @@ var SidebarUI = {
169+
@@ -127,7 +216,10 @@ var SidebarUI = {
164170
let enumerator = Services.wm.getEnumerator("navigator:browser");
165171
if (!enumerator.hasMoreElements()) {
166172
let xulStore = Services.xulStore;
@@ -172,7 +178,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
172178

173179
if (this._box.hasAttribute("positionend")) {
174180
xulStore.persist(this._box, "positionend");
175-
@@ -148,6 +239,12 @@ var SidebarUI = {
181+
@@ -148,6 +240,12 @@ var SidebarUI = {
176182
xulStore.persist(this._title, "value");
177183
}
178184

@@ -185,7 +191,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
185191
Services.obs.removeObserver(this, "intl:app-locales-changed");
186192

187193
if (this._observer) {
188-
@@ -159,17 +256,47 @@ var SidebarUI = {
194+
@@ -159,17 +257,62 @@ var SidebarUI = {
189195
/**
190196
* The handler for Services.obs.addObserver.
191197
**/
@@ -230,14 +236,29 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
230236
+ }
231237
+ }
232238
+
239+
+ // The sidebar depends on a browse existing. If this has been
240+
+ // destroyed, we need to re-init it. Although, first we need to
241+
+ // remove any possible cached value
242+
+ this._browser = null
243+
+ if (!this.browser) {
244+
+ /** @type {HTMLElement} */
245+
+ const browser = document.createXULElement('browser')
246+
+ browser.setAttribute('id', 'sidebar')
247+
+ browser.setAttribute('autoscroll', 'false')
248+
+ browser.setAttribute('disablehistory', 'true')
249+
+ browser.setAttribute('disablefullscreen', 'true')
250+
+ browser.setAttribute('tooltip', 'aHTMLTooltip')
251+
+ this._box.appendChild(browser)
252+
+ }
253+
+
233254
+ this.init();
234255
+ break;
235256
+ }
236257
+ break;
237258
}
238259
}
239260
},
240-
@@ -485,6 +612,9 @@ var SidebarUI = {
261+
@@ -485,6 +628,9 @@ var SidebarUI = {
241262
},
242263

243264
_loadSidebarExtension(commandID) {
@@ -247,15 +268,15 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
247268
let sidebar = this.sidebars.get(commandID);
248269
let { extensionId } = sidebar;
249270
if (extensionId) {
250-
@@ -523,6 +653,7 @@ var SidebarUI = {
271+
@@ -523,6 +669,7 @@ var SidebarUI = {
251272
}
252273

253274
this._fireFocusedEvent();
254275
+ this.loadedSidebars.push(commandID);
255276
return true;
256277
});
257278
},
258-
@@ -546,10 +677,28 @@ var SidebarUI = {
279+
@@ -546,10 +693,28 @@ var SidebarUI = {
259280
}
260281
return this._show(commandID).then(() => {
261282
this._loadSidebarExtension(commandID);
@@ -284,7 +305,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
284305
/**
285306
* Implementation for show. Also used internally for sidebars that are shown
286307
* when a window is opened and we don't want to ping telemetry.
287-
@@ -559,6 +708,29 @@ var SidebarUI = {
308+
@@ -559,6 +724,29 @@ var SidebarUI = {
288309
*/
289310
_show(commandID) {
290311
return new Promise(resolve => {
@@ -314,7 +335,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
314335
this.selectMenuItem(commandID);
315336

316337
this._box.hidden = this._splitter.hidden = false;
317-
@@ -570,13 +742,21 @@ var SidebarUI = {
338+
@@ -570,13 +758,21 @@ var SidebarUI = {
318339
this._box.setAttribute("sidebarcommand", commandID);
319340
this.lastOpenedId = commandID;
320341

@@ -338,7 +359,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
338359
this.browser.addEventListener(
339360
"load",
340361
event => {
341-
@@ -615,22 +795,46 @@ var SidebarUI = {
362+
@@ -615,22 +811,46 @@ var SidebarUI = {
342363

343364
this.selectMenuItem("");
344365

@@ -392,7 +413,7 @@ index c5ac301416d2d820ba95e21c0ce1fe305e63b554..4d824259fd611e5531e35bb3d3da85f5
392413
},
393414

394415
/**
395-
@@ -638,25 +842,121 @@ var SidebarUI = {
416+
@@ -638,25 +858,121 @@ var SidebarUI = {
396417
* none if the argument is an empty string.
397418
*/
398419
selectMenuItem(commandID) {

0 commit comments

Comments
 (0)