diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index dddc2164f78..17137d86aa5 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -1498,7 +1498,7 @@ aBrowser.setAttribute("remote", aShouldBeRemote ? "true" : "false"); // Tearing down the browser gives a new permanentKey but we want to // keep the old one. Re-set it explicitly after unbinding from DOM. - aBrowser.permanentKey = permanentKey; + aBrowser._permanentKey = permanentKey; parent.appendChild(aBrowser); // Restore the progress listener. diff --git a/browser/base/content/test/general/browser.ini b/browser/base/content/test/general/browser.ini index 209c444bb22..f34c8b21ce7 100644 --- a/browser/base/content/test/general/browser.ini +++ b/browser/base/content/test/general/browser.ini @@ -412,6 +412,7 @@ skip-if = buildapp == 'mulet' || e10s [browser_tabMatchesInAwesomebar.js] [browser_tabMatchesInAwesomebar_perwindowpb.js] skip-if = e10s || os == 'linux' # Bug 1093373, bug 1104755 +[browser_tab_detach_restore.js] [browser_tab_drag_drop_perwindow.js] skip-if = buildapp == 'mulet' [browser_tab_dragdrop.js] diff --git a/browser/base/content/test/general/browser_tab_detach_restore.js b/browser/base/content/test/general/browser_tab_detach_restore.js new file mode 100644 index 00000000000..804be0869d7 --- /dev/null +++ b/browser/base/content/test/general/browser_tab_detach_restore.js @@ -0,0 +1,31 @@ +"use strict"; + +add_task(function*() { + let uri = "http://example.com/browser/browser/base/content/test/general/dummy_page.html"; + + // Clear out the closed windows set to start + while (SessionStore.getClosedWindowCount() > 0) + SessionStore.forgetClosedWindow(0); + + let tab = gBrowser.addTab(); + tab.linkedBrowser.loadURI(uri); + yield BrowserTestUtils.browserLoaded(tab.linkedBrowser); + + let key = tab.linkedBrowser.permanentKey; + let win = gBrowser.replaceTabWithWindow(tab); + yield new Promise(resolve => whenDelayedStartupFinished(win, resolve)); + + is(win.gBrowser.selectedBrowser.permanentKey, key, "Should have properly copied the permanentKey"); + yield promiseWindowClosed(win); + + is(SessionStore.getClosedWindowCount(), 1, "Should have restore data for the closed window"); + + win = SessionStore.undoCloseWindow(0); + yield BrowserTestUtils.waitForEvent(win, "load"); + yield BrowserTestUtils.waitForEvent(win.gBrowser.tabs[0], "SSTabRestored"); + + is(win.gBrowser.tabs.length, 1, "Should have restored one tab"); + is(win.gBrowser.selectedBrowser.currentURI.spec, uri, "Should have restored the right page"); + + yield promiseWindowClosed(win); +}); diff --git a/toolkit/content/widgets/browser.xml b/toolkit/content/widgets/browser.xml index e42c917683e..e2d968db332 100644 --- a/toolkit/content/widgets/browser.xml +++ b/toolkit/content/widgets/browser.xml @@ -388,9 +388,8 @@ ({}) - +