mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-29 15:52:07 +00:00
Backout Bug 1270115 - Rewrite browser_ConsoleStorageAPITests.js to run in e10s for bustage
This commit is contained in:
parent
38e696d22b
commit
5d45419a2c
@ -20,6 +20,7 @@ skip-if = buildapp == 'mulet'
|
||||
skip-if = e10s
|
||||
[browser_ConsoleAPI_originAttributes.js]
|
||||
[browser_ConsoleStorageAPITests.js]
|
||||
skip-if = e10s
|
||||
[browser_ConsoleStoragePBTest_perwindowpb.js]
|
||||
[browser_autofocus_background.js]
|
||||
skip-if= buildapp == 'mulet'
|
||||
|
@ -4,13 +4,71 @@
|
||||
const TEST_URI = "http://example.com/browser/dom/tests/browser/test-console-api.html";
|
||||
const TEST_URI_NAV = "http://example.com/browser/dom/tests/browser/";
|
||||
|
||||
var ConsoleAPIStorage = Cc["@mozilla.org/consoleAPI-storage;1"]
|
||||
.getService(Ci.nsIConsoleAPIStorage);
|
||||
|
||||
var apiCallCount;
|
||||
|
||||
var ConsoleObserver = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
|
||||
|
||||
init: function CO_init()
|
||||
{
|
||||
Services.obs.addObserver(this, "console-storage-cache-event", false);
|
||||
apiCallCount = 0;
|
||||
},
|
||||
|
||||
observe: function CO_observe(aSubject, aTopic, aData)
|
||||
{
|
||||
if (aTopic == "console-storage-cache-event") {
|
||||
apiCallCount ++;
|
||||
if (apiCallCount == 4) {
|
||||
Services.obs.removeObserver(this, "console-storage-cache-event");
|
||||
|
||||
try {
|
||||
let tab = gBrowser.selectedTab;
|
||||
let browser = gBrowser.selectedBrowser;
|
||||
let win = browser.contentWindow;
|
||||
let windowID = getWindowId(win);
|
||||
let messages = ConsoleAPIStorage.getEvents(windowID);
|
||||
ok(messages.length >= 4, "Some messages found in the storage service");
|
||||
|
||||
ConsoleAPIStorage.clearEvents();
|
||||
messages = ConsoleAPIStorage.getEvents(windowID);
|
||||
is(messages.length, 0, "Cleared Storage");
|
||||
|
||||
// make sure a closed window's events are in fact removed from the
|
||||
// storage cache
|
||||
win.console.log("adding a new event");
|
||||
// Close the window.
|
||||
gBrowser.removeTab(tab, {animate: false});
|
||||
// Ensure actual window destruction is not delayed (too long).
|
||||
SpecialPowers.DOMWindowUtils.garbageCollect();
|
||||
// Ensure "inner-window-destroyed" event is processed,
|
||||
// so the storage cache is cleared.
|
||||
executeSoon(function () {
|
||||
// use the old windowID again to see if we have any stray cached messages
|
||||
messages = ConsoleAPIStorage.getEvents(windowID);
|
||||
is(messages.length, 0, "tab close is clearing the cache");
|
||||
finish();
|
||||
});
|
||||
} catch (ex) {
|
||||
dump(ex + "\n\n\n");
|
||||
dump(ex.stack + "\n\n\n");
|
||||
ok(false, "We got an unexpected exception");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function tearDown()
|
||||
{
|
||||
while (gBrowser.tabs.length > 1)
|
||||
gBrowser.removeCurrentTab();
|
||||
}
|
||||
|
||||
add_task(function*()
|
||||
function test()
|
||||
{
|
||||
// Don't cache removed tabs, so "clear console cache on tab close" triggers.
|
||||
Services.prefs.setIntPref("browser.tabs.max_tabs_undo", 0);
|
||||
@ -20,78 +78,26 @@ add_task(function*()
|
||||
|
||||
registerCleanupFunction(tearDown);
|
||||
|
||||
// Open a keepalive tab in the background to make sure we don't accidentally
|
||||
// kill the content process
|
||||
var keepaliveTab = gBrowser.addTab("about:blank");
|
||||
ConsoleObserver.init();
|
||||
|
||||
waitForExplicitFinish();
|
||||
|
||||
// Open the main tab to run the test in
|
||||
var tab = gBrowser.addTab(TEST_URI);
|
||||
gBrowser.selectedTab = tab;
|
||||
var browser = gBrowser.selectedBrowser;
|
||||
|
||||
let observerPromise = ContentTask.spawn(browser, null, function(opt) {
|
||||
let ConsoleAPIStorage = Cc["@mozilla.org/consoleAPI-storage;1"]
|
||||
.getService(Ci.nsIConsoleAPIStorage);
|
||||
|
||||
return new Promise(resolve => {
|
||||
let apiCallCount = 0;
|
||||
let ConsoleObserver = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
|
||||
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
if (aTopic == "console-storage-cache-event") {
|
||||
apiCallCount++;
|
||||
if (apiCallCount == 4) {
|
||||
let windowId = content.window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID;
|
||||
|
||||
Services.obs.removeObserver(this, "console-storage-cache-event");
|
||||
Assert.ok(ConsoleAPIStorage.getEvents(windowId).length >= 4, "Some messages found in the storage service");
|
||||
ConsoleAPIStorage.clearEvents();
|
||||
Assert.equal(ConsoleAPIStorage.getEvents(windowId).length, 0, "Cleared Storage");
|
||||
|
||||
resolve(windowId);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Services.obs.addObserver(ConsoleObserver, "console-storage-cache-event", false);
|
||||
});
|
||||
});
|
||||
|
||||
let win;
|
||||
browser.addEventListener("DOMContentLoaded", function onLoad(event) {
|
||||
browser.removeEventListener("DOMContentLoaded", onLoad, false);
|
||||
executeSoon(function test_executeSoon() {
|
||||
win = browser.contentWindow;
|
||||
let win = browser.contentWindow;
|
||||
win.console.log("this", "is", "a", "log message");
|
||||
win.console.info("this", "is", "a", "info message");
|
||||
win.console.warn("this", "is", "a", "warn message");
|
||||
win.console.error("this", "is", "a", "error message");
|
||||
});
|
||||
}, false);
|
||||
}
|
||||
|
||||
let windowId = yield observerPromise;
|
||||
// make sure a closed window's events are in fact removed from
|
||||
// the storage cache
|
||||
win.console.log("adding a new event");
|
||||
|
||||
// Close the window.
|
||||
gBrowser.removeTab(tab, {animate: false});
|
||||
// Ensure actual window destruction is not delayed (too long).
|
||||
SpecialPowers.DOMWindowUtils.garbageCollect();
|
||||
|
||||
// Ensure the "inner-window-destroyed" event is processed,
|
||||
// so the storage cache is cleared
|
||||
yield new Promise(resolve => executeSoon(resolve));
|
||||
|
||||
// Spawn the check in the keepaliveTab, so that we can read the ConsoleAPIStorage correctly
|
||||
gBrowser.selectedTab = keepaliveTab;
|
||||
browser = gBrowser.selectedBrowser;
|
||||
yield ContentTask.spawn(browser, windowId, function(windowId) {
|
||||
var ConsoleAPIStorage = Cc["@mozilla.org/consoleAPI-storage;1"]
|
||||
.getService(Ci.nsIConsoleAPIStorage);
|
||||
Assert.equal(ConsoleAPIStorage.getEvents(windowId).length, 0, "tab close is clearing the cache");
|
||||
});
|
||||
});
|
||||
function getWindowId(aWindow)
|
||||
{
|
||||
return SpecialPowers.getDOMWindowUtils(aWindow).currentInnerWindowID;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user