Bug 1100687 - part 2: fix browser_blockHPKP.js, r?jaws
MozReview-Commit-ID: DxvN94O8fhi
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -523,17 +523,16 @@ tags = mcb
tags = mcb
[browser_bug1225194-remotetab.js]
[browser_e10s_switchbrowser.js]
[browser_e10s_about_process.js]
[browser_e10s_chrome_process.js]
[browser_e10s_javascript.js]
[browser_blockHPKP.js]
tags = psm
-skip-if = e10s # bug 1100687 - test directly manipulates content (content.document.getElementById)
[browser_mcb_redirect.js]
tags = mcb
[browser_windowactivation.js]
[browser_contextmenu_childprocess.js]
[browser_bug963945.js]
[browser_readerMode.js]
support-files =
readerModeArticle.html
--- a/browser/base/content/test/general/browser_blockHPKP.js
+++ b/browser/base/content/test/general/browser_blockHPKP.js
@@ -56,54 +56,51 @@ function loadPinningPage() {
gBrowser.selectedBrowser.loadURI("https://" + kPinningDomain + kURLPath + "valid");
}
// After the site is pinned try to load with a subdomain site that should
// fail to validate
var successfulPinningPageListener = {
handleEvent: function() {
gBrowser.selectedBrowser.removeEventListener("load", this, true);
- gBrowser.addProgressListener(certErrorProgressListener);
+ promiseErrorPageLoaded(gBrowser.selectedBrowser).then(errorPageLoaded);
gBrowser.selectedBrowser.loadURI("https://" + kBadPinningDomain);
}
};
// The browser should load about:neterror, when this happens, proceed
// to load the pinning domain again, this time removing the pinning information
-var certErrorProgressListener = {
- onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) {
- if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP) {
- let textElement = content.document.getElementById("errorShortDescText");
- let text = textElement.innerHTML;
- ok(text.indexOf("MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE") > 0,
- "Got a pinning error page");
- gBrowser.removeProgressListener(this);
- gBrowser.selectedBrowser.addEventListener("load",
- successfulPinningRemovalPageListener,
- true);
- gBrowser.selectedBrowser.loadURI("https://" + kPinningDomain + kURLPath + "zeromaxagevalid");
- }
- }
+function errorPageLoaded() {
+ ContentTask.spawn(gBrowser.selectedBrowser, null, function*() {
+ let textElement = content.document.getElementById("errorShortDescText");
+ let text = textElement.innerHTML;
+ ok(text.indexOf("MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE") > 0,
+ "Got a pinning error page");
+ }).then(function() {
+ BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(pinningRemovalLoaded);
+ gBrowser.selectedBrowser.loadURI("https://" + kPinningDomain + kURLPath + "zeromaxagevalid");
+ });
};
// After the pinning information has been removed (successful load) proceed
// to load again with the invalid pin domain.
-var successfulPinningRemovalPageListener = {
- handleEvent: function() {
- gBrowser.selectedBrowser.removeEventListener("load", this, true);
- gBrowser.selectedBrowser.addEventListener("load",
- successfulLoadListener,
- true);
-
- gBrowser.selectedBrowser.loadURI("https://" + kBadPinningDomain);
- }
+function pinningRemovalLoaded() {
+ BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(badPinningPageLoaded);
+ gBrowser.selectedBrowser.loadURI("https://" + kBadPinningDomain);
};
// Finally, we should successfully load
// https://bad.include-subdomains.pinning-dynamic.example.com.
-var successfulLoadListener = {
- handleEvent: function() {
- gBrowser.selectedBrowser.removeEventListener("load", this, true);
- gBrowser.removeTab(gBrowser.selectedTab);
+function badPinningPageLoaded() {
+ BrowserTestUtils.removeTab(gBrowser.selectedTab).then(function() {
ok(true, "load complete");
finish();
- }
+ });
};
+
+function promiseErrorPageLoaded(browser) {
+ return new Promise(resolve => {
+ browser.addEventListener("DOMContentLoaded", function onLoad() {
+ browser.removeEventListener("DOMContentLoaded", onLoad, false, true);
+ resolve();
+ }, false, true);
+ });
+}