Merge backout of 11d2a7ed963a (bug 595020) on suspicion of causing bug 655197.

This commit is contained in:
Zack Weinberg 2011-05-06 08:45:30 -07:00
commit 66511e780a
5 changed files with 6 additions and 99 deletions

View File

@ -44,9 +44,7 @@ let TabView = {
_browserKeyHandlerInitialized: false,
_isFrameLoading: false,
_initFrameCallbacks: [],
_lastSessionGroupName: null,
VISIBILITY_IDENTIFIER: "tabview-visibility",
LAST_SESSION_GROUP_NAME_IDENTIFIER: "tabview-last-session-group-name",
// ----------
get windowTitle() {
@ -100,10 +98,6 @@ let TabView = {
};
gBrowser.tabContainer.addEventListener(
"TabShow", this._tabShowEventListener, true);
// grab the last used group title
this._lastSessionGroupName = sessionstore.getWindowValue(window,
this.LAST_SESSION_GROUP_NAME_IDENTIFIER);
}
}
},
@ -222,28 +216,18 @@ let TabView = {
},
getActiveGroupName: function TabView_getActiveGroupName() {
if (!this._window)
return this._lastSessionGroupName;
// We get the active group this way, instead of querying
// GroupItems.getActiveGroupItem() because the tabSelect event
// will not have happened by the time the browser tries to
// update the title.
let groupItem = null;
let activeTab = window.gBrowser.selectedTab;
let activeTabItem = activeTab._tabViewTabItem;
if (activeTab.pinned) {
// It's an app tab, so it won't have a .tabItem. However, its .parent
// will already be set as the active group.
groupItem = this._window.GroupItems.getActiveGroupItem();
} else if (activeTabItem) {
groupItem = activeTabItem.parent;
if (activeTab._tabViewTabItem && activeTab._tabViewTabItem.parent){
let groupName = activeTab._tabViewTabItem.parent.getTitle();
if (groupName)
return groupName;
}
// groupItem may still be null, if the active tab is an orphan.
return groupItem ? groupItem.getTitle() : "";
},
return null;
},
// ----------
updateContextMenu: function(tab, popup) {

View File

@ -381,15 +381,6 @@ let Storage = {
win, win.TabView.VISIBILITY_IDENTIFIER, data);
},
// ----------
// Function: saveActiveGroupName
// Saves the active group's name for the given window.
saveActiveGroupName: function Storage_saveActiveGroupName(win) {
let groupName = win.TabView.getActiveGroupName();
this._sessionStore.setWindowValue(
win, win.TabView.LAST_SESSION_GROUP_NAME_IDENTIFIER, groupName);
},
// ----------
// Function: saveData
// Generic routine for saving data to a window.

View File

@ -258,7 +258,6 @@ let UI = {
function domWinClosedObserver(subject, topic, data) {
if (topic == "domwindowclosed" && subject == gWindow) {
self.isDOMWindowClosing = true;
Storage.saveActiveGroupName(gWindow);
if (self.isTabViewVisible())
GroupItems.removeHiddenGroups();
TabItems.saveAll(true);

View File

@ -59,7 +59,6 @@ _BROWSER_FILES = \
browser_tabview_bug590606.js \
browser_tabview_bug591706.js \
browser_tabview_bug594958.js \
browser_tabview_bug595020.js \
browser_tabview_bug595191.js \
browser_tabview_bug595436.js \
browser_tabview_bug595518.js \

View File

@ -1,66 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
let stateStartup = {windows:[
{tabs:[{entries:[{url:"about:home"}]}], extData:{"tabview-last-session-group-name":"title"}}
]};
function test() {
let assertWindowTitle = function (win, title) {
let browser = win.gBrowser.tabs[0].linkedBrowser;
let winTitle = win.gBrowser.getWindowTitleForBrowser(browser);
is(winTitle.indexOf(title), 0, "title starts with '" + title + "'");
};
let testGroupNameChange = function (win) {
showTabView(function () {
let cw = win.TabView.getContentWindow();
let groupItem = cw.GroupItems.groupItems[0];
groupItem.setTitle("new-title");
hideTabView(function () {
assertWindowTitle(win, "new-title");
waitForFocus(finish);
}, win);
}, win);
};
waitForExplicitFinish();
newWindowWithState(stateStartup, function (win) {
registerCleanupFunction(function () win.close());
assertWindowTitle(win, "title");
testGroupNameChange(win);
});
}
function newWindowWithState(state, callback) {
let opts = "chrome,all,dialog=no,height=800,width=800";
let win = window.openDialog(getBrowserURL(), "_blank", opts);
whenWindowLoaded(win, function () {
ss.setWindowState(win, JSON.stringify(state), true);
});
whenWindowStateReady(win, function () {
win.close();
win = ss.undoCloseWindow(0);
whenWindowLoaded(win, function () callback(win));
});
}
function whenWindowLoaded(win, callback) {
win.addEventListener("load", function onLoad() {
win.removeEventListener("load", onLoad, false);
executeSoon(callback);
}, false);
}
function whenWindowStateReady(win, callback) {
win.addEventListener("SSWindowStateReady", function onReady() {
win.removeEventListener("SSWindowStateReady", onReady, false);
executeSoon(callback);
}, false);
}