mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-27 09:37:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,152 @@
|
|||
function cleanup_and_finish() {
|
||||
try {
|
||||
cleanup_fake_appdir();
|
||||
} catch (ex) {}
|
||||
Services.prefs.clearUserPref("breakpad.reportURL");
|
||||
BrowserTestUtils.removeTab(gBrowser.selectedTab).then(finish);
|
||||
}
|
||||
|
||||
/*
|
||||
* check_crash_list
|
||||
*
|
||||
* Check that the list of crashes displayed by about:crashes matches
|
||||
* the list of crashes that we placed in the pending+submitted directories.
|
||||
*
|
||||
* NB: This function is run in the child process via ContentTask.spawn.
|
||||
*/
|
||||
function check_crash_list(crashes) {
|
||||
let doc = content.document;
|
||||
let crashlinks = doc.getElementsByClassName("crashReport");
|
||||
Assert.equal(crashlinks.length, crashes.length,
|
||||
"about:crashes lists correct number of crash reports");
|
||||
// no point in checking this if the lists aren't the same length
|
||||
if (crashlinks.length == crashes.length) {
|
||||
for (let i=0; i<crashes.length; i++) {
|
||||
Assert.equal(crashlinks[i].id, crashes[i].id, i + ": crash ID is correct");
|
||||
if (crashes[i].pending) {
|
||||
// we set the breakpad.reportURL pref in test()
|
||||
Assert.equal(crashlinks[i].getAttribute("href"),
|
||||
"http://example.com/browser/toolkit/crashreporter/about/throttling",
|
||||
"pending URL links to the correct static page");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* check_submit_pending
|
||||
*
|
||||
* Click on a pending crash in about:crashes, wait for it to be submitted (which
|
||||
* should redirect us to the crash report page). Verify that the data provided
|
||||
* by our test crash report server matches the data we submitted.
|
||||
* Additionally, click "back" and verify that the link now points to our new
|
||||
*/
|
||||
function check_submit_pending(tab, crashes) {
|
||||
let browser = gBrowser.getBrowserForTab(tab);
|
||||
let SubmittedCrash = null;
|
||||
let CrashID = null;
|
||||
let CrashURL = null;
|
||||
function csp_onload() {
|
||||
// loaded the crash report page
|
||||
ok(true, 'got submission onload');
|
||||
|
||||
ContentTask.spawn(browser, null, function() {
|
||||
// grab the Crash ID here to verify later
|
||||
let CrashID = content.location.search.split("=")[1];
|
||||
let CrashURL = content.location.toString();
|
||||
|
||||
// check the JSON content vs. what we submitted
|
||||
let result = JSON.parse(content.document.documentElement.textContent);
|
||||
Assert.equal(result.upload_file_minidump, "MDMP", "minidump file sent properly");
|
||||
Assert.equal(result.memory_report, "Let's pretend this is a memory report",
|
||||
"memory report sent properly");
|
||||
Assert.equal(+result.Throttleable, 0, "correctly sent as non-throttleable");
|
||||
// we checked these, they're set by the submission process,
|
||||
// so they won't be in the "extra" data.
|
||||
delete result.upload_file_minidump;
|
||||
delete result.memory_report;
|
||||
delete result.Throttleable;
|
||||
|
||||
return { id: CrashID, url: CrashURL, result };
|
||||
}).then(({ id, url, result }) => {
|
||||
// Likewise, this is discarded before it gets to the server
|
||||
delete SubmittedCrash.extra.ServerURL;
|
||||
|
||||
CrashID = id;
|
||||
CrashURL = url;
|
||||
for (let x in result) {
|
||||
if (x in SubmittedCrash.extra)
|
||||
is(result[x], SubmittedCrash.extra[x],
|
||||
"submitted value for " + x + " matches expected");
|
||||
else
|
||||
ok(false, "property " + x + " missing from submitted data!");
|
||||
}
|
||||
for (let y in SubmittedCrash.extra) {
|
||||
if (!(y in result))
|
||||
ok(false, "property " + y + " missing from result data!");
|
||||
}
|
||||
|
||||
// NB: Despite appearances, this doesn't use a CPOW.
|
||||
BrowserTestUtils.waitForEvent(browser, "pageshow", true).then(csp_pageshow);
|
||||
|
||||
// now navigate back
|
||||
browser.goBack();
|
||||
});
|
||||
}
|
||||
function csp_fail() {
|
||||
browser.removeEventListener("CrashSubmitFailed", csp_fail, true);
|
||||
ok(false, "failed to submit crash report!");
|
||||
cleanup_and_finish();
|
||||
}
|
||||
browser.addEventListener("CrashSubmitFailed", csp_fail, true);
|
||||
BrowserTestUtils.browserLoaded(browser, false, (url) => url !== "about:crashes").then(csp_onload);
|
||||
function csp_pageshow() {
|
||||
ContentTask.spawn(browser, { CrashID, CrashURL }, function({ CrashID, CrashURL }) {
|
||||
Assert.equal(content.location.href, "about:crashes", "navigated back successfully");
|
||||
let link = content.document.getElementById(CrashID);
|
||||
Assert.notEqual(link, null, "crash report link changed correctly");
|
||||
if (link)
|
||||
Assert.equal(link.href, CrashURL, "crash report link points to correct href");
|
||||
}).then(cleanup_and_finish);
|
||||
}
|
||||
|
||||
// try submitting the pending report
|
||||
for (let crash of crashes) {
|
||||
if (crash.pending) {
|
||||
SubmittedCrash = crash;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ContentTask.spawn(browser, SubmittedCrash.id, function(id) {
|
||||
let link = content.document.getElementById(id);
|
||||
link.click();
|
||||
});
|
||||
}
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
let appD = make_fake_appdir();
|
||||
let crD = appD.clone();
|
||||
crD.append("Crash Reports");
|
||||
let crashes = add_fake_crashes(crD, 1);
|
||||
// we don't need much data here, it's not going to a real Socorro
|
||||
crashes.push(addPendingCrashreport(crD,
|
||||
crashes[crashes.length - 1].date + 60000,
|
||||
{'ServerURL': 'http://example.com/browser/toolkit/crashreporter/test/browser/crashreport.sjs',
|
||||
'ProductName': 'Test App',
|
||||
// test that we don't truncate
|
||||
// at = (bug 512853)
|
||||
'Foo': 'ABC=XYZ'
|
||||
}));
|
||||
crashes.sort((a, b) => b.date - a.date);
|
||||
|
||||
// set this pref so we can link to our test server
|
||||
Services.prefs.setCharPref("breakpad.reportURL",
|
||||
"http://example.com/browser/toolkit/crashreporter/test/browser/crashreport.sjs?id=");
|
||||
|
||||
BrowserTestUtils.openNewForegroundTab(gBrowser, "about:crashes").then((tab) => {
|
||||
ContentTask.spawn(tab.linkedBrowser, crashes, check_crash_list)
|
||||
.then(() => check_submit_pending(tab, crashes));
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue