зеркало из https://github.com/mozilla/gecko-dev.git
113 строки
3.3 KiB
JavaScript
113 строки
3.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
"use strict";
|
|
|
|
declTest("crash actor", {
|
|
allFrames: true,
|
|
|
|
async test(browser) {
|
|
if (!("@mozilla.org/toolkit/crash-reporter;1" in Cc)) {
|
|
ok(true, "Cannot test crash annotations without a crash reporter");
|
|
return;
|
|
}
|
|
|
|
{
|
|
info("Creating a new tab.");
|
|
let newTab = await BrowserTestUtils.openNewForegroundTab(gBrowser, URL);
|
|
let newTabBrowser = newTab.linkedBrowser;
|
|
|
|
let parent = newTabBrowser.browsingContext.currentWindowGlobal.getActor(
|
|
"TestWindow"
|
|
);
|
|
ok(parent, "JSWindowActorParent should have value.");
|
|
|
|
await SpecialPowers.spawn(newTabBrowser, [], async function() {
|
|
let child = content.windowGlobalChild;
|
|
ok(child, "WindowGlobalChild should have value.");
|
|
is(
|
|
child.isInProcess,
|
|
false,
|
|
"Actor should be loaded in the content process."
|
|
);
|
|
// Make sure that the actor is loaded.
|
|
let actorChild = child.getActor("TestWindow");
|
|
is(
|
|
actorChild.show(),
|
|
"TestWindowChild",
|
|
"actor show should have value."
|
|
);
|
|
is(
|
|
actorChild.manager,
|
|
child,
|
|
"manager should match WindowGlobalChild."
|
|
);
|
|
});
|
|
|
|
info(
|
|
"Crashing from withing an actor. We should have an actor name and a message name."
|
|
);
|
|
let report = await BrowserTestUtils.crashFrame(
|
|
newTabBrowser,
|
|
/* shouldShowTabCrashPage = */ false,
|
|
/* shouldClearMinidumps = */ true,
|
|
/* browsingContext = */ null,
|
|
{ asyncCrash: false }
|
|
);
|
|
|
|
is(report.JSActorName, "BrowserTestUtils");
|
|
is(report.JSActorMessage, "BrowserTestUtils:CrashFrame");
|
|
|
|
BrowserTestUtils.removeTab(newTab);
|
|
}
|
|
|
|
{
|
|
info("Creating a new tab for async crash");
|
|
let newTab = await BrowserTestUtils.openNewForegroundTab(gBrowser, URL);
|
|
let newTabBrowser = newTab.linkedBrowser;
|
|
|
|
let parent = newTabBrowser.browsingContext.currentWindowGlobal.getActor(
|
|
"TestWindow"
|
|
);
|
|
ok(parent, "JSWindowActorParent should have value.");
|
|
|
|
await SpecialPowers.spawn(newTabBrowser, [], async function() {
|
|
let child = content.windowGlobalChild;
|
|
ok(child, "WindowGlobalChild should have value.");
|
|
is(
|
|
child.isInProcess,
|
|
false,
|
|
"Actor should be loaded in the content process."
|
|
);
|
|
// Make sure that the actor is loaded.
|
|
let actorChild = child.getActor("TestWindow");
|
|
is(
|
|
actorChild.show(),
|
|
"TestWindowChild",
|
|
"actor show should have value."
|
|
);
|
|
is(
|
|
actorChild.manager,
|
|
child,
|
|
"manager should match WindowGlobalChild."
|
|
);
|
|
});
|
|
|
|
info(
|
|
"Crashing from without an actor. We should have neither an actor name nor a message name."
|
|
);
|
|
let report = await BrowserTestUtils.crashFrame(
|
|
newTabBrowser,
|
|
/* shouldShowTabCrashPage = */ false,
|
|
/* shouldClearMinidumps = */ true,
|
|
/* browsingContext = */ null,
|
|
{ asyncCrash: true }
|
|
);
|
|
|
|
ok(!report.JSActorName);
|
|
ok(!report.JSActorMessage);
|
|
|
|
BrowserTestUtils.removeTab(newTab);
|
|
}
|
|
},
|
|
});
|