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 @@
({})
-
+