Bug 848935 - Add debug spew for browser_aboutHome.js intermittent failure.

This commit is contained in:
Marco Bonardo 2013-03-26 12:07:23 +01:00
parent ffc87fde9b
commit 5930035112

View File

@ -31,7 +31,8 @@ let gTests = [
},
run: function (aSnippetsMap)
{
isnot(aSnippetsMap.get("snippets-last-update"), null);
isnot(aSnippetsMap.get("snippets-last-update"), null,
"snippets-last-update should have a value");
}
},
@ -116,7 +117,7 @@ let gTests = [
cm.getCategoryEntry("healthreport-js-provider", "SearchesProvider");
} catch (ex) {
// Health Report disabled, or no SearchesProvider.
return;
return Promise.resolve();
}
let deferred = Promise.defer();
@ -220,9 +221,9 @@ function test()
let snippetsMap = yield promiseSetupSnippetsMap(tab, test.setup);
// Ensure browser has set attributes already, or wait for them.
yield promise;
info("Running test");
yield test.run(snippetsMap);
info("Cleanup");
gBrowser.removeCurrentTab();
}
@ -243,8 +244,10 @@ function promiseNewTabLoadEvent(aUrl, aEventType="load")
{
let deferred = Promise.defer();
let tab = gBrowser.selectedTab = gBrowser.addTab(aUrl);
info("Wait tab event: " + aEventType);
tab.linkedBrowser.addEventListener(aEventType, function load(event) {
tab.linkedBrowser.removeEventListener(aEventType, load, true);
info("Tab event received: " + aEventType);
deferred.resolve(tab);
}, true);
return deferred.promise;
@ -264,7 +267,12 @@ function promiseSetupSnippetsMap(aTab, aSetupFn)
{
let deferred = Promise.defer();
let cw = aTab.linkedBrowser.contentWindow.wrappedJSObject;
info("Waiting for snippets map");
cw.ensureSnippetsMapThen(function (aSnippetsMap) {
info("Got snippets map: " +
"{ last-update: " + aSnippetsMap.get("snippets-last-update") +
", cached-version: " + aSnippetsMap.get("snippets-cached-version") +
" }");
// Don't try to update.
aSnippetsMap.set("snippets-last-update", Date.now());
aSnippetsMap.set("snippets-cached-version", AboutHomeUtils.snippetsVersion);
@ -293,6 +301,8 @@ function promiseBrowserAttributes(aTab)
//docElt.setAttribute("snippetsURL", "nonexistent://test");
let observer = new MutationObserver(function (mutations) {
for (let mutation of mutations) {
info("Got attribute mutation: " + mutation.attributeName +
" from " + mutation.oldValue);
if (mutation.attributeName == "snippetsURL" &&
docElt.getAttribute("snippetsURL") != "nonexistent://test") {
docElt.setAttribute("snippetsURL", "nonexistent://test");
@ -300,6 +310,7 @@ function promiseBrowserAttributes(aTab)
// Now we just have to wait for the last attribute.
if (mutation.attributeName == "searchEngineURL") {
info("Remove attributes observer");
observer.disconnect();
// Must be sure to continue after the page mutation observer.
executeSoon(function() deferred.resolve());
@ -307,6 +318,7 @@ function promiseBrowserAttributes(aTab)
}
}
});
info("Add attributes observer");
observer.observe(docElt, { attributes: true });
return deferred.promise;