fune/browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js
Kris Maglione 313b707b2e Bug 1443964: Part 3 - Remove no-cpows-in-tests rule. r=mconley
The shims that this rule tests for no longer exist.

MozReview-Commit-ID: DMgP7Hczavc

--HG--
extra : rebase_source : 765ddd5c62c9449c07ed050e44d86a3bd5c0ae64
extra : amend_source : 627a7694ac07182200f876901ded7a34721cd228
2018-03-07 19:31:28 -08:00

151 lines
5 KiB
JavaScript

"use strict";
const PAGE = "data:text/html,<html><body>A%20regular,%20everyday,%20normal%20page.";
const AUTOSUBMIT_PREF = "browser.crashReports.unsubmittedCheck.autoSubmit2";
const {TabStateFlusher} =
ChromeUtils.import("resource:///modules/sessionstore/TabStateFlusher.jsm", {});
// On debug builds, crashing tabs results in much thinking, which
// slows down the test and results in intermittent test timeouts,
// so we'll pump up the expected timeout for this test.
requestLongerTimeout(2);
/**
* Tests that if the user is not configured to autosubmit
* backlogged crash reports, that we offer to do that, and
* that the user can accept that offer.
*/
add_task(async function test_show_form() {
await SpecialPowers.pushPrefEnv({
set: [[AUTOSUBMIT_PREF, false]],
});
await BrowserTestUtils.withNewTab({
gBrowser,
url: PAGE,
}, async function(browser) {
// Make sure we've flushed the browser messages so that
// we can restore it.
await TabStateFlusher.flush(browser);
// Now crash the browser.
await BrowserTestUtils.crashBrowser(browser);
let doc = browser.contentDocument;
// Ensure the request is visible. We can safely reach into
// the content since about:tabcrashed is an in-process URL.
let requestAutoSubmit = doc.getElementById("requestAutoSubmit");
Assert.ok(!requestAutoSubmit.hidden,
"Request for autosubmission is visible.");
// Since the pref is set to false, the checkbox should be
// unchecked.
let autoSubmit = doc.getElementById("autoSubmit");
Assert.ok(!autoSubmit.checked,
"Checkbox for autosubmission is not checked.");
// Check the checkbox, and then restore the tab.
autoSubmit.checked = true;
let restoreButton = doc.getElementById("restoreTab");
restoreButton.click();
await BrowserTestUtils.browserLoaded(browser, false, PAGE);
// The autosubmission pref should now be set.
Assert.ok(Services.prefs.getBoolPref(AUTOSUBMIT_PREF),
"Autosubmission pref should have been set.");
});
});
/**
* Tests that if the user is autosubmitting backlogged crash reports
* that we don't make the offer again.
*/
add_task(async function test_show_form() {
await SpecialPowers.pushPrefEnv({
set: [[AUTOSUBMIT_PREF, true]],
});
await BrowserTestUtils.withNewTab({
gBrowser,
url: PAGE,
}, async function(browser) {
await TabStateFlusher.flush(browser);
// Now crash the browser.
await BrowserTestUtils.crashBrowser(browser);
let doc = browser.contentDocument;
// Ensure the request is NOT visible. We can safely reach into
// the content since about:tabcrashed is an in-process URL.
let requestAutoSubmit = doc.getElementById("requestAutoSubmit");
Assert.ok(requestAutoSubmit.hidden,
"Request for autosubmission is not visible.");
// Restore the tab.
let restoreButton = doc.getElementById("restoreTab");
restoreButton.click();
await BrowserTestUtils.browserLoaded(browser, false, PAGE);
// The autosubmission pref should still be set to true.
Assert.ok(Services.prefs.getBoolPref(AUTOSUBMIT_PREF),
"Autosubmission pref should have been set.");
});
});
/**
* Tests that we properly set the autoSubmit preference if the user is
* presented with a tabcrashed page without a crash report.
*/
add_task(async function test_no_offer() {
// We should default to sending the report.
Assert.ok(TabCrashHandler.prefs.getBoolPref("sendReport"));
await SpecialPowers.pushPrefEnv({
set: [[AUTOSUBMIT_PREF, false]],
});
await BrowserTestUtils.withNewTab({
gBrowser,
url: PAGE,
}, async function(browser) {
await TabStateFlusher.flush(browser);
// Make it so that it seems like no dump is available for the next crash.
prepareNoDump();
// Now crash the browser.
await BrowserTestUtils.crashBrowser(browser);
let doc = browser.contentDocument;
// Ensure the request to autosubmit is invisible, since there's no report.
let requestRect = doc.getElementById("requestAutoSubmit")
.getBoundingClientRect();
Assert.equal(0, requestRect.height,
"Request for autosubmission has no height");
Assert.equal(0, requestRect.width,
"Request for autosubmission has no width");
// Since the pref is set to false, the checkbox should be
// unchecked.
let autoSubmit = doc.getElementById("autoSubmit");
Assert.ok(!autoSubmit.checked,
"Checkbox for autosubmission is not checked.");
let restoreButton = doc.getElementById("restoreTab");
restoreButton.click();
await BrowserTestUtils.browserLoaded(browser, false, PAGE);
// The autosubmission pref should now be set.
Assert.ok(!Services.prefs.getBoolPref(AUTOSUBMIT_PREF),
"Autosubmission pref should not have changed.");
});
// We should not have changed the default value for sending the report.
Assert.ok(TabCrashHandler.prefs.getBoolPref("sendReport"));
});