42 let ss =
Cc[
"@mozilla.org/browser/sessionstore;1"].getService(
Ci.nsISessionStore);
45 const REMEMBER = Date.now(), FORGET = Math.random();
47 windows: [ {
tabs: [{ entries: [{
url:
"http://example.com/" }] }], selected: 1 } ],
52 { entries: [{
url:
"http://example.com/", title:
"title" }] },
53 { entries: [{
url:
"http://mozilla.org/", title:
"title" }] }
62 { entries: [{
url:
"http://mozilla.org/", title:
"title" }] },
63 { entries: [{
url:
"http://example.com/", title:
"title" }] },
64 { entries: [{
url:
"http://mozilla.org/", title:
"title" }] },
73 { entries: [{
url:
"http://example.com/", title:
"title" }] }
81 {
url:
"http://mozilla.org/", title:
"title" },
82 {
url:
"http://mozilla.org/again", title:
"title" }
91 {
url:
"http://example.com", title:
"title" }
100 let remember_count = 1;
102 function countByTitle(aClosedWindowList, aTitle)
103 aClosedWindowList.filter(
function(
aData)
aData.title == aTitle).length;
105 function testForError(aFunction) {
111 return ex.name ==
"NS_ERROR_ILLEGAL_VALUE";
116 let newWin = openDialog(location,
"_blank",
"chrome,all,dialog=no");
117 newWin.addEventListener(
"load",
function(aEvent) {
118 gPrefService.setIntPref(
"browser.sessionstore.max_windows_undo",
119 test_state._closedWindows.length);
120 ss.setWindowState(newWin,
JSON.stringify(test_state),
true);
122 let closedWindows =
JSON.parse(ss.getClosedWindowData());
123 is(closedWindows.length, test_state._closedWindows.length,
124 "Closed window list has the expected length");
125 is(countByTitle(closedWindows, FORGET),
126 test_state._closedWindows.length - remember_count,
127 "The correct amount of windows are to be forgotten");
128 is(countByTitle(closedWindows, REMEMBER), remember_count,
129 "Everything is set up.");
132 ok(testForError(
function() ss.forgetClosedWindow(-1)),
133 "Invalid window for forgetClosedWindow throws");
134 ok(testForError(
function() ss.forgetClosedWindow(test_state._closedWindows.length + 1)),
135 "Invalid window for forgetClosedWindow throws");
138 ss.forgetClosedWindow(2);
139 ss.forgetClosedWindow(
null);
141 closedWindows =
JSON.parse(ss.getClosedWindowData());
142 is(closedWindows.length, remember_count,
143 "The correct amount of windows were removed");
144 is(countByTitle(closedWindows, FORGET), 0,
145 "All windows specifically forgotten were indeed removed");
146 is(countByTitle(closedWindows, REMEMBER), remember_count,
147 "... and windows not specifically forgetten weren't.");
151 if (
gPrefService.prefHasUserValue(
"browser.sessionstore.max_windows_undo"))
152 gPrefService.clearUserPref(
"browser.sessionstore.max_windows_undo");
_updateTextAndScrollDataForFrame aData