зеркало из https://github.com/mozilla/gecko-dev.git
Merge m-c to inbound, a=merge
MozReview-Commit-ID: AuQEHTgSKcO
This commit is contained in:
Коммит
c5d1991d35
|
@ -1,6 +1,10 @@
|
|||
# Always ignore node_modules.
|
||||
**/node_modules/**/*.*
|
||||
|
||||
# Include these to speed up ESLint, see bug 1347906.
|
||||
.hg
|
||||
.git
|
||||
|
||||
# Exclude expected objdirs.
|
||||
obj*/**
|
||||
|
||||
|
|
|
@ -35,14 +35,14 @@ add_task(function* checkReturnToAboutHome() {
|
|||
is(entries.length, 1, "there is one shistory entry");
|
||||
|
||||
info("Clicking the go back button on about:certerror");
|
||||
let pageshowPromise = promiseWaitForEvent(browser, "pageshow");
|
||||
yield ContentTask.spawn(browser, null, function* () {
|
||||
let doc = content.document;
|
||||
let returnButton = doc.getElementById("returnButton");
|
||||
is(returnButton.getAttribute("autofocus"), "true", "returnButton has autofocus");
|
||||
returnButton.click();
|
||||
|
||||
yield ContentTaskUtils.waitForEvent(this, "pageshow", true);
|
||||
});
|
||||
yield pageshowPromise;
|
||||
|
||||
is(browser.webNavigation.canGoBack, true, "webNavigation.canGoBack");
|
||||
is(browser.webNavigation.canGoForward, false, "!webNavigation.canGoForward");
|
||||
|
@ -71,13 +71,13 @@ add_task(function* checkReturnToPreviousPage() {
|
|||
is(entries.length, 2, "there are two shistory entries");
|
||||
|
||||
info("Clicking the go back button on about:certerror");
|
||||
let pageshowPromise = promiseWaitForEvent(browser, "pageshow");
|
||||
yield ContentTask.spawn(browser, null, function* () {
|
||||
let doc = content.document;
|
||||
let returnButton = doc.getElementById("returnButton");
|
||||
returnButton.click();
|
||||
|
||||
yield ContentTaskUtils.waitForEvent(this, "pageshow", true);
|
||||
});
|
||||
yield pageshowPromise;
|
||||
|
||||
is(browser.webNavigation.canGoBack, false, "!webNavigation.canGoBack");
|
||||
is(browser.webNavigation.canGoForward, true, "webNavigation.canGoForward");
|
||||
|
|
|
@ -24,21 +24,24 @@ add_task(function* checkReturnToPreviousPage() {
|
|||
info("Loading and waiting for the net error");
|
||||
yield pageLoaded;
|
||||
|
||||
Assert.ok(content.document.getElementById("prefResetButton").getBoundingClientRect().left >= 0,
|
||||
"Should have a visible button");
|
||||
// NB: This code assumes that the error page and the test page load in the
|
||||
// same process. If this test starts to fail, it could be because they load
|
||||
// in different processes.
|
||||
yield ContentTask.spawn(browser, LOW_TLS_VERSION, function* (LOW_TLS_VERSION_) {
|
||||
ok(content.document.getElementById("prefResetButton").getBoundingClientRect().left >= 0,
|
||||
"Should have a visible button");
|
||||
|
||||
Assert.ok(content.document.documentURI.startsWith("about:neterror"), "Should be showing error page");
|
||||
ok(content.document.documentURI.startsWith("about:neterror"), "Should be showing error page");
|
||||
|
||||
let pageshowPromise = promiseWaitForEvent(browser, "pageshow");
|
||||
yield ContentTask.spawn(browser, null, function* () {
|
||||
let doc = content.document;
|
||||
let prefResetButton = doc.getElementById("prefResetButton");
|
||||
Assert.equal(prefResetButton.getAttribute("autofocus"), "true", "prefResetButton has autofocus");
|
||||
is(prefResetButton.getAttribute("autofocus"), "true", "prefResetButton has autofocus");
|
||||
prefResetButton.click();
|
||||
});
|
||||
yield pageshowPromise;
|
||||
|
||||
Assert.equal(content.document.documentURI, LOW_TLS_VERSION, "Should not be showing page");
|
||||
yield ContentTaskUtils.waitForEvent(this, "pageshow", true);
|
||||
|
||||
is(content.document.documentURI, LOW_TLS_VERSION_, "Should not be showing page");
|
||||
});
|
||||
|
||||
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
|
|
@ -2,27 +2,22 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
function test() {
|
||||
add_task(function* test() {
|
||||
let uriString = "http://example.com/";
|
||||
let cookieBehavior = "network.cookie.cookieBehavior";
|
||||
let uriObj = Services.io.newURI(uriString)
|
||||
let cp = Components.classes["@mozilla.org/cookie/permission;1"]
|
||||
.getService(Components.interfaces.nsICookiePermission);
|
||||
|
||||
Services.prefs.setIntPref(cookieBehavior, 2);
|
||||
|
||||
yield SpecialPowers.pushPrefEnv({ set: [[ cookieBehavior, 2 ]] });
|
||||
cp.setAccess(uriObj, cp.ACCESS_ALLOW);
|
||||
gBrowser.selectedTab = gBrowser.addTab(uriString);
|
||||
waitForExplicitFinish();
|
||||
BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser).then(onTabLoaded);
|
||||
|
||||
function onTabLoaded() {
|
||||
is(gBrowser.selectedBrowser.contentWindow.navigator.cookieEnabled, true,
|
||||
"navigator.cookieEnabled should be true");
|
||||
// Clean up
|
||||
gBrowser.removeTab(gBrowser.selectedTab);
|
||||
Services.prefs.setIntPref(cookieBehavior, 0);
|
||||
cp.setAccess(uriObj, cp.ACCESS_DEFAULT);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
yield BrowserTestUtils.withNewTab({ gBrowser, url: uriString }, function* (browser) {
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
is(content.navigator.cookieEnabled, true,
|
||||
"navigator.cookieEnabled should be true");
|
||||
});
|
||||
});
|
||||
|
||||
cp.setAccess(uriObj, cp.ACCESS_DEFAULT);
|
||||
});
|
||||
|
|
|
@ -12,7 +12,8 @@ function test() {
|
|||
let tab = gBrowser.addTab();
|
||||
gBrowser.selectedTab = tab;
|
||||
|
||||
load(tab, DUMMY_PAGE, function() {
|
||||
BrowserTestUtils.loadURI(tab.linkedBrowser, DUMMY_PAGE);
|
||||
BrowserTestUtils.browserLoaded(tab.linkedBrowser).then(() => {
|
||||
gFindBar.onFindCommand();
|
||||
EventUtils.sendString("Dummy");
|
||||
gBrowser.removeTab(tab);
|
||||
|
@ -26,10 +27,3 @@ function test() {
|
|||
finish();
|
||||
});
|
||||
}
|
||||
|
||||
function load(aTab, aUrl, aCallback) {
|
||||
aTab.linkedBrowser.addEventListener("load", function(aEvent) {
|
||||
waitForFocus(aCallback, content);
|
||||
}, {capture: true, once: true});
|
||||
aTab.linkedBrowser.loadURI(aUrl);
|
||||
}
|
||||
|
|
|
@ -14,18 +14,11 @@ add_task(function*() {
|
|||
});
|
||||
|
||||
let win = OpenBrowserWindow();
|
||||
yield BrowserTestUtils.waitForEvent(win, "load");
|
||||
yield BrowserTestUtils.firstBrowserLoaded(win, false);
|
||||
|
||||
let browser = win.gBrowser.selectedBrowser;
|
||||
// If we've finished loading about:home already, we can check
|
||||
// right away - otherwise, we need to wait.
|
||||
if (browser.contentDocument.readyState == "complete" &&
|
||||
browser.currentURI.spec == homepage) {
|
||||
checkIdentityMode(win);
|
||||
} else {
|
||||
yield BrowserTestUtils.browserLoaded(browser, false, homepage);
|
||||
checkIdentityMode(win);
|
||||
}
|
||||
is(browser.currentURI.spec, homepage, "Loaded the correct homepage");
|
||||
checkIdentityMode(win);
|
||||
|
||||
yield BrowserTestUtils.closeWindow(win);
|
||||
});
|
||||
|
|
|
@ -243,21 +243,23 @@ var tests = [
|
|||
onLocationChange: function onLocationChange() {
|
||||
gBrowser.removeProgressListener(progressListener);
|
||||
|
||||
executeSoon(() => {
|
||||
executeSoon(() => {
|
||||
let notification = PopupNotifications.getNotification(self.notifyObj.id,
|
||||
self.notifyObj.browser);
|
||||
ok(notification != null, "Notification remained when subframe navigated");
|
||||
self.notifyObj.options.eventCallback = undefined;
|
||||
|
||||
notification.remove();
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
info("Adding progress listener and performing navigation");
|
||||
gBrowser.addProgressListener(progressListener);
|
||||
content.document.getElementById("iframe")
|
||||
.setAttribute("src", "http://example.org/");
|
||||
ContentTask.spawn(gBrowser.selectedBrowser, null, function() {
|
||||
content.document.getElementById("iframe")
|
||||
.setAttribute("src", "http://example.org/");
|
||||
});
|
||||
},
|
||||
onHidden() {}
|
||||
},
|
||||
|
|
|
@ -35,8 +35,10 @@ add_task(function* () {
|
|||
function* test1(gTestBrowser) {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
var x = content.document.getElementsByTagName("iframe")[0].contentDocument.getElementById("mixedContentContainer");
|
||||
is(x, null, "Mixed Content is NOT to be found in Test1");
|
||||
yield ContentTask.spawn(gTestBrowser, null, function() {
|
||||
var x = content.document.getElementsByTagName("iframe")[0].contentDocument.getElementById("mixedContentContainer");
|
||||
is(x, null, "Mixed Content is NOT to be found in Test1");
|
||||
});
|
||||
|
||||
// Disable Mixed Content Protection for the page (and reload)
|
||||
gIdentityHandler.disableMixedContentProtection();
|
||||
|
@ -45,8 +47,10 @@ function* test1(gTestBrowser) {
|
|||
function* test2(gTestBrowser) {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: true, activeBlocked: false, passiveLoaded: false});
|
||||
|
||||
var x = content.document.getElementsByTagName("iframe")[0].contentDocument.getElementById("mixedContentContainer");
|
||||
isnot(x, null, "Mixed Content is to be found in Test2");
|
||||
yield ContentTask.spawn(gTestBrowser, null, function() {
|
||||
var x = content.document.getElementsByTagName("iframe")[0].contentDocument.getElementById("mixedContentContainer");
|
||||
isnot(x, null, "Mixed Content is to be found in Test2");
|
||||
});
|
||||
|
||||
// Re-enable Mixed Content Protection for the page (and reload)
|
||||
gIdentityHandler.enableMixedContentProtection();
|
||||
|
@ -55,6 +59,8 @@ function* test2(gTestBrowser) {
|
|||
function* test3(gTestBrowser) {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
var x = content.document.getElementsByTagName("iframe")[0].contentDocument.getElementById("mixedContentContainer");
|
||||
is(x, null, "Mixed Content is NOT to be found in Test3");
|
||||
yield ContentTask.spawn(gTestBrowser, null, function() {
|
||||
var x = content.document.getElementsByTagName("iframe")[0].contentDocument.getElementById("mixedContentContainer");
|
||||
is(x, null, "Mixed Content is NOT to be found in Test3");
|
||||
});
|
||||
}
|
||||
|
|
|
@ -12,23 +12,9 @@ const HTTPS_TEST_ROOT_2 = getRootDirectory(gTestPath).replace("chrome://mochites
|
|||
|
||||
var gTestBrowser = null;
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
// Set preferences back to their original values
|
||||
Services.prefs.clearUserPref(PREF_DISPLAY);
|
||||
Services.prefs.clearUserPref(PREF_ACTIVE);
|
||||
});
|
||||
|
||||
function MixedTestsCompleted() {
|
||||
gBrowser.removeCurrentTab();
|
||||
window.focus();
|
||||
finish();
|
||||
}
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
Services.prefs.setBoolPref(PREF_DISPLAY, true);
|
||||
Services.prefs.setBoolPref(PREF_ACTIVE, true);
|
||||
add_task(function* test() {
|
||||
yield SpecialPowers.pushPrefEnv({ set: [[ PREF_DISPLAY, true ],
|
||||
[ PREF_ACTIVE, true ]] });
|
||||
|
||||
var newTab = gBrowser.addTab();
|
||||
gBrowser.selectedTab = newTab;
|
||||
|
@ -36,160 +22,166 @@ function test() {
|
|||
newTab.linkedBrowser.stop()
|
||||
|
||||
// Mixed Script Test
|
||||
gTestBrowser.addEventListener("load", MixedTest1A, true);
|
||||
var url = HTTPS_TEST_ROOT + "file_bug822367_1.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
BrowserTestUtils.loadURI(gTestBrowser, url);
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
// Mixed Script Test
|
||||
function MixedTest1A() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest1A, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest1B, true);
|
||||
|
||||
add_task(function* MixedTest1A() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
||||
gIdentityHandler.disableMixedContentProtection();
|
||||
}
|
||||
function MixedTest1B() {
|
||||
BrowserTestUtils.waitForCondition(() => content.document.getElementById("p1").innerHTML == "hello", "Waited too long for mixed script to run in Test 1").then(MixedTest1C);
|
||||
}
|
||||
function MixedTest1C() {
|
||||
ok(content.document.getElementById("p1").innerHTML == "hello", "Mixed script didn't load in Test 1");
|
||||
gTestBrowser.removeEventListener("load", MixedTest1B, true);
|
||||
MixedTest2();
|
||||
}
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest1B() {
|
||||
yield ContentTask.spawn(gTestBrowser, null, function* () {
|
||||
yield ContentTaskUtils.waitForCondition(
|
||||
() => content.document.getElementById("p1").innerHTML == "hello",
|
||||
"Waited too long for mixed script to run in Test 1");
|
||||
});
|
||||
});
|
||||
|
||||
// Mixed Display Test - Doorhanger should not appear
|
||||
function MixedTest2() {
|
||||
gTestBrowser.addEventListener("load", MixedTest2A, true);
|
||||
add_task(function* MixedTest2() {
|
||||
var url = HTTPS_TEST_ROOT_2 + "file_bug822367_2.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
BrowserTestUtils.loadURI(gTestBrowser, url);
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
|
||||
function MixedTest2A() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: false, passiveLoaded: false});
|
||||
MixedTest3();
|
||||
}
|
||||
});
|
||||
|
||||
// Mixed Script and Display Test - User Override should cause both the script and the image to load.
|
||||
function MixedTest3() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest2A, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest3A, true);
|
||||
add_task(function* MixedTest3() {
|
||||
var url = HTTPS_TEST_ROOT + "file_bug822367_3.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
function MixedTest3A() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest3A, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest3B, true);
|
||||
BrowserTestUtils.loadURI(gTestBrowser, url);
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest3A() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
||||
gIdentityHandler.disableMixedContentProtection();
|
||||
}
|
||||
function MixedTest3B() {
|
||||
BrowserTestUtils.waitForCondition(() => content.document.getElementById("p1").innerHTML == "hello", "Waited too long for mixed script to run in Test 3").then(MixedTest3C);
|
||||
}
|
||||
function MixedTest3C() {
|
||||
BrowserTestUtils.waitForCondition(() => content.document.getElementById("p2").innerHTML == "bye", "Waited too long for mixed image to load in Test 3").then(MixedTest3D);
|
||||
}
|
||||
function MixedTest3D() {
|
||||
ok(content.document.getElementById("p1").innerHTML == "hello", "Mixed script didn't load in Test 3");
|
||||
ok(content.document.getElementById("p2").innerHTML == "bye", "Mixed image didn't load in Test 3");
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest3B() {
|
||||
yield ContentTask.spawn(gTestBrowser, null, function* () {
|
||||
let p1 = ContentTaskUtils.waitForCondition(
|
||||
() => content.document.getElementById("p1").innerHTML == "hello",
|
||||
"Waited too long for mixed script to run in Test 3");
|
||||
let p2 = ContentTaskUtils.waitForCondition(
|
||||
() => content.document.getElementById("p2").innerHTML == "bye",
|
||||
"Waited too long for mixed image to load in Test 3");
|
||||
yield Promise.all([ p1, p2 ]);
|
||||
});
|
||||
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: true, activeBlocked: false, passiveLoaded: true});
|
||||
MixedTest4();
|
||||
}
|
||||
});
|
||||
|
||||
// Location change - User override on one page doesn't propogate to another page after location change.
|
||||
function MixedTest4() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest3B, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest4A, true);
|
||||
add_task(function* MixedTest4() {
|
||||
var url = HTTPS_TEST_ROOT_2 + "file_bug822367_4.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
function MixedTest4A() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest4A, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest4B, true);
|
||||
BrowserTestUtils.loadURI(gTestBrowser, url);
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest4A() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
||||
gIdentityHandler.disableMixedContentProtection();
|
||||
}
|
||||
function MixedTest4B() {
|
||||
BrowserTestUtils.waitForCondition(() => content.document.location == HTTPS_TEST_ROOT + "file_bug822367_4B.html", "Waited too long for mixed script to run in Test 4").then(MixedTest4C);
|
||||
}
|
||||
function MixedTest4C() {
|
||||
ok(content.document.location == HTTPS_TEST_ROOT + "file_bug822367_4B.html", "Location didn't change in test 4");
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest4B() {
|
||||
let url = HTTPS_TEST_ROOT + "file_bug822367_4B.html";
|
||||
yield ContentTask.spawn(gTestBrowser, url, function* (wantedUrl) {
|
||||
yield ContentTaskUtils.waitForCondition(
|
||||
() => content.document.location == wantedUrl,
|
||||
"Waited too long for mixed script to run in Test 4");
|
||||
});
|
||||
});
|
||||
|
||||
add_task(function* MixedTest4C() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
BrowserTestUtils.waitForCondition(() => content.document.getElementById("p1").innerHTML == "", "Mixed script loaded in test 4 after location change!").then(MixedTest4D);
|
||||
}
|
||||
function MixedTest4D() {
|
||||
ok(content.document.getElementById("p1").innerHTML == "", "p1.innerHTML changed; mixed script loaded after location change in Test 4");
|
||||
MixedTest5();
|
||||
}
|
||||
yield ContentTask.spawn(gTestBrowser, null, function* () {
|
||||
yield ContentTaskUtils.waitForCondition(
|
||||
() => content.document.getElementById("p1").innerHTML == "",
|
||||
"Mixed script loaded in test 4 after location change!");
|
||||
});
|
||||
});
|
||||
|
||||
// Mixed script attempts to load in a document.open()
|
||||
function MixedTest5() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest4B, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest5A, true);
|
||||
add_task(function* MixedTest5() {
|
||||
var url = HTTPS_TEST_ROOT + "file_bug822367_5.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
function MixedTest5A() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest5A, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest5B, true);
|
||||
BrowserTestUtils.loadURI(gTestBrowser, url);
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest5A() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
||||
gIdentityHandler.disableMixedContentProtection();
|
||||
}
|
||||
function MixedTest5B() {
|
||||
BrowserTestUtils.waitForCondition(() => content.document.getElementById("p1").innerHTML == "hello", "Waited too long for mixed script to run in Test 5").then(MixedTest5C);
|
||||
}
|
||||
function MixedTest5C() {
|
||||
ok(content.document.getElementById("p1").innerHTML == "hello", "Mixed script didn't load in Test 5");
|
||||
MixedTest6();
|
||||
}
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest5B() {
|
||||
yield ContentTask.spawn(gTestBrowser, null, function* () {
|
||||
yield ContentTaskUtils.waitForCondition(
|
||||
() => content.document.getElementById("p1").innerHTML == "hello",
|
||||
"Waited too long for mixed script to run in Test 5");
|
||||
});
|
||||
});
|
||||
|
||||
// Mixed script attempts to load in a document.open() that is within an iframe.
|
||||
function MixedTest6() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest5B, true);
|
||||
gTestBrowser.addEventListener("load", MixedTest6A, true);
|
||||
add_task(function* MixedTest6() {
|
||||
var url = HTTPS_TEST_ROOT_2 + "file_bug822367_6.html";
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
function MixedTest6A() {
|
||||
BrowserTestUtils.loadURI(gTestBrowser, url);
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest6A() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest6A, true);
|
||||
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
||||
BrowserTestUtils.waitForCondition(() => gIdentityHandler._identityBox.classList.contains("mixedActiveBlocked"), "Waited too long for control center to get mixed active blocked state").then(MixedTest6B);
|
||||
}
|
||||
|
||||
function MixedTest6B() {
|
||||
gTestBrowser.addEventListener("load", MixedTest6C, true);
|
||||
yield BrowserTestUtils.waitForCondition(
|
||||
() => gIdentityHandler._identityBox.classList.contains("mixedActiveBlocked"),
|
||||
"Waited too long for control center to get mixed active blocked state");
|
||||
});
|
||||
|
||||
add_task(function* MixedTest6B() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: false, activeBlocked: true, passiveLoaded: false});
|
||||
|
||||
let {gIdentityHandler} = gTestBrowser.ownerGlobal;
|
||||
gIdentityHandler.disableMixedContentProtection();
|
||||
}
|
||||
|
||||
function MixedTest6C() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest6C, true);
|
||||
BrowserTestUtils.waitForCondition(function() {
|
||||
try {
|
||||
return content.document.getElementById("f1").contentDocument.getElementById("p1").innerHTML == "hello";
|
||||
} catch (e) {
|
||||
return false;
|
||||
yield BrowserTestUtils.browserLoaded(gTestBrowser);
|
||||
});
|
||||
|
||||
add_task(function* MixedTest6C() {
|
||||
yield ContentTask.spawn(gTestBrowser, null, function* () {
|
||||
function test() {
|
||||
try {
|
||||
return content.document.getElementById("f1").contentDocument.getElementById("p1").innerHTML == "hello";
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}, "Waited too long for mixed script to run in Test 6").then(MixedTest6D);
|
||||
}
|
||||
function MixedTest6D() {
|
||||
ok(content.document.getElementById("f1").contentDocument.getElementById("p1").innerHTML == "hello", "Mixed script didn't load in Test 6");
|
||||
|
||||
yield ContentTaskUtils.waitForCondition(test, "Waited too long for mixed script to run in Test 6");
|
||||
});
|
||||
});
|
||||
|
||||
add_task(function* MixedTest6D() {
|
||||
assertMixedContentBlockingState(gTestBrowser, {activeLoaded: true, activeBlocked: false, passiveLoaded: false});
|
||||
MixedTestsCompleted();
|
||||
}
|
||||
});
|
||||
|
||||
add_task(function* cleanup() {
|
||||
gBrowser.removeCurrentTab();
|
||||
});
|
||||
|
|
|
@ -69,7 +69,7 @@ add_task(function* test() {
|
|||
yield BrowserTestUtils.browserLoaded(browser);
|
||||
|
||||
// get the title
|
||||
let title = browser.contentTitle.trim().split("|");
|
||||
let title = browser.contentDocument.title.trim().split("|");
|
||||
|
||||
// check each item in the title and validate it meets expectatations
|
||||
for (let part of title) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
function checkState(tab) {
|
||||
let checkState = Task.async(function*(browser) {
|
||||
// Go back and then forward, and make sure that the state objects received
|
||||
// from the popState event are as we expect them to be.
|
||||
//
|
||||
|
@ -10,29 +10,33 @@ function checkState(tab) {
|
|||
// sure it's still there after we go forward -- this is to test that the two
|
||||
// history entries correspond to the same document.
|
||||
|
||||
let deferred = {};
|
||||
deferred.promise = new Promise(resolve => deferred.resolve = resolve);
|
||||
|
||||
let popStateCount = 0;
|
||||
|
||||
tab.linkedBrowser.addEventListener("popstate", function(aEvent) {
|
||||
let contentWindow = tab.linkedBrowser.contentWindow;
|
||||
browser.addEventListener("popstate", function(aEvent) {
|
||||
if (popStateCount == 0) {
|
||||
popStateCount++;
|
||||
|
||||
is(tab.linkedBrowser.contentWindow.testState, "foo",
|
||||
"testState after going back");
|
||||
|
||||
ok(aEvent.state, "Event should have a state property.");
|
||||
is(JSON.stringify(tab.linkedBrowser.contentWindow.history.state), JSON.stringify({obj1:1}),
|
||||
"first popstate object.");
|
||||
|
||||
// Add a node with id "new-elem" to the document.
|
||||
let doc = contentWindow.document;
|
||||
ok(!doc.getElementById("new-elem"),
|
||||
"doc shouldn't contain new-elem before we add it.");
|
||||
let elem = doc.createElement("div");
|
||||
elem.id = "new-elem";
|
||||
doc.body.appendChild(elem);
|
||||
ContentTask.spawn(browser, null, function() {
|
||||
is(content.testState, "foo",
|
||||
"testState after going back");
|
||||
is(JSON.stringify(content.history.state), JSON.stringify({obj1:1}),
|
||||
"first popstate object.");
|
||||
|
||||
tab.linkedBrowser.goForward();
|
||||
// Add a node with id "new-elem" to the document.
|
||||
let doc = content.document;
|
||||
ok(!doc.getElementById("new-elem"),
|
||||
"doc shouldn't contain new-elem before we add it.");
|
||||
let elem = doc.createElement("div");
|
||||
elem.id = "new-elem";
|
||||
doc.body.appendChild(elem);
|
||||
}).then(() => {
|
||||
browser.goForward();
|
||||
});
|
||||
} else if (popStateCount == 1) {
|
||||
popStateCount++;
|
||||
// When content fires a PopStateEvent and we observe it from a chrome event
|
||||
|
@ -41,75 +45,76 @@ function checkState(tab) {
|
|||
// deserialized in the content scope. And in this case, since RegExps are
|
||||
// not currently Xrayable (see bug 1014991), trying to pull |obj3| (a RegExp)
|
||||
// off of an Xrayed Object won't work. So we need to waive.
|
||||
ContentTask.spawn(tab.linkedBrowser, aEvent.state, function(state) {
|
||||
ContentTask.spawn(browser, aEvent.state, function(state) {
|
||||
Assert.equal(Cu.waiveXrays(state).obj3.toString(),
|
||||
"/^a$/", "second popstate object.");
|
||||
}).then(function() {
|
||||
|
||||
// Make sure that the new-elem node is present in the document. If it's
|
||||
// not, then this history entry has a different doc identifier than the
|
||||
// previous entry, which is bad.
|
||||
let doc = contentWindow.document;
|
||||
let doc = content.document;
|
||||
let newElem = doc.getElementById("new-elem");
|
||||
ok(newElem, "doc should contain new-elem.");
|
||||
newElem.remove();
|
||||
ok(!doc.getElementById("new-elem"), "new-elem should be removed.");
|
||||
|
||||
tab.linkedBrowser.removeEventListener("popstate", arguments.callee, true);
|
||||
gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}).then(() => {
|
||||
browser.removeEventListener("popstate", arguments.callee, true);
|
||||
deferred.resolve();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Set some state in the page's window. When we go back(), the page should
|
||||
// be retrieved from bfcache, and this state should still be there.
|
||||
tab.linkedBrowser.contentWindow.testState = "foo";
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
content.testState = "foo";
|
||||
});
|
||||
|
||||
// Now go back. This should trigger the popstate event handler above.
|
||||
tab.linkedBrowser.goBack();
|
||||
}
|
||||
browser.goBack();
|
||||
|
||||
function test() {
|
||||
yield deferred.promise;
|
||||
});
|
||||
|
||||
add_task(function* test() {
|
||||
// Tests session restore functionality of history.pushState and
|
||||
// history.replaceState(). (Bug 500328)
|
||||
|
||||
waitForExplicitFinish();
|
||||
|
||||
// We open a new blank window, let it load, and then load in
|
||||
// http://example.com. We need to load the blank window first, otherwise the
|
||||
// docshell gets confused and doesn't have a current history entry.
|
||||
let tab = gBrowser.addTab("about:blank");
|
||||
let browser = tab.linkedBrowser;
|
||||
let state;
|
||||
yield BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, function* (browser) {
|
||||
BrowserTestUtils.loadURI(browser, "http://example.com");
|
||||
yield BrowserTestUtils.browserLoaded(browser);
|
||||
|
||||
promiseBrowserLoaded(browser).then(() => {
|
||||
browser.loadURI("http://example.com", null, null);
|
||||
// After these push/replaceState calls, the window should have three
|
||||
// history entries:
|
||||
// testURL (state object: null) <-- oldest
|
||||
// testURL (state object: {obj1:1})
|
||||
// testURL?page2 (state object: {obj3:/^a$/}) <-- newest
|
||||
function contentTest() {
|
||||
let history = content.window.history;
|
||||
history.pushState({obj1:1}, "title-obj1");
|
||||
history.pushState({obj2:2}, "title-obj2", "?page2");
|
||||
history.replaceState({obj3:/^a$/}, "title-obj3");
|
||||
}
|
||||
yield ContentTask.spawn(browser, null, contentTest);
|
||||
yield TabStateFlusher.flush(browser);
|
||||
|
||||
promiseBrowserLoaded(browser).then(() => {
|
||||
// After these push/replaceState calls, the window should have three
|
||||
// history entries:
|
||||
// testURL (state object: null) <-- oldest
|
||||
// testURL (state object: {obj1:1})
|
||||
// testURL?page2 (state object: {obj3:/^a$/}) <-- newest
|
||||
function contentTest() {
|
||||
let history = content.window.history;
|
||||
history.pushState({obj1:1}, "title-obj1");
|
||||
history.pushState({obj2:2}, "title-obj2", "?page2");
|
||||
history.replaceState({obj3:/^a$/}, "title-obj3");
|
||||
}
|
||||
ContentTask.spawn(browser, null, contentTest).then(function() {
|
||||
return TabStateFlusher.flush(tab.linkedBrowser);
|
||||
}).then(() => {
|
||||
let state = ss.getTabState(tab);
|
||||
gBrowser.removeTab(tab);
|
||||
|
||||
// Restore the state into a new tab. Things don't work well when we
|
||||
// restore into the old tab, but that's not a real use case anyway.
|
||||
let tab2 = gBrowser.addTab("about:blank");
|
||||
ss.setTabState(tab2, state, true);
|
||||
|
||||
// Run checkState() once the tab finishes loading its restored state.
|
||||
promiseTabRestored(tab2).then(() => checkState(tab2));
|
||||
});
|
||||
});
|
||||
state = ss.getTabState(gBrowser.getTabForBrowser(browser));
|
||||
});
|
||||
}
|
||||
|
||||
// Restore the state into a new tab. Things don't work well when we
|
||||
// restore into the old tab, but that's not a real use case anyway.
|
||||
yield BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, function* (browser) {
|
||||
let tab2 = gBrowser.getTabForBrowser(browser);
|
||||
|
||||
let tabRestoredPromise = promiseTabRestored(tab2);
|
||||
ss.setTabState(tab2, state, true);
|
||||
|
||||
// Run checkState() once the tab finishes loading its restored state.
|
||||
yield tabRestoredPromise;
|
||||
yield checkState(browser);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-env mozilla/frame-script */
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
|
@ -25,16 +26,35 @@ var state = {entries:[
|
|||
}
|
||||
]};
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
ss.setBrowserState(stateBackup);
|
||||
});
|
||||
|
||||
add_task(function* test() {
|
||||
let tab = gBrowser.addTab("about:blank");
|
||||
promiseTabState(tab, state).then(() => {
|
||||
let history = tab.linkedBrowser.webNavigation.sessionHistory;
|
||||
yield promiseTabState(tab, state);
|
||||
yield ContentTask.spawn(tab.linkedBrowser, null, function() {
|
||||
function compareEntries(i, j, history) {
|
||||
let e1 = history.getEntryAtIndex(i, false)
|
||||
.QueryInterface(Ci.nsISHEntry)
|
||||
.QueryInterface(Ci.nsISHContainer);
|
||||
|
||||
let e2 = history.getEntryAtIndex(j, false)
|
||||
.QueryInterface(Ci.nsISHEntry)
|
||||
.QueryInterface(Ci.nsISHContainer);
|
||||
|
||||
ok(e1.sharesDocumentWith(e2),
|
||||
`${i} should share doc with ${j}`);
|
||||
is(e1.childCount, e2.childCount,
|
||||
`Child count mismatch (${i}, ${j})`);
|
||||
|
||||
for (let c = 0; c < e1.childCount; c++) {
|
||||
let c1 = e1.GetChildAt(c);
|
||||
let c2 = e2.GetChildAt(c);
|
||||
|
||||
ok(c1.sharesDocumentWith(c2),
|
||||
`Cousins should share documents. (${i}, ${j}, ${c})`);
|
||||
}
|
||||
}
|
||||
|
||||
let history = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsISHistory);
|
||||
|
||||
is(history.count, 2, "history.count");
|
||||
for (let i = 0; i < history.count; i++) {
|
||||
|
@ -42,30 +62,7 @@ function test() {
|
|||
compareEntries(i, j, history);
|
||||
}
|
||||
}
|
||||
|
||||
finish();
|
||||
});
|
||||
}
|
||||
|
||||
function compareEntries(i, j, history) {
|
||||
let e1 = history.getEntryAtIndex(i, false)
|
||||
.QueryInterface(Ci.nsISHEntry)
|
||||
.QueryInterface(Ci.nsISHContainer);
|
||||
|
||||
let e2 = history.getEntryAtIndex(j, false)
|
||||
.QueryInterface(Ci.nsISHEntry)
|
||||
.QueryInterface(Ci.nsISHContainer);
|
||||
|
||||
ok(e1.sharesDocumentWith(e2),
|
||||
i + " should share doc with " + j);
|
||||
is(e1.childCount, e2.childCount,
|
||||
"Child count mismatch (" + i + ", " + j + ")");
|
||||
|
||||
for (let c = 0; c < e1.childCount; c++) {
|
||||
let c1 = e1.GetChildAt(c);
|
||||
let c2 = e2.GetChildAt(c);
|
||||
|
||||
ok(c1.sharesDocumentWith(c2),
|
||||
"Cousins should share documents. (" + i + ", " + j + ", " + c + ")");
|
||||
}
|
||||
}
|
||||
ss.setBrowserState(stateBackup);
|
||||
});
|
||||
|
|
|
@ -29,9 +29,10 @@ function test() {
|
|||
is(formdata && formdata.id["foo"], "bar", "tab state's formdata is valid");
|
||||
|
||||
promiseTabRestored(tab).then(() => {
|
||||
let input = browser.contentDocument.getElementById("foo");
|
||||
is(input.value, "bar", "formdata has been restored correctly");
|
||||
finish();
|
||||
ContentTask.spawn(browser, null, function() {
|
||||
let input = content.document.getElementById("foo");
|
||||
is(input.value, "bar", "formdata has been restored correctly");
|
||||
}).then(() => { finish(); });
|
||||
});
|
||||
|
||||
// Restore the tab by selecting it.
|
||||
|
|
|
@ -16,17 +16,24 @@ add_task(function* test() {
|
|||
|
||||
// this is a baseline to ensure CSP is active
|
||||
// attempt to inject and run a script via inline (pre-restore, allowed)
|
||||
injectInlineScript(browser, 'document.getElementById("test_id").value = "fail";');
|
||||
is(browser.contentDocument.getElementById("test_id").value, "ok",
|
||||
"CSP should block the inline script that modifies test_id");
|
||||
yield injectInlineScript(browser, `document.getElementById("test_id").value = "fail";`);
|
||||
|
||||
// attempt to click a link to a data: URI (will inherit the CSP of the
|
||||
// origin document) and navigate to the data URI in the link.
|
||||
browser.contentDocument.getElementById("test_data_link").click();
|
||||
yield promiseBrowserLoaded(browser);
|
||||
let loadedPromise = promiseBrowserLoaded(browser);
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
is(content.document.getElementById("test_id").value, "ok",
|
||||
"CSP should block the inline script that modifies test_id");
|
||||
|
||||
is(browser.contentDocument.getElementById("test_id2").value, "ok",
|
||||
"CSP should block the script loaded by the clicked data URI");
|
||||
// attempt to click a link to a data: URI (will inherit the CSP of the
|
||||
// origin document) and navigate to the data URI in the link.
|
||||
content.document.getElementById("test_data_link").click();
|
||||
});
|
||||
|
||||
yield loadedPromise;
|
||||
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
is(content.document.getElementById("test_id2").value, "ok",
|
||||
"CSP should block the script loaded by the clicked data URI");
|
||||
});
|
||||
|
||||
// close the tab
|
||||
yield promiseRemoveTab(tab);
|
||||
|
@ -36,8 +43,10 @@ add_task(function* test() {
|
|||
yield promiseTabRestored(tab);
|
||||
browser = tab.linkedBrowser;
|
||||
|
||||
is(browser.contentDocument.getElementById("test_id2").value, "ok",
|
||||
"CSP should block the script loaded by the clicked data URI after restore");
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
is(content.document.getElementById("test_id2").value, "ok",
|
||||
"CSP should block the script loaded by the clicked data URI after restore");
|
||||
});
|
||||
|
||||
// clean up
|
||||
gBrowser.removeTab(tab);
|
||||
|
@ -45,8 +54,10 @@ add_task(function* test() {
|
|||
|
||||
// injects an inline script element (with a text body)
|
||||
function injectInlineScript(browser, scriptText) {
|
||||
let scriptElt = browser.contentDocument.createElement("script");
|
||||
scriptElt.type = "text/javascript";
|
||||
scriptElt.text = scriptText;
|
||||
browser.contentDocument.body.appendChild(scriptElt);
|
||||
return ContentTask.spawn(browser, scriptText, function(text) {
|
||||
let scriptElt = content.document.createElement("script");
|
||||
scriptElt.type = "text/javascript";
|
||||
scriptElt.text = text;
|
||||
content.document.body.appendChild(scriptElt);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-env mozilla/frame-script */
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
|
@ -17,27 +18,34 @@ add_task(function* check_history_not_persisted() {
|
|||
yield TabStateFlusher.flush(browser);
|
||||
let state = JSON.parse(ss.getTabState(tab));
|
||||
ok(!state.entries[0].persist, "Should have collected the persistence state");
|
||||
gBrowser.removeTab(tab);
|
||||
yield promiseRemoveTab(tab);
|
||||
browser = null;
|
||||
|
||||
// Open a new tab to restore into.
|
||||
tab = gBrowser.addTab("about:blank");
|
||||
browser = tab.linkedBrowser;
|
||||
yield promiseTabState(tab, state);
|
||||
let sessionHistory = browser.sessionHistory;
|
||||
|
||||
is(sessionHistory.count, 1, "Should be a single history entry");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:blank", "Should be the right URL");
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
let sessionHistory = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsISHistory);
|
||||
|
||||
is(sessionHistory.count, 1, "Should be a single history entry");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:blank", "Should be the right URL");
|
||||
});
|
||||
|
||||
// Load a new URL into the tab, it should replace the about:blank history entry
|
||||
browser.loadURI("about:robots");
|
||||
yield promiseBrowserLoaded(browser);
|
||||
sessionHistory = browser.sessionHistory;
|
||||
is(sessionHistory.count, 1, "Should be a single history entry");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:robots", "Should be the right URL");
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
let sessionHistory = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsISHistory);
|
||||
is(sessionHistory.count, 1, "Should be a single history entry");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:robots", "Should be the right URL");
|
||||
});
|
||||
|
||||
// Cleanup.
|
||||
gBrowser.removeTab(tab);
|
||||
yield promiseRemoveTab(tab);
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -54,26 +62,32 @@ add_task(function* check_history_default_persisted() {
|
|||
yield TabStateFlusher.flush(browser);
|
||||
let state = JSON.parse(ss.getTabState(tab));
|
||||
delete state.entries[0].persist;
|
||||
gBrowser.removeTab(tab);
|
||||
yield promiseRemoveTab(tab);
|
||||
browser = null;
|
||||
|
||||
// Open a new tab to restore into.
|
||||
tab = gBrowser.addTab("about:blank");
|
||||
browser = tab.linkedBrowser;
|
||||
yield promiseTabState(tab, state);
|
||||
let sessionHistory = browser.sessionHistory;
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
let sessionHistory = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsISHistory);
|
||||
|
||||
is(sessionHistory.count, 1, "Should be a single history entry");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:blank", "Should be the right URL");
|
||||
is(sessionHistory.count, 1, "Should be a single history entry");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:blank", "Should be the right URL");
|
||||
});
|
||||
|
||||
// Load a new URL into the tab, it should replace the about:blank history entry
|
||||
browser.loadURI("about:robots");
|
||||
yield promiseBrowserLoaded(browser);
|
||||
sessionHistory = browser.sessionHistory;
|
||||
is(sessionHistory.count, 2, "Should be two history entries");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:blank", "Should be the right URL");
|
||||
is(sessionHistory.getEntryAtIndex(1, false).URI.spec, "about:robots", "Should be the right URL");
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
let sessionHistory = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsISHistory);
|
||||
is(sessionHistory.count, 2, "Should be two history entries");
|
||||
is(sessionHistory.getEntryAtIndex(0, false).URI.spec, "about:blank", "Should be the right URL");
|
||||
is(sessionHistory.getEntryAtIndex(1, false).URI.spec, "about:robots", "Should be the right URL");
|
||||
});
|
||||
|
||||
// Cleanup.
|
||||
gBrowser.removeTab(tab);
|
||||
yield promiseRemoveTab(tab);
|
||||
});
|
||||
|
|
|
@ -2909,8 +2909,7 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
|
|||
%include ../shared/notification-icons.inc.css
|
||||
|
||||
.notification-anchor-icon:-moz-focusring {
|
||||
box-shadow: 0 0 2px 1px -moz-mac-focusring inset,
|
||||
0 0 3px 2px -moz-mac-focusring;
|
||||
box-shadow: var(--focus-ring-box-shadow);
|
||||
}
|
||||
|
||||
/* Translation */
|
||||
|
|
|
@ -51,5 +51,3 @@
|
|||
#identity-popup-securityView-body > button:-moz-focusring {
|
||||
box-shadow: var(--focus-ring-box-shadow);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -264,6 +264,11 @@ checkbox:-moz-focusring {
|
|||
height: 16px;
|
||||
margin: 0 3px;
|
||||
transition: opacity 0.05s ease-in-out;
|
||||
|
||||
/* For text-as-image usage, match the SVG color */
|
||||
color: #0b0b0b;
|
||||
direction: ltr;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.devtools-button:empty::before {
|
||||
|
|
|
@ -602,18 +602,14 @@
|
|||
|
||||
#ruleview-add-rule-button::before {
|
||||
background-image: url("chrome://devtools/skin/images/add.svg");
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
#pseudo-class-panel-toggle::before {
|
||||
background-image: url("chrome://devtools/skin/images/pseudo-class.svg");
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
#class-panel-toggle::before {
|
||||
content: ".cls";
|
||||
direction: ltr;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.ruleview-overridden-rule-filter {
|
||||
|
|
|
@ -17,3 +17,4 @@
|
|||
* [Backend](backend.md)
|
||||
* [Protocol](protocol.md)
|
||||
* [Debugger API](debugger-api.md)
|
||||
* [Backward Compatibility](backward-compatibility.md)
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
# Backward Compatibility
|
||||
|
||||
## Overview
|
||||
|
||||
When making changes to the DevTools, there are certain backward compatibility requirements that we should keep in mind.
|
||||
|
||||
In general, we should strive to maintain feature support for existing servers as we continue to make changes to the code base. At times, this can be difficult to achieve, however.
|
||||
|
||||
## Specific Guidelines
|
||||
|
||||
The important compatibility scenarios are:
|
||||
|
||||
1. Nightly desktop client **MUST** maintain existing compatibility back to release channel servers.
|
||||
|
||||
This is mainly to simplify cross-platform use cases, i.e. desktop Nightly with release Fennec.
|
||||
|
||||
2. Servers **MAY** use traits to state a feature is not supported yet.
|
||||
|
||||
This helps us support alternate environments like the Valence adapter, which does not implement every possible server feature.
|
||||
|
||||
Certainly when a new feature needs a new actor method to function, it won't work with servers that don't support it. But we should still ensure the client doesn't explode when using unrelated, existing features, at least until the above time windows have elapsed.
|
||||
|
||||
## Testing
|
||||
|
||||
The harder part of this currently is that there is no automated testing to ensure the above guidelines have been met. While we hope to have this at some point, for now manual testing is needed here.
|
||||
|
||||
The easiest way to test this is to check your work against a Firefox for Android device on release channel and Valence to ensure existing features in the area you are changing continue to function. That doesn't cover every case, but it's a great start.
|
||||
|
||||
## Feature Detection
|
||||
|
||||
Starting with Firefox 36 (thanks to [bug 1069673](https://bugzilla.mozilla.org/show_bug.cgi?id=1069673)), you can use actor feature detection to determine which actors exist and what methods they expose.
|
||||
|
||||
1. Detecting if the server has an actor: all you need is access to the `Toolbox` instance, which all panels do, when they get instantiated. Then you can do:
|
||||
|
||||
```js
|
||||
let hasProfilerActor = toolbox.target.hasActor("profiler");
|
||||
```
|
||||
|
||||
The `hasActor` method returns a boolean synchronously.
|
||||
|
||||
2. Detecting if an actor has a given method: same thing here, you need access to the toolbox:
|
||||
|
||||
```js
|
||||
toolbox.target.actorHasMethod("domwalker", "duplicateNode").then(hasMethod => {
|
||||
|
||||
}).catch(e => console.error(e));
|
||||
```
|
||||
|
||||
The `actorHasMethod` returns a promise that resolves to a boolean.
|
||||
|
||||
## Removing old backward compatibility code
|
||||
|
||||
We used to support old Firefox OS servers (back to Gecko 28), we don't anymore. Does this mean we can remove compatibility traits for it?
|
||||
|
||||
Maybe. Keep in mind that we still want to support Firefox for Android back to release channel, so we still want to keep traits in general. That's a much smaller time window than we supported for Firefox OS, so it should allow for some simplification.
|
||||
|
||||
A number of our traits are used by Valence as flags to tell the client "that's not implemented yet", so those are important to keep to avoid breaking this use case.
|
||||
|
||||
The type of compatibility that could now be removed are things where the protocol semantics changed in some Gecko older than release channel and the trait is not useful for saying "I don't support feature X".
|
|
@ -1,9 +1,5 @@
|
|||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab("http://example.com");
|
||||
|
||||
tab.linkedBrowser.addEventListener("load", function() {
|
||||
add_task(function* test() {
|
||||
yield BrowserTestUtils.withNewTab({ gBrowser, url: "http://example.com" }, function* (browser) {
|
||||
let numLocationChanges = 0;
|
||||
|
||||
let listener = {
|
||||
|
@ -15,17 +11,16 @@ function test() {
|
|||
|
||||
gBrowser.addTabsProgressListener(listener);
|
||||
|
||||
// pushState to a new URL (http://example.com/foo"). This should trigger
|
||||
// exactly one LocationChange event.
|
||||
tab.linkedBrowser.contentWindow.history.pushState(null, null, "foo");
|
||||
|
||||
executeSoon(function() {
|
||||
gBrowser.removeTab(tab);
|
||||
gBrowser.removeTabsProgressListener(listener);
|
||||
is(numLocationChanges, 1,
|
||||
"pushState should cause exactly one LocationChange event.");
|
||||
finish();
|
||||
yield ContentTask.spawn(browser, null, function() {
|
||||
// pushState to a new URL (http://example.com/foo"). This should trigger
|
||||
// exactly one LocationChange event.
|
||||
content.history.pushState(null, null, "foo");
|
||||
});
|
||||
|
||||
}, {capture: true, once: true});
|
||||
}
|
||||
yield Promise.resolve();
|
||||
|
||||
gBrowser.removeTabsProgressListener(listener);
|
||||
is(numLocationChanges, 1,
|
||||
"pushState should cause exactly one LocationChange event.");
|
||||
});
|
||||
});
|
||||
|
|
|
@ -4580,6 +4580,17 @@ nsIPresShell::RestyleForCSSRuleChanges()
|
|||
mPresContext->RebuildCounterStyles();
|
||||
}
|
||||
|
||||
// Tell Servo that the contents of style sheets have changed.
|
||||
//
|
||||
// NB: It's important to do so before bailing out.
|
||||
//
|
||||
// Even if we have no frames, we can end up styling those when creating
|
||||
// them, and it's important for Servo to know that it needs to use the
|
||||
// correct styles.
|
||||
if (mStyleSet->IsServo()) {
|
||||
mStyleSet->AsServo()->NoteStyleSheetsChanged();
|
||||
}
|
||||
|
||||
Element* root = mDocument->GetRootElement();
|
||||
if (!mDidInitialize) {
|
||||
// Nothing to do here, since we have no frames yet
|
||||
|
@ -4593,11 +4604,6 @@ nsIPresShell::RestyleForCSSRuleChanges()
|
|||
|
||||
RestyleManager* restyleManager = mPresContext->RestyleManager();
|
||||
|
||||
if (mStyleSet->IsServo()) {
|
||||
// Tell Servo that the contents of style sheets have changed.
|
||||
mStyleSet->AsServo()->NoteStyleSheetsChanged();
|
||||
}
|
||||
|
||||
if (scopeRoots.IsEmpty()) {
|
||||
// If scopeRoots is empty, we know that mStylesHaveChanged was true at
|
||||
// the beginning of this function, and that we need to restyle the whole
|
||||
|
|
|
@ -1722,8 +1722,8 @@ fails == 731521-1.html 731521-1.html
|
|||
fails needs-focus == 731726-1.html 731726-1.html
|
||||
fails == 735481-1.html 735481-1.html
|
||||
== 745934-1.html 745934-1.html
|
||||
fails == 748692-1a.html 748692-1a.html
|
||||
fails == 748692-1b.html 748692-1b.html
|
||||
== 748692-1a.html 748692-1a.html
|
||||
== 748692-1b.html 748692-1b.html
|
||||
fails == 748803-1.html 748803-1.html
|
||||
== 750551-1.html 750551-1.html
|
||||
fails == 751012-1a.html 751012-1a.html
|
||||
|
|
|
@ -28,7 +28,7 @@ load 437170-1.html
|
|||
load 437532-1.html
|
||||
load 439184-1.html
|
||||
load 444237-1.html
|
||||
load 444848-1.html
|
||||
load 444848-1.html
|
||||
load 447776-1.html
|
||||
load 447783-1.html
|
||||
load 448161-1.html
|
||||
|
@ -76,7 +76,7 @@ load 621596-1.html
|
|||
skip-if(stylo) load 622314-1.xhtml # bug 1337695
|
||||
load 637242.xhtml
|
||||
load 645142.html
|
||||
fails-if(stylo) == 645951-1.html 645951-1-ref.html
|
||||
== 645951-1.html 645951-1-ref.html
|
||||
load 652976-1.svg
|
||||
load 665209-1.html
|
||||
load 671799-1.html
|
||||
|
@ -145,7 +145,7 @@ asserts-if(stylo,0-1) load 1264396-1.html # bug 1324677
|
|||
# layout.css.prefixes.webkit pref
|
||||
pref(layout.css.prefixes.webkit,false) load 1265611-1.html
|
||||
load border-image-visited-link.html
|
||||
load font-face-truncated-src.html
|
||||
load font-face-truncated-src.html
|
||||
load large_border_image_width.html
|
||||
load long-url-list-stack-overflow.html
|
||||
pref(layout.css.background-clip-text.enabled,true) load 1264949.html
|
||||
|
|
|
@ -63,7 +63,6 @@ Any line which doesn't follow the format above would be ignored like comment.
|
|||
* @import
|
||||
* test_bug221428.html [1]
|
||||
* @media
|
||||
* test_condition_text_assignment.html [1]
|
||||
* test_css_eof_handling.html [1]
|
||||
* test_group_insertRule.html [16]
|
||||
* test_rules_out_of_sheets.html [1]
|
||||
|
@ -448,7 +447,7 @@ Any line which doesn't follow the format above would be ignored like comment.
|
|||
* test_units_length.html [5]
|
||||
* test_units_time.html [1]
|
||||
* insertRule / deleteRule don't work bug 1336863
|
||||
* test_rule_insertion.html [8]
|
||||
* test_rule_insertion.html [7]
|
||||
* @-moz-document support
|
||||
* test_rule_serialization.html [2]
|
||||
* test_moz_document_rules.html [13]
|
||||
|
@ -458,6 +457,7 @@ Any line which doesn't follow the format above would be ignored like comment.
|
|||
* test_css_supports.html: issues around @supports syntax servo/servo#15482 [8]
|
||||
* test_author_specified_style.html: support serializing color as author specified [33]
|
||||
* browser_newtab_share_rule_processors.js: agent style sheet sharing [1]
|
||||
* test_selectors.html `this_better_be_unvisited`: visited handling [2]
|
||||
|
||||
## Assertions
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ function remoteResolveURI(uri) {
|
|||
var loadTestTab = Task.async(function*() {
|
||||
gBrowser.selectedTab = gBrowser.addTab(TEST_URL);
|
||||
let browser = gBrowser.selectedBrowser;
|
||||
yield waitForEvent(browser, "load", true);
|
||||
yield BrowserTestUtils.browserLoaded(browser);
|
||||
browser.messageManager.loadFrameScript("data:,(" + frameScript.toString() + ")();", true);
|
||||
return browser;
|
||||
});
|
||||
|
|
|
@ -1157,4 +1157,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
|||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1498057610195000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1498143261115000);
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include "cryptohi.h"
|
||||
#include "keyhi.h"
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDOMHTMLSelectElement.h"
|
||||
#include "nsIGenKeypairInfoDlg.h"
|
||||
|
@ -66,7 +65,7 @@ typedef struct curveNameTagPairStr {
|
|||
} CurveNameTagPair;
|
||||
|
||||
static CurveNameTagPair nameTagPair[] =
|
||||
{
|
||||
{
|
||||
{ "prime192v1", SEC_OID_ANSIX962_EC_PRIME192V1 },
|
||||
{ "prime192v2", SEC_OID_ANSIX962_EC_PRIME192V2 },
|
||||
{ "prime192v3", SEC_OID_ANSIX962_EC_PRIME192V3 },
|
||||
|
@ -157,7 +156,7 @@ DecodeECParams(const char* curve)
|
|||
|
||||
if (curve && *curve) {
|
||||
numCurves = sizeof(nameTagPair)/sizeof(CurveNameTagPair);
|
||||
for (i = 0; ((i < numCurves) && (curveOidTag == SEC_OID_UNKNOWN));
|
||||
for (i = 0; ((i < numCurves) && (curveOidTag == SEC_OID_UNKNOWN));
|
||||
i++) {
|
||||
if (PL_strcmp(curve, nameTagPair[i].curveName) == 0)
|
||||
curveOidTag = nameTagPair[i].curveOidTag;
|
||||
|
@ -165,7 +164,7 @@ DecodeECParams(const char* curve)
|
|||
}
|
||||
|
||||
/* Return nullptr if curve name is not recognized */
|
||||
if ((curveOidTag == SEC_OID_UNKNOWN) ||
|
||||
if ((curveOidTag == SEC_OID_UNKNOWN) ||
|
||||
(oidData = SECOID_FindOIDByTag(curveOidTag)) == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -176,9 +175,9 @@ DecodeECParams(const char* curve)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* ecparams->data needs to contain the ASN encoding of an object ID (OID)
|
||||
* representing the named curve. The actual OID is in
|
||||
* representing the named curve. The actual OID is in
|
||||
* oidData->oid.data so we simply prepend 0x06 and OID length
|
||||
*/
|
||||
ecparams->data[0] = SEC_ASN1_OBJECT_ID;
|
||||
|
@ -191,9 +190,9 @@ DecodeECParams(const char* curve)
|
|||
NS_IMPL_ISUPPORTS(nsKeygenFormProcessor, nsIFormProcessor)
|
||||
|
||||
nsKeygenFormProcessor::nsKeygenFormProcessor()
|
||||
{
|
||||
{
|
||||
m_ctx = new PipUIContext();
|
||||
}
|
||||
}
|
||||
|
||||
nsKeygenFormProcessor::~nsKeygenFormProcessor()
|
||||
{
|
||||
|
@ -307,7 +306,7 @@ GetSlotWithMechanism(uint32_t aMechanism, nsIInterfaceRequestor* m_ctx,
|
|||
*aSlot = nullptr;
|
||||
|
||||
// Get the slot
|
||||
slotList = PK11_GetAllTokens(MapGenMechToAlgoMech(aMechanism),
|
||||
slotList = PK11_GetAllTokens(MapGenMechToAlgoMech(aMechanism),
|
||||
true, true, m_ctx);
|
||||
if (!slotList || !slotList->head) {
|
||||
rv = NS_ERROR_FAILURE;
|
||||
|
@ -340,7 +339,7 @@ GetSlotWithMechanism(uint32_t aMechanism, nsIInterfaceRequestor* m_ctx,
|
|||
if (tokenNameList[i])
|
||||
i++;
|
||||
else {
|
||||
// OOM. adjust numSlots so we don't free unallocated memory.
|
||||
// OOM. adjust numSlots so we don't free unallocated memory.
|
||||
numSlots = i;
|
||||
PK11_FreeSlotListElement(slotList, slotElement);
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -394,54 +393,6 @@ loser:
|
|||
return rv;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
GatherKeygenTelemetry(uint32_t keyGenMechanism, int keysize, char* curve)
|
||||
{
|
||||
if (keyGenMechanism == CKM_RSA_PKCS_KEY_PAIR_GEN) {
|
||||
if (keysize > 8196 || keysize < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsCString telemetryValue("rsa");
|
||||
telemetryValue.AppendPrintf("%d", keysize);
|
||||
mozilla::Telemetry::Accumulate(
|
||||
mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, telemetryValue);
|
||||
} else if (keyGenMechanism == CKM_EC_KEY_PAIR_GEN) {
|
||||
nsCString secp384r1 = NS_LITERAL_CSTRING("secp384r1");
|
||||
nsCString secp256r1 = NS_LITERAL_CSTRING("secp256r1");
|
||||
|
||||
mozilla::UniqueSECItem decoded = DecodeECParams(curve);
|
||||
if (!decoded) {
|
||||
switch (keysize) {
|
||||
case 2048:
|
||||
mozilla::Telemetry::Accumulate(
|
||||
mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp384r1);
|
||||
break;
|
||||
case 1024:
|
||||
case 512:
|
||||
mozilla::Telemetry::Accumulate(
|
||||
mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp256r1);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (secp384r1.EqualsIgnoreCase(curve, secp384r1.Length())) {
|
||||
mozilla::Telemetry::Accumulate(
|
||||
mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp384r1);
|
||||
} else if (secp256r1.EqualsIgnoreCase(curve, secp256r1.Length())) {
|
||||
mozilla::Telemetry::Accumulate(
|
||||
mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp256r1);
|
||||
} else {
|
||||
mozilla::Telemetry::Accumulate(
|
||||
mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, NS_LITERAL_CSTRING("other_ec"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
MOZ_CRASH("Unknown keygen algorithm");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
||||
const nsAString& aChallenge,
|
||||
|
@ -525,17 +476,17 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
|||
params = &rsaParams;
|
||||
break;
|
||||
case CKM_EC_KEY_PAIR_GEN:
|
||||
/* XXX We ought to rethink how the KEYGEN tag is
|
||||
/* XXX We ought to rethink how the KEYGEN tag is
|
||||
* displayed. The pulldown selections presented
|
||||
* to the user must depend on the keytype.
|
||||
* The displayed selection could be picked
|
||||
* from the keyparams attribute (this is currently called
|
||||
* the pqg attribute).
|
||||
* For now, we pick ecparams from the keyparams field
|
||||
* if it specifies a valid supported curve, or else
|
||||
* if it specifies a valid supported curve, or else
|
||||
* we pick one of secp384r1, secp256r1 or secp192r1
|
||||
* respectively depending on the user's selection
|
||||
* (High, Medium, Low).
|
||||
* (High, Medium, Low).
|
||||
* (RSA uses RSA-2048, RSA-1024 and RSA-512 for historical
|
||||
* reasons, while ECC choices represent a stronger mapping)
|
||||
* NOTE: The user's selection
|
||||
|
@ -559,7 +510,7 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
|||
case 512:
|
||||
ecParams = DecodeECParams("secp256r1");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
MOZ_ASSERT(ecParams);
|
||||
params = ecParams.get();
|
||||
|
@ -616,7 +567,7 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (NS_FAILED(rv) || !privateKey) {
|
||||
goto loser;
|
||||
}
|
||||
|
@ -680,7 +631,6 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
|||
|
||||
rv = NS_OK;
|
||||
|
||||
GatherKeygenTelemetry(keyGenMechanism, keysize, keyparamsString);
|
||||
loser:
|
||||
if (srv != SECSuccess) {
|
||||
if ( privateKey ) {
|
||||
|
@ -729,12 +679,12 @@ nsKeygenFormProcessor::ExtractParams(nsIDOMHTMLElement* aElement,
|
|||
|
||||
aElement->GetAttribute(NS_LITERAL_STRING("pqg"),
|
||||
keyParamsValue);
|
||||
/* XXX We can still support the pqg attribute in the keygen
|
||||
* tag for backward compatibility while introducing a more
|
||||
/* XXX We can still support the pqg attribute in the keygen
|
||||
* tag for backward compatibility while introducing a more
|
||||
* general attribute named keyparams.
|
||||
*/
|
||||
if (keyParamsValue.IsEmpty()) {
|
||||
aElement->GetAttribute(NS_LITERAL_STRING("keyparams"),
|
||||
aElement->GetAttribute(NS_LITERAL_STRING("keyparams"),
|
||||
keyParamsValue);
|
||||
}
|
||||
|
||||
|
@ -751,7 +701,7 @@ nsKeygenFormProcessor::ProcessValue(nsIDOMHTMLElement* aElement,
|
|||
nsAutoString keyParamsValue;
|
||||
ExtractParams(aElement, challengeValue, keyTypeValue, keyParamsValue);
|
||||
|
||||
return GetPublicKey(aValue, challengeValue, keyTypeValue,
|
||||
return GetPublicKey(aValue, challengeValue, keyTypeValue,
|
||||
aValue, keyParamsValue);
|
||||
}
|
||||
|
||||
|
@ -770,7 +720,7 @@ nsresult
|
|||
nsKeygenFormProcessor::ProvideContent(const nsAString& aFormType,
|
||||
nsTArray<nsString>& aContent,
|
||||
nsAString& aAttribute)
|
||||
{
|
||||
{
|
||||
if (Compare(aFormType, NS_LITERAL_STRING("SELECT"),
|
||||
nsCaseInsensitiveStringComparator()) == 0) {
|
||||
|
||||
|
@ -780,5 +730,5 @@ nsKeygenFormProcessor::ProvideContent(const nsAString& aFormType,
|
|||
aAttribute.AssignLiteral("-mozilla-keygen");
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
020wifi.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
0g.org.uk: could not connect to host
|
||||
0p.no: did not receive HSTS header
|
||||
0x.cx: could not connect to host
|
||||
0x0a.net: could not connect to host
|
||||
0x1337.eu: could not connect to host
|
||||
0x44.net: did not receive HSTS header
|
||||
|
@ -28,7 +29,6 @@
|
|||
1xcess.com: did not receive HSTS header
|
||||
206rc.net: max-age too low: 2592000
|
||||
247loan.com: max-age too low: 0
|
||||
247quickbooks.com: did not receive HSTS header
|
||||
24hourpaint.com: could not connect to host
|
||||
25daysof.io: could not connect to host
|
||||
263.info: could not connect to host
|
||||
|
@ -38,7 +38,7 @@
|
|||
2or3.tk: could not connect to host
|
||||
2programmers.net: could not connect to host
|
||||
2smart4food.com: did not receive HSTS header
|
||||
2ss.jp: did not receive HSTS header
|
||||
2ss.jp: could not connect to host
|
||||
300651.ru: did not receive HSTS header
|
||||
300m.com: did not receive HSTS header
|
||||
301.website: could not connect to host
|
||||
|
@ -149,6 +149,7 @@ aether.pw: could not connect to host
|
|||
aevpn.net: could not connect to host
|
||||
aficotroceni.ro: did not receive HSTS header
|
||||
afp548.tk: could not connect to host
|
||||
afyou.co.kr: could not connect to host
|
||||
agalaxyfarfaraway.co.uk: could not connect to host
|
||||
agbremen.de: did not receive HSTS header
|
||||
agentseeker.ca: did not receive HSTS header
|
||||
|
@ -195,7 +196,7 @@ alittlebitcheeky.com: did not receive HSTS header
|
|||
aljaspod.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
alkami.com: did not receive HSTS header
|
||||
all-subtitles.com: did not receive HSTS header
|
||||
all.tf: did not receive HSTS header
|
||||
all.tf: could not connect to host
|
||||
alldaymonitoring.com: could not connect to host
|
||||
allforyou.at: could not connect to host
|
||||
allinnote.com: could not connect to host
|
||||
|
@ -397,7 +398,6 @@ axado.com.br: did not receive HSTS header
|
|||
axeny.com: did not receive HSTS header
|
||||
axg.io: could not connect to host
|
||||
az.search.yahoo.com: did not receive HSTS header
|
||||
azazy.net: max-age too low: 2592000
|
||||
azprep.us: could not connect to host
|
||||
azuxul.fr: could not connect to host
|
||||
b3orion.com: max-age too low: 0
|
||||
|
@ -411,7 +411,6 @@ babymasaze.cz: did not receive HSTS header
|
|||
babysaying.me: max-age too low: 6000
|
||||
bacchanallia.com: could not connect to host
|
||||
back-bone.nl: did not receive HSTS header
|
||||
bacon-monitoring.org: could not connect to host
|
||||
badcronjob.com: could not connect to host
|
||||
badenhard.eu: could not connect to host
|
||||
badkamergigant.com: could not connect to host
|
||||
|
@ -643,6 +642,7 @@ buildci.asia: could not connect to host
|
|||
buildify.co.za: could not connect to host
|
||||
buildsaver.co.za: did not receive HSTS header
|
||||
built.by: did not receive HSTS header
|
||||
bul3seas.eu: could not connect to host
|
||||
bullbits.com: could not connect to host
|
||||
bulletpoint.cz: could not connect to host
|
||||
bulmafox.com: could not connect to host
|
||||
|
@ -679,6 +679,7 @@ bysymphony.com: max-age too low: 0
|
|||
byte.wtf: did not receive HSTS header
|
||||
bytepark.de: did not receive HSTS header
|
||||
bytesund.biz: could not connect to host
|
||||
bzv-fr.eu: could not connect to host
|
||||
c1yd3i.me: could not connect to host
|
||||
c3b.info: could not connect to host
|
||||
cabarave.com: could not connect to host
|
||||
|
@ -706,7 +707,6 @@ cancelmyprofile.com: did not receive HSTS header
|
|||
candicontrols.com: did not receive HSTS header
|
||||
candratech.com: could not connect to host
|
||||
candylion.rocks: could not connect to host
|
||||
canfly.org: could not connect to host
|
||||
cannyfoxx.me: could not connect to host
|
||||
canyonshoa.com: did not receive HSTS header
|
||||
capecycles.co.za: did not receive HSTS header
|
||||
|
@ -737,7 +737,7 @@ casino-cashflow.ru: did not receive HSTS header
|
|||
casinostest.com: did not receive HSTS header
|
||||
casioshop.eu: could not connect to host
|
||||
casovi.cf: could not connect to host
|
||||
catarsisvr.com: did not receive HSTS header
|
||||
catarsisvr.com: could not connect to host
|
||||
catinmay.com: could not connect to host
|
||||
catnapstudios.com: could not connect to host
|
||||
caveclan.org: did not receive HSTS header
|
||||
|
@ -767,6 +767,7 @@ cesidianroot.eu: could not connect to host
|
|||
cevrimici.com: could not connect to host
|
||||
cfcproperties.com: did not receive HSTS header
|
||||
cfetengineering.com: could not connect to host
|
||||
cfoitplaybook.com: could not connect to host
|
||||
cg.search.yahoo.com: did not receive HSTS header
|
||||
chainmonitor.com: could not connect to host
|
||||
championsofregnum.com: did not receive HSTS header
|
||||
|
@ -780,6 +781,7 @@ charityclear.com: did not receive HSTS header
|
|||
charnleyhouse.co.uk: max-age too low: 604800
|
||||
chartpen.com: did not receive HSTS header
|
||||
chartstoffarm.de: did not receive HSTS header
|
||||
chat-porc.eu: could not connect to host
|
||||
chatbot.me: did not receive HSTS header
|
||||
chateauconstellation.ch: did not receive HSTS header
|
||||
chatme.im: did not receive HSTS header
|
||||
|
@ -819,7 +821,6 @@ chrisupjohn.com: could not connect to host
|
|||
chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
|
||||
chrome.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
chroniclesofgeorge.com: did not receive HSTS header
|
||||
chrst.ph: could not connect to host
|
||||
chua.cf: could not connect to host
|
||||
chulado.com: did not receive HSTS header
|
||||
cidr.ml: could not connect to host
|
||||
|
@ -837,7 +838,6 @@ clara-baumert.de: could not connect to host
|
|||
classicsandexotics.com: did not receive HSTS header
|
||||
classicspublishing.com: could not connect to host
|
||||
clcleaningco.com: could not connect to host
|
||||
cldly.com: could not connect to host
|
||||
cleanexperts.co.uk: could not connect to host
|
||||
cleaningsquad.ca: max-age too low: 0
|
||||
cleanmta.com: could not connect to host
|
||||
|
@ -852,7 +852,6 @@ clint.id.au: max-age too low: 0
|
|||
clintonbloodworth.com: did not receive HSTS header
|
||||
clintonbloodworth.io: could not connect to host
|
||||
clintwilson.technology: max-age too low: 2592000
|
||||
clipped4u.com: could not connect to host
|
||||
cloud.wtf: could not connect to host
|
||||
cloudapi.vc: could not connect to host
|
||||
cloudcert.org: did not receive HSTS header
|
||||
|
@ -860,14 +859,12 @@ cloudcy.net: could not connect to host
|
|||
clouddesktop.co.nz: could not connect to host
|
||||
cloudey.net: did not receive HSTS header
|
||||
cloudflare.com: did not receive HSTS header
|
||||
cloudia.org: could not connect to host
|
||||
cloudimag.es: could not connect to host
|
||||
cloudlink.club: could not connect to host
|
||||
cloudns.com.au: could not connect to host
|
||||
cloudspotterapp.com: did not receive HSTS header
|
||||
cloudstoragemaus.com: could not connect to host
|
||||
cloudstorm.me: could not connect to host
|
||||
cloudup.com: did not receive HSTS header
|
||||
cloudwalk.io: did not receive HSTS header
|
||||
cloverleaf.net: max-age too low: 0
|
||||
clubmate.rocks: could not connect to host
|
||||
|
@ -901,7 +898,6 @@ codelayer.ca: could not connect to host
|
|||
codelitmus.com: did not receive HSTS header
|
||||
codemonkeyrawks.net: could not connect to host
|
||||
codepoet.de: could not connect to host
|
||||
codepult.com: could not connect to host
|
||||
codepx.com: did not receive HSTS header
|
||||
codewild.de: could not connect to host
|
||||
codewiththepros.org: could not connect to host
|
||||
|
@ -922,7 +918,6 @@ coloradocomputernetworking.net: could not connect to host
|
|||
combron.nl: did not receive HSTS header
|
||||
comfortdom.ua: did not receive HSTS header
|
||||
comfortticket.de: did not receive HSTS header
|
||||
comfy.moe: did not receive HSTS header
|
||||
comicspines.com: could not connect to host
|
||||
comotalk.com: could not connect to host
|
||||
compalytics.com: could not connect to host
|
||||
|
@ -1000,10 +995,9 @@ crypt.guru: could not connect to host
|
|||
crypticshell.co.uk: could not connect to host
|
||||
cryptify.eu: could not connect to host
|
||||
cryptobin.org: could not connect to host
|
||||
cryptojar.io: could not connect to host
|
||||
cryptojar.io: did not receive HSTS header
|
||||
cryptolab.pro: could not connect to host
|
||||
cryptolab.tk: could not connect to host
|
||||
cryptoparty.at: could not connect to host
|
||||
cryptopartyatx.org: could not connect to host
|
||||
cryptopush.com: did not receive HSTS header
|
||||
crysadm.com: max-age too low: 1
|
||||
|
@ -1011,6 +1005,7 @@ crystalclassics.co.uk: did not receive HSTS header
|
|||
csapak.com: could not connect to host
|
||||
csawctf.poly.edu: could not connect to host
|
||||
csfs.org.uk: could not connect to host
|
||||
csgf.ru: did not receive HSTS header
|
||||
csgodicegame.com: did not receive HSTS header
|
||||
csgoelemental.com: could not connect to host
|
||||
csgokings.eu: could not connect to host
|
||||
|
@ -1052,7 +1047,7 @@ dah5.com: did not receive HSTS header
|
|||
dailystormerpodcasts.com: did not receive HSTS header
|
||||
daimadi.com: could not connect to host
|
||||
dakrib.net: could not connect to host
|
||||
daku.gdn: could not connect to host
|
||||
daku.gdn: did not receive HSTS header
|
||||
dalfiume.it: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
dalingk.co: could not connect to host
|
||||
damedrogy.cz: could not connect to host
|
||||
|
@ -1158,6 +1153,7 @@ detector.exposed: could not connect to host
|
|||
detest.org: could not connect to host
|
||||
dethemium.com: could not connect to host
|
||||
deuxvia.com: could not connect to host
|
||||
devafterdark.com: could not connect to host
|
||||
devcu.com: could not connect to host
|
||||
devcu.net: could not connect to host
|
||||
devincrow.me: could not connect to host
|
||||
|
@ -1170,6 +1166,7 @@ dhome.at: did not receive HSTS header
|
|||
dhpcs.com: did not receive HSTS header
|
||||
dhpiggott.net: did not receive HSTS header
|
||||
diablotine.rocks: could not connect to host
|
||||
diagnostix.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
diarbag.us: could not connect to host
|
||||
diasp.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
die-partei-reutlingen.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
|
@ -1184,7 +1181,6 @@ digitalriver.tk: could not connect to host
|
|||
digitalskillswap.com: could not connect to host
|
||||
dim.lighting: could not connect to host
|
||||
dinamoelektrik.com: max-age too low: 0
|
||||
dingcc.com: did not receive HSTS header
|
||||
dinkum.online: could not connect to host
|
||||
discoveringdocker.com: did not receive HSTS header
|
||||
discovery.lookout.com: did not receive HSTS header
|
||||
|
@ -1213,6 +1209,7 @@ do-do.tk: could not connect to host
|
|||
do.gd: could not connect to host
|
||||
do.search.yahoo.com: did not receive HSTS header
|
||||
dobet.in: could not connect to host
|
||||
dobrev.family: could not connect to host
|
||||
docid.io: could not connect to host
|
||||
docket.news: could not connect to host
|
||||
docset.io: could not connect to host
|
||||
|
@ -1269,7 +1266,6 @@ ds-christiansen.de: did not receive HSTS header
|
|||
dshiv.io: could not connect to host
|
||||
dubrovskiy.net: could not connect to host
|
||||
dubrovskiy.pro: could not connect to host
|
||||
duelysthub.com: could not connect to host
|
||||
duesee.org: could not connect to host
|
||||
dullsir.com: did not receive HSTS header
|
||||
dutchessuganda.com: did not receive HSTS header
|
||||
|
@ -1321,7 +1317,6 @@ edk.com.tr: did not receive HSTS header
|
|||
edmodo.com: did not receive HSTS header
|
||||
edp-collaborative.com: max-age too low: 2500
|
||||
eduvance.in: did not receive HSTS header
|
||||
edwards.me.uk: could not connect to host
|
||||
effectiveosgi.com: could not connect to host
|
||||
efficienthealth.com: did not receive HSTS header
|
||||
effortlesshr.com: did not receive HSTS header
|
||||
|
@ -1333,7 +1328,6 @@ ehito.ovh: could not connect to host
|
|||
ehrenamt-skpfcw.de: could not connect to host
|
||||
eicfood.com: could not connect to host
|
||||
eidolonhost.com: did not receive HSTS header
|
||||
eisp.it: could not connect to host
|
||||
ekbanden.nl: could not connect to host
|
||||
elaintehtaat.fi: did not receive HSTS header
|
||||
elan-organics.com: did not receive HSTS header
|
||||
|
@ -1351,7 +1345,7 @@ elenoon.ir: did not receive HSTS header
|
|||
elgacien.de: could not connect to host
|
||||
elimdengelen.com: did not receive HSTS header
|
||||
elitefishtank.com: could not connect to host
|
||||
elnutricionista.es: did not receive HSTS header
|
||||
elnutricionista.es: could not connect to host
|
||||
eloanpersonal.com: max-age too low: 0
|
||||
elpo.xyz: could not connect to host
|
||||
elsamakhin.com: could not connect to host
|
||||
|
@ -1381,7 +1375,6 @@ enefan.jp: could not connect to host
|
|||
enersec.co.uk: could not connect to host
|
||||
engelwerbung.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
engg.ca: could not connect to host
|
||||
enginepit.com: could not connect to host
|
||||
enginsight.com: did not receive HSTS header
|
||||
enigmacpt.com: did not receive HSTS header
|
||||
enigmail.net: did not receive HSTS header
|
||||
|
@ -1445,7 +1438,6 @@ eulerpi.io: could not connect to host
|
|||
eupho.me: could not connect to host
|
||||
euroshop24.net: could not connect to host
|
||||
evafojtova.cz: did not receive HSTS header
|
||||
evalesc.com: could not connect to host
|
||||
evantage.org: could not connect to host
|
||||
evdenevenakliyatankara.pw: did not receive HSTS header
|
||||
everybooks.com: max-age too low: 60
|
||||
|
@ -1502,6 +1494,7 @@ familie-zimmermann.at: could not connect to host
|
|||
familjenm.se: could not connect to host
|
||||
fanyl.cn: could not connect to host
|
||||
farhadexchange.com: did not receive HSTS header
|
||||
farhood.org: did not receive HSTS header
|
||||
fashioncare.cz: did not receive HSTS header
|
||||
fasset.jp: could not connect to host
|
||||
fastograph.com: could not connect to host
|
||||
|
@ -1557,6 +1550,7 @@ fitiapp.com: could not connect to host
|
|||
fitnesswerk.de: could not connect to host
|
||||
five.vn: did not receive HSTS header
|
||||
fivestarsitters.com: did not receive HSTS header
|
||||
fivezerocreative.com: did not receive HSTS header
|
||||
fixatom.com: did not receive HSTS header
|
||||
fixingdns.com: did not receive HSTS header
|
||||
fj.search.yahoo.com: did not receive HSTS header
|
||||
|
@ -1630,7 +1624,7 @@ freesounding.ru: could not connect to host
|
|||
freethought.org.au: could not connect to host
|
||||
freeutopia.org: did not receive HSTS header
|
||||
frenzel.dk: could not connect to host
|
||||
freqlabs.com: could not connect to host
|
||||
freqlabs.com: did not receive HSTS header
|
||||
freshfind.xyz: could not connect to host
|
||||
freshlymind.com: did not receive HSTS header
|
||||
fretscha.com: could not connect to host
|
||||
|
@ -1658,7 +1652,6 @@ furiffic.com: did not receive HSTS header
|
|||
furnation.com: could not connect to host
|
||||
furry.be: max-age too low: 86400
|
||||
fusedrops.com: could not connect to host
|
||||
fushee.com: could not connect to host
|
||||
fusionmate.com: could not connect to host
|
||||
futbol11.com: did not receive HSTS header
|
||||
futurenda.com: could not connect to host
|
||||
|
@ -1678,7 +1671,6 @@ g5led.nl: could not connect to host
|
|||
gabber.scot: could not connect to host
|
||||
gaelleetarnaud.com: did not receive HSTS header
|
||||
gafachi.com: could not connect to host
|
||||
gaiserik.com: could not connect to host
|
||||
gakkainavi.jp: did not receive HSTS header
|
||||
gakkainavi4.com: could not connect to host
|
||||
gakkainavi4.net: did not receive HSTS header
|
||||
|
@ -1715,7 +1707,7 @@ geekcast.co.uk: did not receive HSTS header
|
|||
geeky.software: could not connect to host
|
||||
geli-graphics.com: did not receive HSTS header
|
||||
gem-indonesia.net: could not connect to host
|
||||
gendrin.com: could not connect to host
|
||||
gensonline.eu: could not connect to host
|
||||
genuu.com: could not connect to host
|
||||
genuxation.com: could not connect to host
|
||||
genyaa.com: could not connect to host
|
||||
|
@ -1751,7 +1743,6 @@ getremembrall.com: could not connect to host
|
|||
getsello.com: could not connect to host
|
||||
getwashdaddy.com: could not connect to host
|
||||
gfm.tech: could not connect to host
|
||||
gfournier.ca: could not connect to host
|
||||
gfwsb.ml: could not connect to host
|
||||
ggss.ml: could not connect to host
|
||||
gh16.com.ar: could not connect to host
|
||||
|
@ -1847,6 +1838,7 @@ gresb.com: did not receive HSTS header
|
|||
gribani.com: could not connect to host
|
||||
grigalanzsoftware.com: could not connect to host
|
||||
gripopgriep.net: could not connect to host
|
||||
groetzner.net: could not connect to host
|
||||
grossmann.gr: could not connect to host
|
||||
groups.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
grunex.com: did not receive HSTS header
|
||||
|
@ -1862,7 +1854,6 @@ gtlfsonlinepay.com: did not receive HSTS header
|
|||
gtraxapp.com: could not connect to host
|
||||
gts-schulsoftware.de: did not receive HSTS header
|
||||
guava.studio: did not receive HSTS header
|
||||
guge.gq: could not connect to host
|
||||
gugga.dk: did not receive HSTS header
|
||||
guilde-vindicta.fr: did not receive HSTS header
|
||||
gulenet.com: could not connect to host
|
||||
|
@ -1870,8 +1861,6 @@ gunnarhafdal.com: did not receive HSTS header
|
|||
gurom.lv: could not connect to host
|
||||
gurusupe.com: could not connect to host
|
||||
guso.gq: could not connect to host
|
||||
guso.ml: could not connect to host
|
||||
guso.tech: could not connect to host
|
||||
gussi.is: did not receive HSTS header
|
||||
gvt2.com: could not connect to host (error ignored - included regardless)
|
||||
gvt3.com: could not connect to host (error ignored - included regardless)
|
||||
|
@ -1897,6 +1886,7 @@ hackest.org: did not receive HSTS header
|
|||
hackit.im: could not connect to host
|
||||
hadzic.co: could not connect to host
|
||||
haeckdesign.com: did not receive HSTS header
|
||||
haeckl.eu: could not connect to host
|
||||
hahayidu.org: could not connect to host
|
||||
haitschi.com: could not connect to host
|
||||
haitschi.de: could not connect to host
|
||||
|
@ -1907,12 +1897,11 @@ haku.moe: could not connect to host
|
|||
hakugin.org: could not connect to host
|
||||
halo.red: could not connect to host
|
||||
hancc.net: could not connect to host
|
||||
handiworker.com: could not connect to host
|
||||
hanfu.la: could not connect to host
|
||||
hang333.pw: did not receive HSTS header
|
||||
hanimalis.fr: could not connect to host
|
||||
hansen.hn: could not connect to host
|
||||
hao2taiwan.com: max-age too low: 0
|
||||
hao2taiwan.com: could not connect to host
|
||||
haoyugao.com: could not connect to host
|
||||
hapijs.cn: could not connect to host
|
||||
hapissl.com: could not connect to host
|
||||
|
@ -1963,7 +1952,6 @@ hemdal.se: could not connect to host
|
|||
hencagon.com: could not connect to host
|
||||
henriknoerr.com: could not connect to host
|
||||
henry.gg: could not connect to host
|
||||
hermes-net.de: could not connect to host
|
||||
herrenfahrt.com: did not receive HSTS header
|
||||
herzbotschaft.de: did not receive HSTS header
|
||||
heutger.net: did not receive HSTS header
|
||||
|
@ -1985,6 +1973,7 @@ hilnu.tk: could not connect to host
|
|||
hipercultura.com: did not receive HSTS header
|
||||
hiphopconvention.nl: could not connect to host
|
||||
hirake55.com: could not connect to host
|
||||
historia-arte.com: did not receive HSTS header
|
||||
hitoy.org: did not receive HSTS header
|
||||
hittipps.com: did not receive HSTS header
|
||||
hlyue.com: did not receive HSTS header
|
||||
|
@ -2047,6 +2036,7 @@ hydra.ws: could not connect to host
|
|||
hydronium.cf: could not connect to host
|
||||
hydronium.ga: could not connect to host
|
||||
hydronium.me: could not connect to host
|
||||
hydronium.ml: could not connect to host
|
||||
hydronium.tk: could not connect to host
|
||||
hyper69.com: did not receive HSTS header
|
||||
i-jp.net: could not connect to host
|
||||
|
@ -2111,6 +2101,7 @@ immoprotect.ca: did not receive HSTS header
|
|||
immortals-co.com: did not receive HSTS header
|
||||
immoverkauf24.at: did not receive HSTS header
|
||||
immoverkauf24.de: did not receive HSTS header
|
||||
immunicity.eu: could not connect to host
|
||||
immunicity.info: could not connect to host
|
||||
immunicity.press: could not connect to host
|
||||
immunicity.today: did not receive HSTS header
|
||||
|
@ -2119,7 +2110,6 @@ immunicity.works: did not receive HSTS header
|
|||
immunicity.world: did not receive HSTS header
|
||||
imolug.org: did not receive HSTS header
|
||||
imouto.my: max-age too low: 5184000
|
||||
imouyang.com: did not receive HSTS header
|
||||
imperialwebsolutions.com: did not receive HSTS header
|
||||
imu.li: did not receive HSTS header
|
||||
imusic.dk: did not receive HSTS header
|
||||
|
@ -2137,6 +2127,7 @@ infinitusgaming.eu: could not connect to host
|
|||
inflation.ml: could not connect to host
|
||||
infogrfx.com: did not receive HSTS header
|
||||
infosec.rip: could not connect to host
|
||||
infosoph.org: did not receive HSTS header
|
||||
infotics.es: did not receive HSTS header
|
||||
injigo.com: did not receive HSTS header
|
||||
inkable.com.au: did not receive HSTS header
|
||||
|
@ -2160,14 +2151,12 @@ institutoflordelavida.com: could not connect to host
|
|||
intel.li: could not connect to host
|
||||
interference.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
interlun.com: could not connect to host
|
||||
internect.co.za: did not receive HSTS header
|
||||
internetcasinos.de: could not connect to host
|
||||
internetcensus.org: could not connect to host
|
||||
interserved.com: did not receive HSTS header
|
||||
intex.es: max-age too low: 0
|
||||
intim-uslugi-kazan.net: could not connect to host
|
||||
intimtoy.com.ua: could not connect to host
|
||||
intocities.de: could not connect to host
|
||||
intranetsec.fr: could not connect to host
|
||||
intrp.net: did not receive HSTS header
|
||||
inverselink-user-content.com: could not connect to host
|
||||
|
@ -2175,7 +2164,6 @@ inverselink.com: could not connect to host
|
|||
invictusmc.uk: did not receive HSTS header
|
||||
invite24.pro: could not connect to host
|
||||
inwesttitle.com: max-age too low: 0
|
||||
ioiart.eu: could not connect to host
|
||||
ionx.co.uk: did not receive HSTS header
|
||||
iop.intuit.com: max-age too low: 86400
|
||||
iora.fr: could not connect to host
|
||||
|
@ -2203,6 +2191,7 @@ iseek.biz: max-age too low: 0
|
|||
ishillaryclintoninprisonyet.com: could not connect to host
|
||||
isitamor.pm: could not connect to host
|
||||
iskaz.rs: did not receive HSTS header
|
||||
isntall.us: could not connect to host
|
||||
isogram.nl: could not connect to host
|
||||
israkurort.com: did not receive HSTS header
|
||||
isslshop.com: could not connect to host
|
||||
|
@ -2227,7 +2216,6 @@ ivi-fertility.com: max-age too low: 0
|
|||
ivi.es: max-age too low: 0
|
||||
ivk.website: could not connect to host
|
||||
ivo.co.za: could not connect to host
|
||||
ixec2.tk: could not connect to host
|
||||
izdiwho.com: could not connect to host
|
||||
izolight.ch: could not connect to host
|
||||
izoox.com: did not receive HSTS header
|
||||
|
@ -2265,6 +2253,7 @@ janus-engineering.de: did not receive HSTS header
|
|||
japlex.com: could not connect to host
|
||||
jaqen.ch: could not connect to host
|
||||
jardins-utopie.net: could not connect to host
|
||||
jaredfernandez.com: could not connect to host
|
||||
jaroslavtrsek.cz: did not receive HSTS header
|
||||
jarsater.com: could not connect to host
|
||||
jartza.org: could not connect to host
|
||||
|
@ -2327,15 +2316,18 @@ jollausers.de: could not connect to host
|
|||
jonas-keidel.de: did not receive HSTS header
|
||||
jonasgroth.se: did not receive HSTS header
|
||||
jonathan.ir: could not connect to host
|
||||
jondarby.com: did not receive HSTS header
|
||||
jonn.me: could not connect to host
|
||||
joostbovee.nl: did not receive HSTS header
|
||||
jordanhamilton.me: could not connect to host
|
||||
joretapo.fr: did not receive HSTS header
|
||||
jornane.me: could not connect to host
|
||||
josahrens.me: could not connect to host
|
||||
joshi.su: could not connect to host
|
||||
joshstroup.me: could not connect to host
|
||||
jottit.com: could not connect to host
|
||||
jpbike.cz: could not connect to host
|
||||
jpcdi.com: could not connect to host
|
||||
jrc9.ca: did not receive HSTS header
|
||||
jrgold.me: could not connect to host
|
||||
jrmd.io: could not connect to host
|
||||
|
@ -2365,6 +2357,7 @@ k-dev.de: could not connect to host
|
|||
ka-clan.com: could not connect to host
|
||||
kabinapp.com: could not connect to host
|
||||
kabuabc.com: did not receive HSTS header
|
||||
kabus.org: could not connect to host
|
||||
kadioglumakina.com.tr: did not receive HSTS header
|
||||
kaela.design: could not connect to host
|
||||
kahopoon.net: could not connect to host
|
||||
|
@ -2374,6 +2367,7 @@ kaneo-gmbh.de: did not receive HSTS header
|
|||
kaplatz.is: could not connect to host
|
||||
kapucini.si: max-age too low: 0
|
||||
karaoketonight.com: could not connect to host
|
||||
karhm.com: could not connect to host
|
||||
karhukamera.com: could not connect to host
|
||||
kasilag.me: did not receive HSTS header
|
||||
katiaetdavid.fr: could not connect to host
|
||||
|
@ -2469,6 +2463,7 @@ krayx.com: could not connect to host
|
|||
kreavis.com: did not receive HSTS header
|
||||
kredite.sale: could not connect to host
|
||||
kriegt.es: did not receive HSTS header
|
||||
kristikala.nl: could not connect to host
|
||||
krizevci.info: did not receive HSTS header
|
||||
kroetenfuchs.de: could not connect to host
|
||||
kropkait.pl: could not connect to host
|
||||
|
@ -2501,7 +2496,7 @@ kz.search.yahoo.com: did not receive HSTS header
|
|||
kzjnet.com: could not connect to host
|
||||
l2guru.ru: could not connect to host
|
||||
labaia.info: could not connect to host
|
||||
labina.com.tr: did not receive HSTS header
|
||||
labina.com.tr: could not connect to host
|
||||
laboiteapc.fr: did not receive HSTS header
|
||||
labordata.io: did not receive HSTS header
|
||||
laborie.io: could not connect to host
|
||||
|
@ -2542,7 +2537,6 @@ leadership9.com: could not connect to host
|
|||
leardev.de: did not receive HSTS header
|
||||
learnfrenchfluently.com: did not receive HSTS header
|
||||
learningorder.com: could not connect to host
|
||||
lebal.se: did not receive HSTS header
|
||||
lechiennoir.net: did not receive HSTS header
|
||||
ledgerscope.net: could not connect to host
|
||||
leermotorrijden.nl: max-age too low: 300
|
||||
|
@ -2671,7 +2665,7 @@ lt.search.yahoo.com: did not receive HSTS header
|
|||
ltbytes.com: could not connect to host
|
||||
lu.search.yahoo.com: did not receive HSTS header
|
||||
lucaterzini.com: could not connect to host
|
||||
ludwiggrill.de: could not connect to host
|
||||
ludwiggrill.de: did not receive HSTS header
|
||||
lufthansaexperts.com: max-age too low: 2592000
|
||||
luine.xyz: did not receive HSTS header
|
||||
luis-checa.com: could not connect to host
|
||||
|
@ -2746,7 +2740,6 @@ mansion-note.com: did not receive HSTS header
|
|||
maomaofuli.vip: could not connect to host
|
||||
maple5.com: did not receive HSTS header
|
||||
marchagen.nl: did not receive HSTS header
|
||||
marcoececilia.it: could not connect to host
|
||||
marcofinke.de: could not connect to host
|
||||
marcontrol.com: did not receive HSTS header
|
||||
marcosteixeira.tk: could not connect to host
|
||||
|
@ -3040,7 +3033,6 @@ mypension.ca: could not connect to host
|
|||
myphonebox.de: could not connect to host
|
||||
mysecretrewards.com: did not receive HSTS header
|
||||
mystery-science-theater-3000.de: did not receive HSTS header
|
||||
mythslegendscollection.com: did not receive HSTS header
|
||||
mytweeps.com: could not connect to host
|
||||
myvirtualserver.com: max-age too low: 2592000
|
||||
myzone.com: did not receive HSTS header
|
||||
|
@ -3090,6 +3082,7 @@ near.st: did not receive HSTS header
|
|||
nedzad.me: could not connect to host
|
||||
neels.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
neftaly.com: did not receive HSTS header
|
||||
negai.moe: could not connect to host
|
||||
neilgreen.net: did not receive HSTS header
|
||||
neko-life.com: did not receive HSTS header
|
||||
neko-system.com: did not receive HSTS header
|
||||
|
@ -3116,12 +3109,12 @@ neuronfactor.com: [Exception... "Component returned failure code: 0x80004005 (NS
|
|||
neutralox.com: did not receive HSTS header
|
||||
never-afk.de: did not receive HSTS header
|
||||
neveta.com: could not connect to host
|
||||
new.travel.pl: did not receive HSTS header
|
||||
newcitygas.ca: max-age too low: 0
|
||||
newgenerationplus.org: could not connect to host
|
||||
newhdmovies.io: did not receive HSTS header
|
||||
newkaliningrad.ru: did not receive HSTS header
|
||||
newlooknow.com: did not receive HSTS header
|
||||
newmelalife.com: did not receive HSTS header
|
||||
newportpropertygroup.com: could not connect to host
|
||||
newtonwarp.com: could not connect to host
|
||||
nextcloud.org: could not connect to host
|
||||
|
@ -3244,12 +3237,11 @@ ochaken.cf: could not connect to host
|
|||
odin.xxx: did not receive HSTS header
|
||||
odinoffice.no: did not receive HSTS header
|
||||
oe8.bet: could not connect to host
|
||||
oeko-bundesfreiwilligendienst-sh.de: did not receive HSTS header
|
||||
oeko-bundesfreiwilligendienst.de: did not receive HSTS header
|
||||
ofcourselanguages.com: could not connect to host
|
||||
offenedialoge.de: max-age too low: 2592000
|
||||
offshore-firma.org: could not connect to host
|
||||
ogogoshop.com: could not connect to host
|
||||
oguya.ch: could not connect to host
|
||||
oishioffice.com: did not receive HSTS header
|
||||
okane.love: could not connect to host
|
||||
okok-rent.com: could not connect to host
|
||||
|
@ -3260,6 +3252,7 @@ oldoakflorist.com: could not connect to host
|
|||
oliverdunk.com: did not receive HSTS header
|
||||
ollehbizev.co.kr: could not connect to host
|
||||
ollie.io: did not receive HSTS header
|
||||
ollies.cloud: could not connect to host
|
||||
omacostudio.com: could not connect to host
|
||||
omgaanmetidealen.com: could not connect to host
|
||||
ominto.com: max-age too low: 0
|
||||
|
@ -3361,7 +3354,6 @@ owncloud.help: could not connect to host
|
|||
ownmovies.fr: could not connect to host
|
||||
oxygenabsorbers.com: did not receive HSTS header
|
||||
oxynux.fr: could not connect to host
|
||||
oxynux.xyz: could not connect to host
|
||||
p.linode.com: could not connect to host
|
||||
p8r.de: could not connect to host
|
||||
pa.search.yahoo.com: did not receive HSTS header
|
||||
|
@ -3458,7 +3450,7 @@ pet-nsk.ru: could not connect to host
|
|||
petchart.net: could not connect to host
|
||||
petit.site: could not connect to host
|
||||
petplum.com: did not receive HSTS header
|
||||
petrachuk.ru: did not receive HSTS header
|
||||
petrachuk.ru: could not connect to host
|
||||
petravdbos.nl: did not receive HSTS header
|
||||
petrolplus.ru: did not receive HSTS header
|
||||
petrovsky.pro: could not connect to host
|
||||
|
@ -3466,7 +3458,6 @@ petsittersservices.com: could not connect to host
|
|||
pettsy.com: could not connect to host
|
||||
pewboards.com: could not connect to host
|
||||
pexieapp.com: did not receive HSTS header
|
||||
peytonfarrar.com: did not receive HSTS header
|
||||
pflege.de: did not receive HSTS header
|
||||
pgpm.io: could not connect to host
|
||||
pharmgkb.org: could not connect to host
|
||||
|
@ -3476,7 +3467,6 @@ phoebe.co.nz: did not receive HSTS header
|
|||
phonenumberinfo.co.uk: could not connect to host
|
||||
phongmay24h.com: could not connect to host
|
||||
photoblogverona.com: could not connect to host
|
||||
phoxmeh.com: could not connect to host
|
||||
php-bach.org: could not connect to host
|
||||
phpfashion.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
phryanjr.com: could not connect to host
|
||||
|
@ -3516,7 +3506,7 @@ planpharmacy.com: could not connect to host
|
|||
platform.lookout.com: could not connect to host
|
||||
play.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
playflick.com: did not receive HSTS header
|
||||
playkh.com: did not receive HSTS header
|
||||
playkh.com: could not connect to host
|
||||
playmaker.io: could not connect to host
|
||||
playmyplay.com: did not receive HSTS header
|
||||
playnation.io: could not connect to host
|
||||
|
@ -3551,12 +3541,12 @@ polypho.nyc: could not connect to host
|
|||
pompompoes.com: could not connect to host
|
||||
pontualcomp.com: max-age too low: 2592000
|
||||
poolsandstuff.com: did not receive HSTS header
|
||||
poolvilla-margarita.net: could not connect to host
|
||||
poon.tech: could not connect to host
|
||||
porno-gif.ru: did not receive HSTS header
|
||||
portalplatform.net: did not receive HSTS header
|
||||
poshpak.com: max-age too low: 86400
|
||||
postcodewise.co.uk: did not receive HSTS header
|
||||
posterspy.com: did not receive HSTS header
|
||||
postscheduler.org: could not connect to host
|
||||
posylka.de: did not receive HSTS header
|
||||
potatoheads.net: could not connect to host
|
||||
|
@ -3577,6 +3567,7 @@ prefontaine.name: could not connect to host
|
|||
prego-shop.de: did not receive HSTS header
|
||||
preissler.co.uk: could not connect to host
|
||||
prelist.org: did not receive HSTS header
|
||||
prescriptiondrugs.com: could not connect to host
|
||||
pressfreedomfoundation.org: did not receive HSTS header
|
||||
pretzlaff.info: did not receive HSTS header
|
||||
preworkout.me: could not connect to host
|
||||
|
@ -3592,6 +3583,7 @@ pro-zone.com: could not connect to host
|
|||
prodpad.com: did not receive HSTS header
|
||||
professionalboundaries.com: did not receive HSTS header
|
||||
profi-durchgangsmelder.de: did not receive HSTS header
|
||||
profpay.com: could not connect to host
|
||||
profundr.com: could not connect to host
|
||||
progblog.net: could not connect to host
|
||||
progg.no: could not connect to host
|
||||
|
@ -3699,6 +3691,7 @@ rbhighinc.org: could not connect to host
|
|||
rc-rp.com: did not receive HSTS header
|
||||
rc4.io: did not receive HSTS header
|
||||
rcafox.com: could not connect to host
|
||||
rcorporation.be: did not receive HSTS header
|
||||
rcpcbd.com: did not receive HSTS header
|
||||
rdns.im: did not receive HSTS header
|
||||
re-customer.net: did not receive HSTS header
|
||||
|
@ -3759,6 +3752,7 @@ restchart.com: did not receive HSTS header
|
|||
retrotracks.net: max-age too low: 0
|
||||
revealdata.com: did not receive HSTS header
|
||||
revello.org: did not receive HSTS header
|
||||
revensoftware.com: could not connect to host
|
||||
reverie.pw: could not connect to host
|
||||
reviews.anime.my: max-age too low: 5184000
|
||||
revtut.net: did not receive HSTS header
|
||||
|
@ -3806,6 +3800,7 @@ rodosto.com: could not connect to host
|
|||
roeper.party: could not connect to host
|
||||
roesemann.email: could not connect to host
|
||||
roguelikecenter.fr: did not receive HSTS header
|
||||
roguesignal.net: did not receive HSTS header
|
||||
rolemaster.net: did not receive HSTS header
|
||||
romans-place.me.uk: did not receive HSTS header
|
||||
romulusapp.com: could not connect to host
|
||||
|
@ -3981,7 +3976,6 @@ semenkovich.com: did not receive HSTS header
|
|||
semps-servers.de: could not connect to host
|
||||
semps.de: did not receive HSTS header
|
||||
senedirect.com: did not receive HSTS header
|
||||
sensepixel.com: could not connect to host
|
||||
sensiblemn.org: could not connect to host
|
||||
sensibus.com: did not receive HSTS header
|
||||
seo.consulting: did not receive HSTS header
|
||||
|
@ -3998,6 +3992,7 @@ servergno.me: did not receive HSTS header
|
|||
servermonkey.nl: could not connect to host
|
||||
seryo.moe: could not connect to host
|
||||
seryo.net: could not connect to host
|
||||
sesha.co.za: could not connect to host
|
||||
sethcaplan.com: could not connect to host
|
||||
setphaserstostun.org: could not connect to host
|
||||
setuid.de: could not connect to host
|
||||
|
@ -4063,7 +4058,6 @@ simbast.com: could not connect to host
|
|||
simod.org: could not connect to host
|
||||
simon.butcher.name: max-age too low: 2629743
|
||||
simongong.net: did not receive HSTS header
|
||||
simonhirscher.de: could not connect to host
|
||||
simpan.id: could not connect to host
|
||||
simpleai.net: max-age too low: 600
|
||||
simplefraud.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
|
@ -4107,7 +4101,6 @@ slightfuture.click: could not connect to host
|
|||
slix.io: could not connect to host
|
||||
slope.haus: could not connect to host
|
||||
slovakiana.sk: did not receive HSTS header
|
||||
slowfood.es: could not connect to host
|
||||
sluitkampzeist.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
slycurity.de: could not connect to host
|
||||
smart-mirror.de: did not receive HSTS header
|
||||
|
@ -4150,6 +4143,7 @@ socialdevelop.biz: max-age too low: 604800
|
|||
socialhams.net: did not receive HSTS header
|
||||
socialhead.io: could not connect to host
|
||||
socialspirit.com.br: did not receive HSTS header
|
||||
societyhilldance.com: did not receive HSTS header
|
||||
sockeye.cc: could not connect to host
|
||||
socomponents.co.uk: did not receive HSTS header
|
||||
sodacore.com: could not connect to host
|
||||
|
@ -4163,12 +4157,13 @@ solsystems.ru: could not connect to host
|
|||
someshit.xyz: could not connect to host
|
||||
somethingnew.xyz: could not connect to host
|
||||
sonic.network: did not receive HSTS header
|
||||
sonicrainboom.rocks: could not connect to host
|
||||
sonicrainboom.rocks: did not receive HSTS header
|
||||
soobi.org: did not receive HSTS header
|
||||
soondy.com: did not receive HSTS header
|
||||
sotor.de: did not receive HSTS header
|
||||
soulema.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
soulfulglamour.uk: could not connect to host
|
||||
soundeo.net: did not receive HSTS header
|
||||
sourcelair.com: did not receive HSTS header
|
||||
southgale.condos: could not connect to host
|
||||
southside-crew.club: could not connect to host
|
||||
|
@ -4206,6 +4201,7 @@ spilsbury.io: could not connect to host
|
|||
spititout.it: could not connect to host
|
||||
spittersberger.recipes: did not receive HSTS header
|
||||
sponsortobias.com: did not receive HSTS header
|
||||
sportchirp-internal.azurewebsites.net: did not receive HSTS header
|
||||
sportwette.eu: did not receive HSTS header
|
||||
spot-events.com: could not connect to host
|
||||
spotifyripper.tk: could not connect to host
|
||||
|
@ -4214,6 +4210,7 @@ spr.id.au: did not receive HSTS header
|
|||
spreadsheets.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
sproutconnections.com: did not receive HSTS header
|
||||
sprybear.com: did not receive HSTS header
|
||||
squaddraft.com: could not connect to host
|
||||
square.gs: could not connect to host
|
||||
squatldf.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
sqzryang.com: did not receive HSTS header
|
||||
|
@ -4226,17 +4223,17 @@ ssl.rip: could not connect to host
|
|||
ssmato.me: could not connect to host
|
||||
ssnc.org: max-age too low: 300
|
||||
sss3s.com: could not connect to host
|
||||
sstewartgallus.com: could not connect to host
|
||||
ssworld.ga: could not connect to host
|
||||
stabletoken.com: could not connect to host
|
||||
stadjerspasonline.nl: could not connect to host
|
||||
staffjoy.com: did not receive HSTS header
|
||||
stahl.xyz: could not connect to host
|
||||
stalschermer.nl: could not connect to host
|
||||
standardssuck.org: did not receive HSTS header
|
||||
standingmist.com: did not receive HSTS header
|
||||
stargatepartners.com: did not receive HSTS header
|
||||
starmusic.ga: did not receive HSTS header
|
||||
starsam80.net: could not connect to host
|
||||
starpeak.org: could not connect to host
|
||||
starttraffic.com: did not receive HSTS header
|
||||
startuponcloud.com: max-age too low: 2678400
|
||||
startuppeople.co.uk: did not receive HSTS header
|
||||
|
@ -4341,7 +4338,7 @@ sushifrick.de: could not connect to host
|
|||
suzukikenichi.com: did not receive HSTS header
|
||||
sv.search.yahoo.com: did not receive HSTS header
|
||||
svarovani.tk: could not connect to host
|
||||
svatba-frantovi.cz: did not receive HSTS header
|
||||
svatba-frantovi.cz: could not connect to host
|
||||
svenluijten.com: did not receive HSTS header
|
||||
sweetstreats.ca: could not connect to host
|
||||
swimbee.nl: did not receive HSTS header
|
||||
|
@ -4410,7 +4407,7 @@ teachforcanada.ca: did not receive HSTS header
|
|||
team-teasers.com: could not connect to host
|
||||
teamblueridge.org: could not connect to host
|
||||
teamsocial.co: did not receive HSTS header
|
||||
teamx-gaming.de: could not connect to host
|
||||
teamtouring.net: could not connect to host
|
||||
teamzeus.cz: could not connect to host
|
||||
tech55i.com: did not receive HSTS header
|
||||
techassist.io: did not receive HSTS header
|
||||
|
@ -4419,6 +4416,7 @@ techhipster.net: could not connect to host
|
|||
techhub.ml: could not connect to host
|
||||
techllage.com: could not connect to host
|
||||
techloaner.com: could not connect to host
|
||||
techmasters.andover.edu: could not connect to host
|
||||
techmatehq.com: could not connect to host
|
||||
technogroup.cz: did not receive HSTS header
|
||||
technosavvyport.com: did not receive HSTS header
|
||||
|
@ -4438,7 +4436,6 @@ tensei-slime.com: did not receive HSTS header
|
|||
tensionup.com: could not connect to host
|
||||
tentins.com: could not connect to host
|
||||
teos.online: could not connect to host
|
||||
tepid.org: could not connect to host
|
||||
teriiphotography.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
terra.by: did not receive HSTS header
|
||||
terrax.berlin: could not connect to host
|
||||
|
@ -4454,6 +4451,7 @@ textracer.dk: could not connect to host
|
|||
tezcam.tk: could not connect to host
|
||||
tf2stadium.com: did not receive HSTS header
|
||||
tfcoms-sp-tracker-client.azurewebsites.net: could not connect to host
|
||||
tffans.com: could not connect to host
|
||||
tfl.lu: did not receive HSTS header
|
||||
tgr.re: could not connect to host
|
||||
thagki9.com: could not connect to host
|
||||
|
@ -4621,6 +4619,7 @@ translate.googleapis.com: did not receive HSTS header (error ignored - included
|
|||
transportal.sk: did not receive HSTS header
|
||||
travelinsurance.co.nz: did not receive HSTS header
|
||||
treeby.net: could not connect to host
|
||||
tremoureux.fr: could not connect to host
|
||||
trendberry.ru: could not connect to host
|
||||
trinityaffirmations.com: max-age too low: 0
|
||||
trinitycore.org: max-age too low: 2592000
|
||||
|
@ -4630,7 +4629,7 @@ trollme.me: could not connect to host
|
|||
trondelan.no: did not receive HSTS header
|
||||
trunkjunk.co: could not connect to host
|
||||
trusitio.com: did not receive HSTS header
|
||||
trusteecar.com: did not receive HSTS header
|
||||
trusteecar.com: could not connect to host
|
||||
trustmeimfancy.com: could not connect to host
|
||||
trybind.com: could not connect to host
|
||||
tryoneday.co: did not receive HSTS header
|
||||
|
@ -4699,6 +4698,7 @@ ukrgadget.com: could not connect to host
|
|||
ulabox.cat: did not receive HSTS header
|
||||
ulabox.es: did not receive HSTS header
|
||||
ulmo.dk: could not connect to host
|
||||
ultimate-garcinia-plus.com: could not connect to host
|
||||
ultros.io: did not receive HSTS header
|
||||
umidev.com: did not receive HSTS header
|
||||
umie.cc: did not receive HSTS header
|
||||
|
@ -4741,6 +4741,7 @@ uprotect.it: could not connect to host
|
|||
upstats.eu: could not connect to host
|
||||
ur-lauber.de: did not receive HSTS header
|
||||
urandom.eu.org: did not receive HSTS header
|
||||
urbanstylestaging.com: did not receive HSTS header
|
||||
urphp.com: could not connect to host
|
||||
us-immigration.com: did not receive HSTS header
|
||||
usaa.com: did not receive HSTS header
|
||||
|
@ -4798,7 +4799,6 @@ venixplays-stream.ml: could not connect to host
|
|||
verifikatorindonesia.com: could not connect to host
|
||||
vermontcareergateway.org: could not connect to host
|
||||
versia.ru: did not receive HSTS header
|
||||
verspai.de: could not connect to host
|
||||
veryhax.de: could not connect to host
|
||||
vetmgmt.com: could not connect to host
|
||||
vfree.org: could not connect to host
|
||||
|
@ -4827,7 +4827,6 @@ vio.no: did not receive HSTS header
|
|||
viperdns.com: could not connect to host
|
||||
vipi.es: could not connect to host
|
||||
vipmusic.ga: could not connect to host
|
||||
vipnettikasinoklubi.com: did not receive HSTS header
|
||||
virginiacrimeanalysisnetwork.org: did not receive HSTS header
|
||||
virtualperez.com: could not connect to host
|
||||
visiontree-beta.eu: could not connect to host
|
||||
|
@ -4884,7 +4883,7 @@ wapjt.cn: could not connect to host
|
|||
warandpeace.xyz: could not connect to host
|
||||
warehost.de: did not receive HSTS header
|
||||
warhistoryonline.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
warlions.info: did not receive HSTS header
|
||||
warlions.info: could not connect to host
|
||||
warped.com: did not receive HSTS header
|
||||
warsentech.com: did not receive HSTS header
|
||||
washingtonviews.com: did not receive HSTS header
|
||||
|
@ -5001,7 +5000,6 @@ wodice.com: could not connect to host
|
|||
wohnungsbau-ludwigsburg.de: did not receive HSTS header
|
||||
woima.fi: max-age too low: 604800
|
||||
wolfesden.com: could not connect to host
|
||||
womb.city: could not connect to host
|
||||
womosale.de: could not connect to host
|
||||
wonderfall.xyz: could not connect to host
|
||||
wonderhost.info: could not connect to host
|
||||
|
@ -5015,7 +5013,6 @@ workpermit.com.vn: did not receive HSTS header
|
|||
workwithgo.com: could not connect to host
|
||||
worldsbeststory.com: did not receive HSTS header
|
||||
wowapi.org: could not connect to host
|
||||
wpcarer.pro: could not connect to host
|
||||
wpfortify.com: did not receive HSTS header
|
||||
wphostingspot.com: did not receive HSTS header
|
||||
wpmetadatastandardsproject.org: could not connect to host
|
||||
|
@ -5049,7 +5046,7 @@ www.surfeasy.com: did not receive HSTS header
|
|||
www.zenpayroll.com: did not receive HSTS header
|
||||
www3.info: did not receive HSTS header
|
||||
wxukang.cn: could not connect to host
|
||||
wyzphoto.nl: could not connect to host
|
||||
wyzphoto.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
x2w.io: could not connect to host
|
||||
x3led.com: could not connect to host
|
||||
x509.pub: could not connect to host
|
||||
|
@ -5062,7 +5059,7 @@ xbt.co: could not connect to host
|
|||
xcoop.me: could not connect to host
|
||||
xellos.ga: could not connect to host
|
||||
xellos.ml: could not connect to host
|
||||
xendo.net: could not connect to host
|
||||
xendo.net: did not receive HSTS header
|
||||
xenesisziarovky.sk: could not connect to host
|
||||
xett.com: did not receive HSTS header
|
||||
xf-liam.com: did not receive HSTS header
|
||||
|
@ -5071,7 +5068,6 @@ xiaody.me: could not connect to host
|
|||
xiaolvmu.me: could not connect to host
|
||||
xiaoxiao.im: could not connect to host
|
||||
ximens.me: did not receive HSTS header
|
||||
xing.ml: could not connect to host
|
||||
xisa.it: could not connect to host
|
||||
xiyu.moe: could not connect to host
|
||||
xmppwocky.net: could not connect to host
|
||||
|
@ -5087,7 +5083,6 @@ xn--80aaihqncaejjobbu6v.xn--p1ai: max-age too low: 10000
|
|||
xn--9pr52k0p5a.com: did not receive HSTS header
|
||||
xn--datenrettung-mnchen-jbc.com: did not receive HSTS header
|
||||
xn--dmonenjger-q5ag.net: could not connect to host
|
||||
xn--knstler-n2a.tips: could not connect to host
|
||||
xn--lgb3a8bcpn.cf: could not connect to host
|
||||
xn--lgb3a8bcpn.ga: could not connect to host
|
||||
xn--lgb3a8bcpn.gq: could not connect to host
|
||||
|
@ -5113,7 +5108,7 @@ xuwei.de: could not connect to host
|
|||
xuyh0120.win: did not receive HSTS header
|
||||
xxbase.com: could not connect to host
|
||||
y-o-w.com: did not receive HSTS header
|
||||
y-s.pw: max-age too low: 0
|
||||
y-s.pw: could not connect to host
|
||||
yabrt.cn: could not connect to host
|
||||
yagi2.com: could not connect to host
|
||||
yalook.com: did not receive HSTS header
|
||||
|
@ -5156,7 +5151,6 @@ yu.gg: did not receive HSTS header
|
|||
yuan.ga: did not receive HSTS header
|
||||
yuhen.ru: did not receive HSTS header
|
||||
yuko.moe: could not connect to host
|
||||
yunpan.blue: could not connect to host
|
||||
yunzhu.li: did not receive HSTS header
|
||||
yunzhu.org: could not connect to host
|
||||
yutabon.com: could not connect to host
|
||||
|
@ -5189,6 +5183,7 @@ zerudi.com: did not receive HSTS header
|
|||
zett4.me: could not connect to host
|
||||
zeytin.pro: could not connect to host
|
||||
zh.search.yahoo.com: did not receive HSTS header
|
||||
zhangsir.net: could not connect to host
|
||||
zhaojin97.cn: did not receive HSTS header
|
||||
zhendingresources.com: max-age too low: 0
|
||||
zinc-x.com: did not receive HSTS header
|
||||
|
@ -5208,7 +5203,6 @@ zoo24.de: did not receive HSTS header
|
|||
zoomingin.net: max-age too low: 5184000
|
||||
zoommailing.com: did not receive HSTS header
|
||||
zorasvobodova.cz: did not receive HSTS header
|
||||
zorgclustertool.nl: could not connect to host
|
||||
zortium.report: could not connect to host
|
||||
zoznamrealit.sk: did not receive HSTS header
|
||||
zqhong.com: could not connect to host
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -999,7 +999,23 @@ public:
|
|||
TrustLevel certTrustLevel;
|
||||
};
|
||||
|
||||
// trustDomain deliberately shadows the inherited field so that it isn't used
|
||||
// by accident. See bug 1339921.
|
||||
// Unfortunately GCC can't parse __has_warning("-Wshadow-field") even if it's
|
||||
// the latter part of a conjunction that would evaluate to false, so we have to
|
||||
// wrap it in a separate preprocessor conditional rather than using &&.
|
||||
#if defined(__clang__)
|
||||
#if __has_warning("-Wshadow-field")
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wshadow-field"
|
||||
#endif
|
||||
#endif
|
||||
TrustDomain trustDomain;
|
||||
#if defined(__clang__)
|
||||
#if __has_warning("-Wshadow-field")
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
#endif
|
||||
ByteString signerCertDER;
|
||||
ByteString responseString;
|
||||
Input response; // references data in responseString
|
||||
|
|
|
@ -201,6 +201,7 @@ dependencies = [
|
|||
"bluetooth_traits 0.0.1",
|
||||
"device 0.0.1 (git+https://github.com/servo/devices)",
|
||||
"ipc-channel 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"servo_config 0.0.1",
|
||||
"servo_rand 0.0.1",
|
||||
"tinyfiledialogs 2.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"uuid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
|
@ -14,6 +14,7 @@ bitflags = "0.7"
|
|||
bluetooth_traits = {path = "../bluetooth_traits"}
|
||||
device = {git = "https://github.com/servo/devices", features = ["bluetooth-test"]}
|
||||
ipc-channel = "0.7"
|
||||
servo_config = {path = "../config"}
|
||||
servo_rand = {path = "../rand"}
|
||||
uuid = {version = "0.4", features = ["v4"]}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ extern crate bitflags;
|
|||
extern crate bluetooth_traits;
|
||||
extern crate device;
|
||||
extern crate ipc_channel;
|
||||
extern crate servo_config;
|
||||
extern crate servo_rand;
|
||||
#[cfg(target_os = "linux")]
|
||||
extern crate tinyfiledialogs;
|
||||
|
@ -22,6 +23,7 @@ use bluetooth_traits::scanfilter::{BluetoothScanfilter, BluetoothScanfilterSeque
|
|||
use device::bluetooth::{BluetoothAdapter, BluetoothDevice, BluetoothGATTCharacteristic};
|
||||
use device::bluetooth::{BluetoothGATTDescriptor, BluetoothGATTService};
|
||||
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
|
||||
use servo_config::opts;
|
||||
use servo_rand::Rng;
|
||||
use std::borrow::ToOwned;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
|
@ -363,7 +365,7 @@ impl BluetoothManager {
|
|||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn select_device(&mut self, devices: Vec<BluetoothDevice>, adapter: &BluetoothAdapter) -> Option<String> {
|
||||
if is_mock_adapter(adapter) {
|
||||
if is_mock_adapter(adapter) || opts::get().headless {
|
||||
for device in devices {
|
||||
if let Ok(address) = device.get_address() {
|
||||
return Some(address);
|
||||
|
|
|
@ -7,6 +7,7 @@ use mime_guess::guess_mime_type_opt;
|
|||
use net_traits::blob_url_store::{BlobBuf, BlobURLStoreError};
|
||||
use net_traits::filemanager_thread::{FileManagerResult, FileManagerThreadMsg, FileOrigin, FilterPattern};
|
||||
use net_traits::filemanager_thread::{FileManagerThreadError, ReadFileProgress, RelativePos, SelectedFile};
|
||||
use servo_config::opts;
|
||||
use servo_config::prefs::PREFS;
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
|
@ -35,6 +36,10 @@ pub struct TFDProvider;
|
|||
impl UIProvider for TFDProvider {
|
||||
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||
fn open_file_dialog(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<String> {
|
||||
if opts::get().headless {
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut filter = vec![];
|
||||
for p in patterns {
|
||||
let s = "*.".to_string() + &p.0;
|
||||
|
@ -50,6 +55,10 @@ impl UIProvider for TFDProvider {
|
|||
|
||||
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||
fn open_file_dialog_multi(&self, path: &str, patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
|
||||
if opts::get().headless {
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut filter = vec![];
|
||||
for p in patterns {
|
||||
let s = "*.".to_string() + &p.0;
|
||||
|
|
|
@ -17,6 +17,7 @@ use dom_struct::dom_struct;
|
|||
use js::conversions::ConversionResult;
|
||||
use js::jsapi::{JSContext, JSObject};
|
||||
use js::jsval::{ObjectValue, UndefinedValue};
|
||||
use servo_config::opts;
|
||||
use servo_config::prefs::PREFS;
|
||||
use std::rc::Rc;
|
||||
#[cfg(target_os = "linux")]
|
||||
|
@ -308,6 +309,9 @@ pub fn get_descriptor_permission_state(permission_name: PermissionName,
|
|||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn prompt_user(message: &str) -> PermissionState {
|
||||
if opts::get().headless {
|
||||
return PermissionState::Denied;
|
||||
}
|
||||
match tinyfiledialogs::message_box_yes_no(DIALOG_TITLE,
|
||||
message,
|
||||
MessageBoxIcon::Question,
|
||||
|
|
|
@ -379,7 +379,9 @@ impl Window {
|
|||
|
||||
#[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
|
||||
fn display_alert_dialog(message: &str) {
|
||||
tinyfiledialogs::message_box_ok("Alert!", message, MessageBoxIcon::Warning);
|
||||
if !opts::get().headless {
|
||||
tinyfiledialogs::message_box_ok("Alert!", message, MessageBoxIcon::Warning);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]
|
||||
|
|
|
@ -37,7 +37,13 @@ bitflags! {
|
|||
const IN_TARGET_STATE = 0x100,
|
||||
#[doc = "https://fullscreen.spec.whatwg.org/#%3Afullscreen-pseudo-class"]
|
||||
const IN_FULLSCREEN_STATE = 0x200,
|
||||
#[doc = "https://html.spec.whatwg.org/multipage/#selector-valid"]
|
||||
const IN_VALID_STATE = 0x400,
|
||||
#[doc = "https://html.spec.whatwg.org/multipage/#selector-invalid"]
|
||||
const IN_INVALID_STATE = 0x800,
|
||||
#[doc = "Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-ui-valid"]
|
||||
const IN_MOZ_UI_VALID_STATE = 0x1000,
|
||||
#[doc = "https://html.spec.whatwg.org/multipage/#selector-read-write"]
|
||||
const IN_READ_WRITE_STATE = 0x400,
|
||||
const IN_READ_WRITE_STATE = 0x2000,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,11 @@ macro_rules! apply_non_ts_list {
|
|||
("disabled", Disabled, disabled, IN_DISABLED_STATE, _),
|
||||
("checked", Checked, checked, IN_CHECKED_STATE, _),
|
||||
("indeterminate", Indeterminate, indeterminate, IN_INDETERMINATE_STATE, _),
|
||||
("placeholder-shown", PlaceholderShown, placeholderShown, IN_PLACEHOLDER_SHOWN_STATE, _),
|
||||
("target", Target, target, IN_TARGET_STATE, _),
|
||||
("valid", Valid, valid, IN_VALID_STATE, _),
|
||||
("invalid", Invalid, invalid, IN_INVALID_STATE, _),
|
||||
("-moz-ui-valid", MozUIValid, mozUIValid, IN_MOZ_UI_VALID_STATE, _),
|
||||
("read-write", ReadWrite, _, IN_READ_WRITE_STATE, _),
|
||||
("read-only", ReadOnly, _, IN_READ_WRITE_STATE, _),
|
||||
|
||||
|
|
|
@ -651,7 +651,12 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
|
|||
NonTSPseudoClass::Checked |
|
||||
NonTSPseudoClass::ReadWrite |
|
||||
NonTSPseudoClass::Fullscreen |
|
||||
NonTSPseudoClass::Indeterminate => {
|
||||
NonTSPseudoClass::Indeterminate |
|
||||
NonTSPseudoClass::PlaceholderShown |
|
||||
NonTSPseudoClass::Target |
|
||||
NonTSPseudoClass::Valid |
|
||||
NonTSPseudoClass::Invalid |
|
||||
NonTSPseudoClass::MozUIValid => {
|
||||
self.get_state().contains(pseudo_class.state_flag())
|
||||
},
|
||||
NonTSPseudoClass::ReadOnly => {
|
||||
|
|
|
@ -777,7 +777,8 @@ ${helpers.single_keyword("overflow-x", "visible hidden scroll auto",
|
|||
spec="https://drafts.csswg.org/css-transitions/#propdef-transition-delay">
|
||||
pub use properties::longhands::transition_duration::single_value::SpecifiedValue;
|
||||
pub use properties::longhands::transition_duration::single_value::computed_value;
|
||||
pub use properties::longhands::transition_duration::single_value::{get_initial_value, parse};
|
||||
pub use properties::longhands::transition_duration::single_value::{get_initial_value, get_initial_specified_value};
|
||||
pub use properties::longhands::transition_duration::single_value::parse;
|
||||
</%helpers:vector_longhand>
|
||||
|
||||
<%helpers:vector_longhand name="animation-name"
|
||||
|
|
|
@ -54,20 +54,22 @@ macro_rules! try_parse_one {
|
|||
transition-delay"
|
||||
spec="https://drafts.csswg.org/css-transitions/#propdef-transition">
|
||||
use parser::Parse;
|
||||
use properties::longhands::{transition_delay, transition_duration, transition_property};
|
||||
use properties::longhands::{transition_timing_function};
|
||||
% for prop in "delay duration property timing_function".split():
|
||||
use properties::longhands::transition_${prop};
|
||||
% endfor
|
||||
|
||||
pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
|
||||
struct SingleTransition {
|
||||
transition_property: transition_property::SingleSpecifiedValue,
|
||||
transition_duration: transition_duration::SingleSpecifiedValue,
|
||||
transition_timing_function: transition_timing_function::SingleSpecifiedValue,
|
||||
transition_delay: transition_delay::SingleSpecifiedValue,
|
||||
% for prop in "property duration timing_function delay".split():
|
||||
transition_${prop}: transition_${prop}::SingleSpecifiedValue,
|
||||
% endfor
|
||||
}
|
||||
|
||||
fn parse_one_transition(context: &ParserContext, input: &mut Parser) -> Result<SingleTransition,()> {
|
||||
let (mut property, mut duration) = (None, None);
|
||||
let (mut timing_function, mut delay) = (None, None);
|
||||
% for prop in "property duration timing_function delay".split():
|
||||
let mut ${prop} = None;
|
||||
% endfor
|
||||
|
||||
loop {
|
||||
try_parse_one!(input, property, transition_property);
|
||||
try_parse_one!(context, input, duration, transition_duration);
|
||||
|
@ -80,38 +82,41 @@ macro_rules! try_parse_one {
|
|||
if let Some(property) = property {
|
||||
Ok(SingleTransition {
|
||||
transition_property: property,
|
||||
transition_duration:
|
||||
duration.unwrap_or_else(transition_duration::single_value::get_initial_value),
|
||||
transition_timing_function:
|
||||
timing_function.unwrap_or_else(transition_timing_function::single_value
|
||||
% for prop in "duration timing_function delay".split():
|
||||
transition_${prop}: ${prop}.unwrap_or_else(transition_${prop}::single_value
|
||||
::get_initial_specified_value),
|
||||
transition_delay:
|
||||
delay.unwrap_or_else(transition_delay::single_value::get_initial_value),
|
||||
% endfor
|
||||
})
|
||||
} else {
|
||||
Err(())
|
||||
}
|
||||
}
|
||||
|
||||
let (mut properties, mut durations) = (Vec::new(), Vec::new());
|
||||
let (mut timing_functions, mut delays) = (Vec::new(), Vec::new());
|
||||
% for prop in "property duration timing_function delay".split():
|
||||
let mut ${prop}s = Vec::new();
|
||||
% endfor
|
||||
|
||||
if input.try(|input| input.expect_ident_matching("none")).is_err() {
|
||||
let results = try!(input.parse_comma_separated(|i| parse_one_transition(context, i)));
|
||||
for result in results {
|
||||
properties.push(result.transition_property);
|
||||
durations.push(result.transition_duration);
|
||||
timing_functions.push(result.transition_timing_function);
|
||||
delays.push(result.transition_delay);
|
||||
% for prop in "property duration timing_function delay".split():
|
||||
${prop}s.push(result.transition_${prop});
|
||||
% endfor
|
||||
}
|
||||
} else {
|
||||
// `transition: none` is a valid syntax, and we keep transition_property empty because |none| is not
|
||||
// a valid TransitionProperty.
|
||||
// durations, delays, and timing_functions are not allowed as empty, so before we convert them into
|
||||
// longhand properties, we need to put initial values for none transition.
|
||||
% for prop in "duration timing_function delay".split():
|
||||
${prop}s.push(transition_${prop}::single_value::get_initial_specified_value());
|
||||
% endfor
|
||||
}
|
||||
|
||||
Ok(Longhands {
|
||||
transition_property: transition_property::SpecifiedValue(properties),
|
||||
transition_duration: transition_duration::SpecifiedValue(durations),
|
||||
transition_timing_function:
|
||||
transition_timing_function::SpecifiedValue(timing_functions),
|
||||
transition_delay: transition_delay::SpecifiedValue(delays),
|
||||
% for prop in "property duration timing_function delay".split():
|
||||
transition_${prop}: transition_${prop}::SpecifiedValue(${prop}s),
|
||||
% endfor
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -190,7 +190,7 @@ using simple parameterized values, as follows:
|
|||
``{"relative-datestamp": "certain number of seconds/hours/days/years"}``
|
||||
Objects of this form will be replaced with an offset from the current time
|
||||
just before the ``queue.createTask`` call is made. For example, an
|
||||
artifact expiration might be specified as ``{"relative-timestamp": "1
|
||||
artifact expiration might be specified as ``{"relative-datestamp": "1
|
||||
year"}``.
|
||||
|
||||
``{"task-reference": "string containing <dep-name>"}``
|
||||
|
|
|
@ -57,7 +57,7 @@ def derive_misc_task(task, purpose, image, taskgraph, label_to_taskid):
|
|||
'provisionerId': 'aws-provisioner-v1',
|
||||
'workerType': 'gecko-misc',
|
||||
'dependencies': [task.task_id, image_taskid],
|
||||
'created': {'relative-timestamp': '0 seconds'},
|
||||
'created': {'relative-datestamp': '0 seconds'},
|
||||
'deadline': task.task['deadline'],
|
||||
# no point existing past the parent task's deadline
|
||||
'expires': task.task['deadline'],
|
||||
|
|
|
@ -698,11 +698,11 @@ action.Action = class {
|
|||
item.origin = action.PointerOrigin.get(actionItem.origin);
|
||||
item.x = actionItem.x;
|
||||
if (typeof item.x != "undefined") {
|
||||
assert.positiveInteger(item.x, error.pprint`Expected 'x' (${item.x}) to be >= 0`);
|
||||
assert.integer(item.x, error.pprint`Expected 'x' (${item.x}) to be an Integer`);
|
||||
}
|
||||
item.y = actionItem.y;
|
||||
if (typeof item.y != "undefined") {
|
||||
assert.positiveInteger(item.y, error.pprint`Expected 'y' (${item.y}) to be >= 0`);
|
||||
assert.integer(item.y, error.pprint`Expected 'y' (${item.y}) to be an Integer`);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1333,8 +1333,8 @@ function capitalize(str) {
|
|||
}
|
||||
|
||||
function inViewPort(x, y, win) {
|
||||
assert.number(x);
|
||||
assert.number(y);
|
||||
assert.number(x, `Expected x to be finite number`);
|
||||
assert.number(y, `Expected y to be finite number`);
|
||||
// Viewport includes scrollbars if rendered.
|
||||
return !(x < 0 || y < 0 || x > win.innerWidth || y > win.innerHeight);
|
||||
}
|
||||
|
|
|
@ -79,11 +79,13 @@ add_test(function test_validateActionDurationAndCoordinates() {
|
|||
check("pointer", "pointerMove");
|
||||
}
|
||||
actionItem.duration = 5000;
|
||||
for (let d of [-1, "a"]) {
|
||||
for (let name of ["x", "y"]) {
|
||||
actionItem[name] = d;
|
||||
check("pointer", "pointerMove", `${name}: ${actionItem[name]}`);
|
||||
}
|
||||
for (let name of ["x", "y"]) {
|
||||
actionItem[name] = "a";
|
||||
actionItem.type = "pointerMove";
|
||||
actionSequence.type = "pointer";
|
||||
checkErrors(/Expected '.*' \(.*\) to be an Integer/,
|
||||
action.Action.fromJson, [actionSequence, actionItem],
|
||||
`duration: ${actionItem.duration}, subtype: pointerMove`);
|
||||
}
|
||||
run_next_test();
|
||||
});
|
||||
|
@ -93,6 +95,7 @@ add_test(function test_processPointerMoveActionOriginValidation() {
|
|||
let actionItem = {duration: 5000, type: "pointerMove"};
|
||||
for (let d of [-1, {a: "blah"}, []]) {
|
||||
actionItem.origin = d;
|
||||
|
||||
checkErrors(/Expected \'origin\' to be a string or a web element reference/,
|
||||
action.Action.fromJson,
|
||||
[actionSequence, actionItem],
|
||||
|
|
|
@ -6,12 +6,7 @@
|
|||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
|
||||
function whenBrowserLoaded(browser, callback) {
|
||||
browser.addEventListener("load", function onLoad(event) {
|
||||
if (event.target == browser.contentDocument) {
|
||||
browser.removeEventListener("load", onLoad, true);
|
||||
executeSoon(callback);
|
||||
}
|
||||
}, true);
|
||||
return BrowserTestUtils.browserLoaded(browser).then(callback);
|
||||
}
|
||||
|
||||
function waitForOnBeforeUnloadDialog(browser, callback) {
|
||||
|
|
|
@ -2148,15 +2148,6 @@
|
|||
"releaseChannelCollection": "opt-out",
|
||||
"description": "The lifetime of accepted HTTPS server certificates, in weeks, up to 2 years. Bucket 105 is all end-entity HTTPS server certificates with a lifetime > 2 years."
|
||||
},
|
||||
"KEYGEN_GENERATED_KEY_TYPE": {
|
||||
"expires_in_version": "55",
|
||||
"alert_emails": ["seceng-telemetry@mozilla.com"],
|
||||
"kind": "count",
|
||||
"keyed": true,
|
||||
"releaseChannelCollection": "opt-out",
|
||||
"bug_numbers": [1191414,1284945],
|
||||
"description": "The number of times we generate a key via keygen, keyed on algorithm and keysize. Keys include RSA with key size (512, 1024, 2048, possibly others), secp384r1, secp256r1, and 'other_ec'."
|
||||
},
|
||||
"WEBSOCKETS_HANDSHAKE_TYPE": {
|
||||
"expires_in_version": "never",
|
||||
"kind": "enumerated",
|
||||
|
|
|
@ -174,7 +174,7 @@ function removeAllChildNodes(node) {
|
|||
* Pad a number to two digits with leading "0".
|
||||
*/
|
||||
function padToTwoDigits(n) {
|
||||
return (n > 9) ? n : "0" + n;
|
||||
return new String(n).padStart(2, "0");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,7 +27,7 @@ add_task(function* test_hotkey_event_propagation() {
|
|||
for (let key of HOTKEYS) {
|
||||
is(findbar.hidden, true, "Findbar is hidden now.");
|
||||
gBrowser.selectedTab = tab;
|
||||
yield promiseFocus();
|
||||
yield SimpleTest.promiseFocus(gBrowser.selectedBrowser);
|
||||
yield BrowserTestUtils.sendChar(key, browser);
|
||||
is(findbar.hidden, false, "Findbar should not be hidden.");
|
||||
yield closeFindbarAndWait(findbar);
|
||||
|
@ -49,7 +49,7 @@ add_task(function* test_hotkey_event_propagation() {
|
|||
for (let key of HOTKEYS) {
|
||||
is(findbar.hidden, true, "Findbar is hidden now.");
|
||||
gBrowser.selectedTab = tab;
|
||||
yield promiseFocus();
|
||||
yield SimpleTest.promiseFocus(gBrowser.selectedBrowser);
|
||||
yield BrowserTestUtils.sendChar(key, browser);
|
||||
is(findbar.hidden, false, "Findbar should not be hidden.");
|
||||
yield closeFindbarAndWait(findbar);
|
||||
|
@ -237,17 +237,6 @@ function promiseFindFinished(searchText, highlightOn) {
|
|||
return deferred.promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* A promise-like wrapper for the waitForFocus helper.
|
||||
*/
|
||||
function promiseFocus() {
|
||||
return new Promise((resolve) => {
|
||||
waitForFocus(function() {
|
||||
resolve();
|
||||
}, content);
|
||||
});
|
||||
}
|
||||
|
||||
function promiseRemotenessChange(tab, shouldBeRemote) {
|
||||
return new Promise((resolve) => {
|
||||
let browser = gBrowser.getBrowserForTab(tab);
|
||||
|
|
|
@ -105,7 +105,7 @@ label.findbar-find-fast:-moz-lwtheme,
|
|||
.findbar-find-next:-moz-focusring,
|
||||
.findbar-find-previous:-moz-focusring {
|
||||
position: relative;
|
||||
box-shadow: @focusRingShadow@, @roundButtonShadow@;
|
||||
box-shadow: var(--focus-ring-box-shadow), @roundButtonShadow@;
|
||||
}
|
||||
|
||||
.findbar-container > toolbarbutton[disabled] {
|
||||
|
@ -129,20 +129,7 @@ label.findbar-find-fast:-moz-lwtheme,
|
|||
.findbar-find-previous:hover:active:-moz-focusring {
|
||||
text-shadow: @loweredShadow@;
|
||||
background: @roundButtonPressedBackground@;
|
||||
box-shadow: @focusRingShadow@, @roundButtonPressedShadow@;
|
||||
}
|
||||
|
||||
@media (-moz-mac-yosemite-theme) {
|
||||
.findbar-container > toolbarbutton:-moz-focusring,
|
||||
.findbar-find-next:-moz-focusring,
|
||||
.findbar-find-previous:-moz-focusring {
|
||||
box-shadow: @yosemiteFocusRingShadow@, @roundButtonShadow@;
|
||||
}
|
||||
|
||||
.findbar-find-next:hover:active:-moz-focusring,
|
||||
.findbar-find-previous:hover:active:-moz-focusring {
|
||||
box-shadow: @yosemiteFocusRingShadow@, @roundButtonPressedShadow@;
|
||||
}
|
||||
box-shadow: var(--focus-ring-box-shadow), @roundButtonPressedShadow@;
|
||||
}
|
||||
|
||||
/* Search field */
|
||||
|
@ -180,13 +167,7 @@ label.findbar-find-fast:-moz-lwtheme,
|
|||
}
|
||||
|
||||
.findbar-textbox[focused="true"] {
|
||||
box-shadow: @focusRingShadow@;
|
||||
}
|
||||
|
||||
@media (-moz-mac-yosemite-theme) {
|
||||
.findbar-textbox[focused="true"] {
|
||||
box-shadow: @yosemiteFocusRingShadow@;
|
||||
}
|
||||
box-shadow: var(--focus-ring-box-shadow);
|
||||
}
|
||||
|
||||
.findbar-textbox[flash="true"] {
|
||||
|
|
|
@ -36,7 +36,7 @@ window,
|
|||
page,
|
||||
dialog,
|
||||
wizard,
|
||||
prefwindow {
|
||||
prefwindow {
|
||||
-moz-appearance: dialog;
|
||||
background-color: #FFFFFF;
|
||||
color: -moz-DialogText;
|
||||
|
@ -118,7 +118,7 @@ statusbarpanel {
|
|||
|
||||
.statusbarpanel-iconic {
|
||||
padding: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
/* ::::: miscellaneous formatting ::::: */
|
||||
|
||||
|
@ -147,7 +147,7 @@ statusbar:-moz-lwtheme {
|
|||
border-bottom-color: ThreeDHighlight;
|
||||
margin: 0 5px 5px;
|
||||
}
|
||||
|
||||
|
||||
.outset {
|
||||
border: 1px solid ThreeDShadow;
|
||||
border-left-color: ThreeDHighlight;
|
||||
|
@ -163,7 +163,7 @@ separator[orient="vertical"] {
|
|||
|
||||
separator.thin:not([orient="vertical"]) {
|
||||
height: 0.5em;
|
||||
}
|
||||
}
|
||||
separator.thin[orient="vertical"] {
|
||||
width: 0.5em;
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ separator.groove[orient="vertical"] {
|
|||
margin-left: 0.4em;
|
||||
margin-right: 0.4em;
|
||||
}
|
||||
|
||||
|
||||
.plain {
|
||||
-moz-appearance: none;
|
||||
margin: 0 !important;
|
||||
|
@ -241,7 +241,7 @@ label[disabled="true"] {
|
|||
.text-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
.text-link:-moz-focusring {
|
||||
box-shadow: var(--focus-ring-box-shadow);
|
||||
}
|
||||
|
@ -271,11 +271,11 @@ notification > button:active:hover {
|
|||
}
|
||||
|
||||
notification > button:-moz-focusring {
|
||||
box-shadow: @focusRingShadow@, @roundButtonShadow@;
|
||||
box-shadow: var(--focus-ring-box-shadow), @roundButtonShadow@;
|
||||
}
|
||||
|
||||
notification > button:active:hover:-moz-focusring {
|
||||
box-shadow: @focusRingShadow@, @roundButtonPressedShadow@;
|
||||
box-shadow: var(--focus-ring-box-shadow), @roundButtonPressedShadow@;
|
||||
}
|
||||
|
||||
notification > button > .button-box > .button-text {
|
||||
|
|
|
@ -44,7 +44,6 @@ button {
|
|||
0 1px 2px hsla(0,0%,0%,.1);
|
||||
}
|
||||
|
||||
|
||||
button[default=true] {
|
||||
background-color: hsl(0,0%,79%);
|
||||
}
|
||||
|
@ -61,7 +60,5 @@ button:hover:active {
|
|||
}
|
||||
|
||||
button:focus {
|
||||
box-shadow: 0 0 1px -moz-mac-focusring inset,
|
||||
0 0 4px 1px -moz-mac-focusring,
|
||||
0 0 1.5px 1px -moz-mac-focusring;
|
||||
box-shadow: var(--focus-ring-box-shadow)
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ tree {
|
|||
/* ::::: tree focusring ::::: */
|
||||
|
||||
.focusring > .tree-stack > .tree-rows > .tree-bodybox {
|
||||
border: 1px solid transparent;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.focusring:focus > .tree-stack > .tree-rows > .tree-bodybox {
|
||||
|
@ -163,7 +163,7 @@ treechildren::-moz-tree-cell-text(progressmeter) {
|
|||
/* ::::: tree columns ::::: */
|
||||
|
||||
treecol,
|
||||
treecolpicker {
|
||||
treecolpicker {
|
||||
-moz-appearance: treeheadercell;
|
||||
-moz-box-align: center;
|
||||
-moz-box-pack: center;
|
||||
|
@ -278,7 +278,7 @@ treechildren.gridlines::-moz-tree-row {
|
|||
.tree-input {
|
||||
-moz-appearance: none;
|
||||
border-width: 0;
|
||||
box-shadow: @focusRingShadow@;
|
||||
box-shadow: var(--focus-ring-box-shadow);
|
||||
margin: 0;
|
||||
margin-inline-start: -2px;
|
||||
padding: 2px 1px 1px;
|
||||
|
|
Загрузка…
Ссылка в новой задаче