--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -956,20 +956,16 @@
<emItem blockID="i598" id="{29b136c9-938d-4d3d-8df8-d649d9b74d02}">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="1"/>
</emItem>
<emItem blockID="i108" id="{28bfb930-7620-11e1-b0c4-0800200c9a66}">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="3"/>
</emItem>
- <emItem blockID="i446" id="{E90FA778-C2B7-41D0-9FA9-3FEC1CA54D66}">
- <prefs/>
- <versionRange minVersion="0" maxVersion="*" severity="1"/>
- </emItem>
<emItem blockID="i13" id="{E8E88AB0-7182-11DF-904E-6045E0D72085}">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="3"/>
</emItem>
<emItem blockID="i226" id="{462be121-2b54-4218-bf00-b9bf8135b23f}">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="1"/>
</emItem>
@@ -1523,16 +1519,20 @@
<emItem blockID="i856" id="/^({94d62e35-4b43-494c-bf52-ba5935df36ef}|firefox@advanceelite\.com|{bb7b7a60-f574-47c2-8a0b-4c56f2da9802})$/">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="3"/>
</emItem>
<emItem blockID="i520" id="/^({7316e43a-3ebd-4bb4-95c1-9caf6756c97f}|{0cc09160-108c-4759-bab1-5c12c216e005}|{ef03e721-f564-4333-a331-d4062cee6f2b}|{465fcfbb-47a4-4866-a5d5-d12f9a77da00}|{7557724b-30a9-42a4-98eb-77fcb0fd1be3}|{b7c7d4b0-7a84-4b73-a7ef-48ef59a52c3b})$/">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="1"/>
</emItem>
+ <emItem blockID="f7569261-f575-4719-8202-552b20d013b0" id="{7e907a15-0a4c-4ff4-b64f-5eeb8f841349}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="3"/>
+ </emItem>
<emItem blockID="i8" id="{B13721C7-F507-4982-B2E5-502A71474FED}">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="1"/>
</emItem>
<emItem blockID="i465" id="trtv3@trtv.com">
<prefs/>
<versionRange minVersion="0" maxVersion="*" severity="1"/>
</emItem>
@@ -2134,16 +2134,20 @@
<emItem blockID="i1056" id="{82AF8DCA-6DE9-405D-BD5E-43525BDAD38A}">
<prefs/>
<versionRange minVersion="0" maxVersion="7.5.0.9082" severity="1">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange maxVersion="*" minVersion="43.0a1"/>
</targetApplication>
</versionRange>
</emItem>
+ <emItem blockID="i446" id="{E90FA778-C2B7-41D0-9FA9-3FEC1CA54D66}">
+ <prefs/>
+ <versionRange minVersion="0" maxVersion="*" severity="1"/>
+ </emItem>
</emItems>
<pluginItems>
<pluginItem blockID="p416">
<match exp="JavaAppletPlugin\.plugin" name="filename"/>
<versionRange maxVersion="Java 6 Update 45" minVersion="Java 6 Update 42" severity="0" vulnerabilitystatus="1">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange maxVersion="*" minVersion="17.0"/>
</targetApplication>
--- a/browser/base/content/test/performance/browser.ini
+++ b/browser/base/content/test/performance/browser.ini
@@ -14,12 +14,11 @@ skip-if = !e10s
[browser_tabopen_reflows.js]
[browser_tabopen_squeeze_reflows.js]
[browser_tabstrip_overflow_underflow_reflows.js]
[browser_tabswitch_reflows.js]
[browser_toolbariconcolor_restyles.js]
[browser_urlbar_keyed_search_reflows.js]
skip-if = (os == 'linux') || (os == 'win' && debug) # Disabled on Linux and Windows debug due to perma failures. Bug 1392320.
[browser_urlbar_search_reflows.js]
-skip-if = (os == 'linux') # Disabled on Linux and OS X opt due to frequent failures. Bug 1385932
[browser_windowclose_reflows.js]
[browser_windowopen_reflows.js]
skip-if = os == 'linux' # Disabled due to frequent failures. Bug 1380465.
--- a/browser/base/content/test/performance/browser_urlbar_keyed_search_reflows.js
+++ b/browser/base/content/test/performance/browser_urlbar_keyed_search_reflows.js
@@ -40,16 +40,17 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [
times: 5, // This number should only ever go down - never up.
},
{
stack: [
"adjustHeight@chrome://global/content/bindings/autocomplete.xml",
"_invalidate/this._adjustHeightTimeout<@chrome://global/content/bindings/autocomplete.xml",
],
+ minTimes: 39, // This number should only ever go down - never up.
times: 51, // This number should only ever go down - never up.
},
{
stack: [
"_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
"handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
"_reuseAcItem@chrome://global/content/bindings/autocomplete.xml",
--- a/browser/base/content/test/performance/browser_urlbar_search_reflows.js
+++ b/browser/base/content/test/performance/browser_urlbar_search_reflows.js
@@ -52,17 +52,17 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [
stack: [
"_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
"handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
"_reuseAcItem@chrome://global/content/bindings/autocomplete.xml",
"_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml",
"_invalidate@chrome://global/content/bindings/autocomplete.xml",
"invalidate@chrome://global/content/bindings/autocomplete.xml"
],
- times: 60, // This number should only ever go down - never up.
+ times: 36, // This number should only ever go down - never up.
},
{
stack: [
"_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
"handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
"_openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
"openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
@@ -97,16 +97,28 @@ const EXPECTED_REFLOWS_SECOND_OPEN = [
{
stack: [
"adjustHeight@chrome://global/content/bindings/autocomplete.xml",
"_invalidate/this._adjustHeightTimeout<@chrome://global/content/bindings/autocomplete.xml",
],
times: 3, // This number should only ever go down - never up.
},
+ {
+ stack: [
+ "_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
+ "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
+ "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml",
+ "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml",
+ "_invalidate@chrome://global/content/bindings/autocomplete.xml",
+ "invalidate@chrome://global/content/bindings/autocomplete.xml"
+ ],
+ times: 24, // This number should only ever go down - never up.
+ },
+
// Bug 1359989
{
stack: [
"openPopup@chrome://global/content/bindings/popup.xml",
"_openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
"openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
"openPopup@chrome://global/content/bindings/autocomplete.xml",
"set_popupOpen@chrome://global/content/bindings/autocomplete.xml",
--- a/browser/base/content/test/urlbar/browser_urlbarOneOffs.js
+++ b/browser/base/content/test/urlbar/browser_urlbarOneOffs.js
@@ -31,16 +31,17 @@ add_task(async function init() {
});
// Keys up and down through the history panel, i.e., the panel that's shown when
// there's no text in the textbox.
add_task(async function history() {
gURLBar.focus();
EventUtils.synthesizeKey("VK_DOWN", {});
await promisePopupShown(gURLBar.popup);
+ await waitForAutocompleteResultAt(gMaxResults - 1)
assertState(-1, -1, "");
// Key down through each result.
for (let i = 0; i < gMaxResults; i++) {
EventUtils.synthesizeKey("VK_DOWN", {});
assertState(i, -1,
"example.com/browser_urlbarOneOffs.js/?" + (gMaxResults - i - 1));
@@ -101,17 +102,17 @@ add_task(async function history() {
// Keys up and down through the non-history panel, i.e., the panel that's shown
// when you type something in the textbox.
add_task(async function() {
// Use a typed value that returns the visits added above but that doesn't
// trigger autofill since that would complicate the test.
let typedValue = "browser_urlbarOneOffs";
await promiseAutocompleteResultPopup(typedValue, window, true);
-
+ await waitForAutocompleteResultAt(gMaxResults - 1);
assertState(0, -1, typedValue);
// Key down through each result. The first result is already selected, which
// is why gMaxResults - 1 is the correct number of times to do this.
for (let i = 0; i < gMaxResults - 1; i++) {
EventUtils.synthesizeKey("VK_DOWN", {});
// i starts at zero so that the textValue passed to assertState is correct.
// But that means that i + 1 is the expected selected index, since initially
@@ -153,17 +154,17 @@ add_task(async function() {
await hidePopup();
});
// Checks that "Search with Current Search Engine" items are updated to "Search
// with One-Off Engine" when a one-off is selected.
add_task(async function searchWith() {
let typedValue = "foo";
await promiseAutocompleteResultPopup(typedValue);
-
+ await waitForAutocompleteResultAt(0);
assertState(0, -1, typedValue);
let item = gURLBar.popup.richlistbox.firstChild;
Assert.equal(item._actionText.textContent,
"Search with " + Services.search.currentEngine.name,
"Sanity check: first result's action text");
// Alt+Down to the first one-off. Now the first result and the first one-off
@@ -185,17 +186,17 @@ add_task(async function searchWith() {
// Clicks a one-off.
add_task(async function oneOffClick() {
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
// We are explicitly using something that looks like a url, to make the test
// stricter. Even if it looks like a url, we should search.
let typedValue = "foo.bar";
await promiseAutocompleteResultPopup(typedValue);
-
+ await waitForAutocompleteResultAt(1);
assertState(0, -1, typedValue);
let oneOffs = gURLBar.popup.oneOffSearchButtons.getSelectableButtons(true);
let resultsPromise =
BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false,
"http://mochi.test:8888/?terms=foo.bar");
EventUtils.synthesizeMouseAtCenter(oneOffs[0], {});
await resultsPromise;
@@ -206,17 +207,17 @@ add_task(async function oneOffClick() {
// Presses the Return key when a one-off is selected.
add_task(async function oneOffReturn() {
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
// We are explicitly using something that looks like a url, to make the test
// stricter. Even if it looks like a url, we should search.
let typedValue = "foo.bar";
await promiseAutocompleteResultPopup(typedValue, window, true);
-
+ await waitForAutocompleteResultAt(1);
assertState(0, -1, typedValue);
// Alt+Down to select the first one-off.
EventUtils.synthesizeKey("VK_DOWN", { altKey: true });
assertState(0, 0, typedValue);
let resultsPromise =
BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false,
--- a/browser/base/content/test/urlbar/head.js
+++ b/browser/base/content/test/urlbar/head.js
@@ -315,10 +315,12 @@ function promiseSpeculativeConnection(ht
}
async function waitForAutocompleteResultAt(index) {
let searchString = gURLBar.controller.searchString;
await BrowserTestUtils.waitForCondition(
() => gURLBar.popup.richlistbox.children.length > index &&
gURLBar.popup.richlistbox.children[index].getAttribute("ac-text") == searchString,
`Waiting for the autocomplete result for "${searchString}" at [${index}] to appear`);
+ // Ensure the addition is complete, for proper mouse events on the entries.
+ await new Promise(resolve => window.requestIdleCallback(resolve, {timeout: 1000}));
return gURLBar.popup.richlistbox.children[index];
}
--- a/browser/components/extensions/ext-browser.js
+++ b/browser/components/extensions/ext-browser.js
@@ -30,17 +30,18 @@ let windowTracker;
const getSender = (extension, target, sender) => {
let tabId;
if ("tabId" in sender) {
// The message came from a privileged extension page running in a tab. In
// that case, it should include a tabId property (which is filled in by the
// page-open listener below).
tabId = sender.tabId;
delete sender.tabId;
- } else if (target instanceof Ci.nsIDOMXULElement) {
+ } else if (target instanceof Ci.nsIDOMXULElement ||
+ ExtensionUtils.instanceOf(target, "HTMLIFrameElement")) {
tabId = tabTracker.getBrowserData(target).tabId;
}
if (tabId) {
let tab = extension.tabManager.get(tabId, null);
if (tab) {
sender.tab = tab.convert();
}
--- a/browser/components/extensions/test/browser/browser_ext_omnibox.js
+++ b/browser/components/extensions/test/browser/browser_ext_omnibox.js
@@ -79,31 +79,45 @@ add_task(async function() {
`Expected "${event}" to have fired with text: "${expected.text}".`);
}
if (expected.disposition) {
is(actual.disposition, expected.disposition,
`Expected "${event}" to have fired with disposition: "${expected.disposition}".`);
}
}
- async function startInputSession() {
+ async function waitForAutocompleteResultAt(index) {
+ let searchString = gURLBar.controller.searchString;
+ await BrowserTestUtils.waitForCondition(
+ () => gURLBar.popup.richlistbox.children.length > index &&
+ gURLBar.popup.richlistbox.children[index].getAttribute("ac-text") == searchString,
+ `Waiting for the autocomplete result for "${searchString}" at [${index}] to appear`);
+ // Ensure the addition is complete, for proper mouse events on the entries.
+ await new Promise(resolve => window.requestIdleCallback(resolve, {timeout: 1000}));
+ return gURLBar.popup.richlistbox.children[index];
+ }
+
+ let inputSessionSerial = 0;
+ async function startInputSession(indexToWaitFor) {
gURLBar.focus();
gURLBar.value = keyword;
EventUtils.synthesizeKey(" ", {});
await expectEvent("on-input-started-fired");
- EventUtils.synthesizeKey("t", {});
- await expectEvent("on-input-changed-fired", {text: "t"});
+ // Always use a different input at every invokation, so that
+ // waitForAutocompleteResultAt can distinguish different cases.
+ let char = ((inputSessionSerial++) % 10).toString();
+ EventUtils.synthesizeKey(char, {});
+
+ await expectEvent("on-input-changed-fired", {text: char});
// Wait for the autocomplete search. Note that we cannot wait for the search
// to be complete, since the add-on doesn't communicate when it's done, so
// just check matches count.
- await BrowserTestUtils.waitForCondition(
- () => gURLBar.controller.matchCount >= 2 &&
- gURLBar.popup.richlistbox.children[1].getAttribute("ac-text") == gURLBar.controller.searchString,
- "waiting urlbar search to complete");
- return "t";
+ await waitForAutocompleteResultAt(indexToWaitFor);
+
+ return char;
}
async function testInputEvents() {
gURLBar.focus();
// Start an input session by typing in <keyword><space>.
for (let letter of keyword) {
EventUtils.synthesizeKey(letter, {});
@@ -169,17 +183,17 @@ add_task(async function() {
extension.sendMessage("set-default-suggestion", {
suggestion: {
description: expectedText,
},
});
await extension.awaitMessage("default-suggestion-set");
}
- let text = await startInputSession();
+ let text = await startInputSession(0);
let item = gURLBar.popup.richlistbox.children[0];
is(item.getAttribute("title"), expectedText,
`Expected heuristic result to have title: "${expectedText}".`);
is(item.getAttribute("displayurl"), `${keyword} ${text}`,
`Expected heuristic result to have displayurl: "${keyword} ${text}".`);
@@ -188,17 +202,17 @@ add_task(async function() {
await expectEvent("on-input-entered-fired", {
text,
disposition: "currentTab",
});
}
async function testDisposition(suggestionIndex, expectedDisposition, expectedText) {
- await startInputSession();
+ await startInputSession(suggestionIndex);
// Select the suggestion.
for (let i = 0; i < suggestionIndex; i++) {
EventUtils.synthesizeKey("VK_DOWN", {});
}
let item = gURLBar.popup.richlistbox.children[suggestionIndex];
if (expectedDisposition == "currentTab") {
@@ -224,17 +238,17 @@ add_task(async function() {
ok(!!item, "Expected item to exist");
is(item.getAttribute("title"), description,
`Expected suggestion to have title: "${description}".`);
is(item.getAttribute("displayurl"), `${keyword} ${content}`,
`Expected suggestion to have displayurl: "${keyword} ${content}".`);
}
- let text = await startInputSession();
+ let text = await startInputSession(info.suggestions.length - 1);
extension.sendMessage(info.test);
await extension.awaitMessage("test-ready");
info.suggestions.forEach(expectSuggestion);
EventUtils.synthesizeMouseAtCenter(gURLBar.popup.richlistbox.children[0], {});
await expectEvent("on-input-entered-fired", {
@@ -269,22 +283,20 @@ add_task(async function() {
await testDisposition(3, "newBackgroundTab", suggestions[2].content);
extension.sendMessage("set-suggestions", {suggestions});
await extension.awaitMessage("suggestions-set");
// Test adding suggestions asynchronously.
await testSuggestions({
test: "test-multiple-suggest-calls",
- skipHeuristic: true,
suggestions,
});
await testSuggestions({
test: "test-suggestions-after-delay",
- skipHeuristic: true,
suggestions,
});
// Start monitoring the console.
let waitForConsole = new Promise(resolve => {
SimpleTest.monitorConsole(resolve, [{
message: new RegExp(`The keyword provided is already registered: "${keyword}"`),
}]);
--- a/browser/components/extensions/test/browser/browser_ext_tabs_lastAccessed.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_lastAccessed.js
@@ -1,37 +1,37 @@
"use strict";
add_task(async function testLastAccessed() {
let past = Date.now();
- await BrowserTestUtils.openNewForegroundTab(gBrowser, "https://example.com/?1");
- await BrowserTestUtils.openNewForegroundTab(gBrowser, "https://example.com/?2");
+ for (let url of ["https://example.com/?1", "https://example.com/?2"]) {
+ let tab = BrowserTestUtils.addTab(gBrowser, url, {skipAnimation: true});
+ await BrowserTestUtils.browserLoaded(tab.linkedBrowser, false, url);
+ }
let extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["tabs"],
},
async background() {
browser.test.onMessage.addListener(async function(msg, past) {
- if (msg !== "past") {
- return;
- }
-
let [tab1] = await browser.tabs.query({url: "https://example.com/?1"});
let [tab2] = await browser.tabs.query({url: "https://example.com/?2"});
browser.test.assertTrue(tab1 && tab2, "Expected tabs were found");
let now = Date.now();
- browser.test.assertTrue(past < tab1.lastAccessed &&
- tab1.lastAccessed < tab2.lastAccessed &&
- tab2.lastAccessed <= now,
- "lastAccessed timestamps are recent and in the right order");
+ browser.test.assertTrue(past < tab1.lastAccessed,
+ "lastAccessed of tab 1 is later than the test start time.");
+ browser.test.assertTrue(tab1.lastAccessed < tab2.lastAccessed,
+ "lastAccessed of tab 2 is later than lastAccessed of tab 1.");
+ browser.test.assertTrue(tab2.lastAccessed <= now,
+ "lastAccessed of tab 2 is earlier than now.");
await browser.tabs.remove([tab1.id, tab2.id]);
browser.test.notifyPass("tabs.lastAccessed");
});
},
});
--- a/devtools/client/locales/en-US/netmonitor.properties
+++ b/devtools/client/locales/en-US/netmonitor.properties
@@ -316,17 +316,23 @@ charts.cacheDisabled=Empty cache
# LOCALIZATION NOTE (charts.totalSize): This is the label displayed
# in the performance analysis view for total requests size, in kilobytes.
charts.totalSize=Size: %S KB
# LOCALIZATION NOTE (charts.totalSeconds): Semi-colon list of plural forms.
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
# This is the label displayed in the performance analysis view for the
# total requests time, in seconds.
-charts.totalSeconds=Time: #1 second;Time: #1 seconds
+charts.totalSeconds=Time: %1$S second;Time: %1$S seconds
+
+# LOCALIZATION NOTE (charts.totalSecondsNonBlocking): Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# This is the label displayed in the performance analysis view for the
+# total requests time (non-blocking), in seconds.
+charts.totalSecondsNonBlocking=Non blocking time: %1$S second;Non blocking time: %1$S seconds
# LOCALIZATION NOTE (charts.totalCached): This is the label displayed
# in the performance analysis view for total cached responses.
charts.totalCached=Cached responses: %S
# LOCALIZATION NOTE (charts.totalCount): This is the label displayed
# in the performance analysis view for total requests.
charts.totalCount=Total requests: %S
@@ -343,16 +349,21 @@ charts.type=Type
# in the header column in the performance analysis view for transferred
# size of the request.
charts.transferred=Transferred
# LOCALIZATION NOTE (charts.totalCount): This is the label displayed
# in the header column in the performance analysis view for time of request.
charts.time=Time
+# LOCALIZATION NOTE (charts.nonBlockingTime): This is the label displayed
+# in the header column in the performance analysis view for non blocking
+# time of request.
+charts.nonBlockingTime=Non blocking time
+
# LOCALIZATION NOTE (netRequest.headers): A label used for Headers tab
# This tab displays list of HTTP headers
netRequest.headers=Headers
# LOCALIZATION NOTE (netRequest.response): A label used for Response tab
# This tab displays HTTP response body
netRequest.response=Response
--- a/devtools/client/netmonitor/src/components/StatisticsPanel.js
+++ b/devtools/client/netmonitor/src/components/StatisticsPanel.js
@@ -127,40 +127,49 @@ class StatisticsPanel extends Component
title,
header: {
cached: "",
count: "",
label: L10N.getStr("charts.type"),
size: L10N.getStr("charts.size"),
transferredSize: L10N.getStr("charts.transferred"),
time: L10N.getStr("charts.time"),
+ nonBlockingTime: L10N.getStr("charts.nonBlockingTime"),
},
data,
strings: {
size: (value) =>
L10N.getFormatStr("charts.sizeKB", getSizeWithDecimals(value / 1024)),
transferredSize: (value) =>
L10N.getFormatStr("charts.transferredSizeKB",
getSizeWithDecimals(value / 1024)),
time: (value) =>
L10N.getFormatStr("charts.totalS", getTimeWithDecimals(value / 1000)),
+ nonBlockingTime: (value) =>
+ L10N.getFormatStr("charts.totalS", getTimeWithDecimals(value / 1000)),
},
totals: {
cached: (total) => L10N.getFormatStr("charts.totalCached", total),
count: (total) => L10N.getFormatStr("charts.totalCount", total),
size: (total) =>
L10N.getFormatStr("charts.totalSize", getSizeWithDecimals(total / 1024)),
transferredSize: total =>
L10N.getFormatStr("charts.totalTransferredSize",
getSizeWithDecimals(total / 1024)),
time: (total) => {
let seconds = total / 1000;
let string = getTimeWithDecimals(seconds);
return PluralForm.get(seconds,
- L10N.getStr("charts.totalSeconds")).replace("#1", string);
+ L10N.getFormatStr("charts.totalSeconds", string));
+ },
+ nonBlockingTime: (total) => {
+ let seconds = total / 1000;
+ let string = getTimeWithDecimals(seconds);
+ return PluralForm.get(seconds,
+ L10N.getFormatStr("charts.totalSecondsNonBlocking", string));
},
},
sorted: true,
});
chart.on("click", (_, { label }) => {
// Reset FilterButtons and enable one filter exclusively
this.props.closeStatistics();
@@ -180,16 +189,17 @@ class StatisticsPanel extends Component
sanitizeChartDataSource(requests, emptyCache) {
const data = FILTER_TAGS.map((type) => ({
cached: 0,
count: 0,
label: type,
size: 0,
transferredSize: 0,
time: 0,
+ nonBlockingTime: 0,
}));
for (let request of requests) {
let type;
if (Filters.html(request)) {
// "html"
type = 0;
@@ -219,16 +229,19 @@ class StatisticsPanel extends Component
// "other"
type = 8;
}
if (emptyCache || !this.responseIsFresh(request)) {
data[type].time += request.totalTime || 0;
data[type].size += request.contentSize || 0;
data[type].transferredSize += request.transferredSize || 0;
+ let nonBlockingTime =
+ request.eventTimings.totalTime - request.eventTimings.timings.blocked;
+ data[type].nonBlockingTime += nonBlockingTime || 0;
} else {
data[type].cached++;
}
data[type].count++;
}
return data.filter(e => e.count > 0);
}
--- a/devtools/client/responsive.html/browser/swap.js
+++ b/devtools/client/responsive.html/browser/swap.js
@@ -17,19 +17,16 @@ function debug(msg) {
* page. Page state is preserved by using `swapFrameLoaders`, just like when
* you move a tab to a new window. This provides a seamless transition for the
* user since the page is not reloaded.
*
* See /devtools/docs/responsive-design-mode.md for a high level overview of how
* this is used in RDM. The steps described there are copied into the code
* below.
*
- * For additional low level details about swapping browser content,
- * see /devtools/client/responsive.html/docs/browser-swap.md.
- *
* @param tab
* A browser tab with content to be swapped.
* @param containerURL
* URL to a page that holds an inner browser.
* @param getInnerBrowser
* Function that returns a Promise to the inner browser within the
* container page. It is called with the outer browser that loaded the
* container page.
--- a/devtools/client/responsive.html/browser/tunnel.js
+++ b/devtools/client/responsive.html/browser/tunnel.js
@@ -1,32 +1,31 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
"use strict";
-const { Ci } = require("chrome");
+const { Ci, Cu } = require("chrome");
const Services = require("Services");
const { Task } = require("devtools/shared/task");
const { BrowserElementWebNavigation } = require("./web-navigation");
const { getStack } = require("devtools/shared/platform/stack");
// A symbol used to hold onto the frame loader from the outer browser while tunneling.
const FRAME_LOADER = Symbol("devtools/responsive/frame-loader");
// Export for use in tests.
exports.OUTER_FRAME_LOADER_SYMBOL = FRAME_LOADER;
function debug(msg) {
// console.log(msg);
}
/**
- * Properties swapped between browsers by browser.xml's `swapDocShells`. See also the
- * list at /devtools/client/responsive.html/docs/browser-swap.md.
+ * Properties swapped between browsers by browser.xml's `swapDocShells`.
*/
const SWAPPED_BROWSER_STATE = [
"_remoteFinder",
"_securityUI",
"_documentURI",
"_documentContentType",
"_contentTitle",
"_characterSet",
@@ -323,18 +322,18 @@ exports.tunnelToInnerBrowser = tunnelToI
* This module allows specific messages of interest to be directed from the
* outer browser to the inner browser (and vice versa) in a targetted fashion
* without having to touch the original code paths that use them.
*/
function MessageManagerTunnel(outer, inner) {
if (outer.isRemoteBrowser) {
throw new Error("The outer browser must be non-remote.");
}
- this.outer = outer;
- this.inner = inner;
+ this.outerRef = Cu.getWeakReference(outer);
+ this.innerRef = Cu.getWeakReference(inner);
this.tunneledMessageNames = new Set();
this.init();
}
MessageManagerTunnel.prototype = {
/**
* Most message manager methods are left alone and are just passed along to
@@ -410,16 +409,18 @@ MessageManagerTunnel.prototype = {
// Messages sent from DevTools
"debug:",
// Messages sent from findbar.xml
"Findbar:",
// Messages sent from RemoteFinder.jsm
"Finder:",
// Messages sent from InlineSpellChecker.jsm
"InlineSpellChecker:",
+ // Messages sent from MessageChannel.jsm
+ "MessageChannel:",
// Messages sent from pageinfo.js
"PageInfo:",
// Messages sent from printUtils.js
"Printing:",
"PageMetadata:",
// Messages sent from viewSourceUtils.js
"ViewSource:",
],
@@ -428,46 +429,56 @@ MessageManagerTunnel.prototype = {
// Messages sent to nsContextMenu.js
"ContextMenu:",
// Messages sent to DevTools
"debug:",
// Messages sent to findbar.xml
"Findbar:",
// Messages sent to RemoteFinder.jsm
"Finder:",
+ // Messages sent to MessageChannel.jsm
+ "MessageChannel:",
// Messages sent to pageinfo.js
"PageInfo:",
// Messages sent to printUtils.js
"Printing:",
"PageMetadata:",
// Messages sent to viewSourceUtils.js
"ViewSource:",
],
OUTER_TO_INNER_FRAME_SCRIPTS: [
// DevTools server for OOP frames
"resource://devtools/server/child.js"
],
+ get outer() {
+ return this.outerRef.get();
+ },
+
get outerParentMM() {
if (!this.outer[FRAME_LOADER]) {
return null;
}
return this.outer[FRAME_LOADER].messageManager;
},
get outerChildMM() {
// This is only possible because we require the outer browser to be
// non-remote, so we're able to reach into its window and use the child
// side message manager there.
let docShell = this.outer[FRAME_LOADER].docShell;
return docShell.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIContentFrameMessageManager);
},
+ get inner() {
+ return this.innerRef.get();
+ },
+
get innerParentMM() {
if (!this.inner.frameLoader) {
return null;
}
return this.inner.frameLoader.messageManager;
},
init() {
@@ -615,9 +626,13 @@ MessageManagerTunnel.prototype = {
this.OUTER_TO_INNER_MESSAGE_PREFIXES.some(prefix => name.startsWith(prefix));
},
_shouldTunnelInnerToOuter(name) {
return this.INNER_TO_OUTER_MESSAGES.includes(name) ||
this.INNER_TO_OUTER_MESSAGE_PREFIXES.some(prefix => name.startsWith(prefix));
},
+ toString() {
+ return "[object MessageManagerTunnel]";
+ },
+
};
deleted file mode 100644
--- a/devtools/client/responsive.html/docs/browser-swap.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# Overview
-
-The RDM tool uses several forms of tab and browser swapping to integrate the
-tool UI cleanly into the browser UI. The high level steps of this process are
-documented at `/devtools/docs/responsive-design-mode.md`.
-
-This document contains a random assortment of low level notes about the steps
-the browser goes through when swapping browsers between tabs.
-
-# Connections between Browsers and Tabs
-
-Link between tab and browser (`gBrowser._linkBrowserToTab`):
-
-```
-aTab.linkedBrowser = browser;
-gBrowser._tabForBrowser.set(browser, aTab);
-```
-
-# Swapping Browsers between Tabs
-
-## Legend
-
-* (R): remote browsers only
-* (!R): non-remote browsers only
-
-## Functions Called
-
-When you call `gBrowser.swapBrowsersAndCloseOther` to move tab content from a
-browser in one tab to a browser in another tab, here are all the code paths
-involved:
-
-* `gBrowser.swapBrowsersAndCloseOther`
- * `gBrowser._beginRemoveTab`
- * `gBrowser.tabContainer.updateVisibility`
- * Emit `TabClose`
- * `browser.webProgress.removeProgressListener`
- * `filter.removeProgressListener`
- * `listener.destroy`
- * `gBrowser._swapBrowserDocShells`
- * `ourBrowser.webProgress.removeProgressListener`
- * `filter.removeProgressListener`
- * `gBrowser._swapRegisteredOpenURIs`
- * `ourBrowser.swapDocShells(aOtherBrowser)`
- * Emit `SwapDocShells`
- * `PopupNotifications._swapBrowserNotifications`
- * `browser.detachFormFill` (!R)
- * `browser.swapFrameLoaders`
- * `browser.attachFormFill` (!R)
- * `browser._remoteWebNavigationImpl.swapBrowser(browser)` (R)
- * `browser._remoteWebProgressManager.swapBrowser(browser)` (R)
- * `browser._remoteFinder.swapBrowser(browser)` (R)
- * Emit `EndSwapDocShells`
- * `gBrowser.mTabProgressListener`
- * `filter.addProgressListener`
- * `ourBrowser.webProgress.addProgressListener`
- * `gBrowser._endRemoveTab`
- * `gBrowser._blurTab`
- * `gBrowser._tabFilters.delete`
- * `gBrowser._tabListeners.delete`
- * `gBrowser._outerWindowIDBrowserMap.delete`
- * `browser.destroy`
- * `gBrowser.tabContainer.removeChild`
- * `gBrowser.tabContainer.adjustTabstrip`
- * `gBrowser.tabContainer._setPositionalAttributes`
- * `browser.parentNode.removeChild(browser)`
- * `gBrowser._tabForBrowser.delete`
- * `gBrowser.mPanelContainer.removeChild`
- * `gBrowser.setTabTitle` / `gBrowser.setTabTitleLoading`
- * `browser.currentURI.spec`
- * `gBrowser._tabAttrModified`
- * `gBrowser.updateTitlebar`
- * `gBrowser.updateCurrentBrowser`
- * `browser.docShellIsActive` (!R)
- * `gBrowser.showTab`
- * `gBrowser._appendStatusPanel`
- * `gBrowser._callProgressListeners` with `onLocationChange`
- * `gBrowser._callProgressListeners` with `onSecurityChange`
- * `gBrowser._callProgressListeners` with `onUpdateCurrentBrowser`
- * `gBrowser.updateTitlebar`
- * `gBrowser._callProgressListeners` with `onStateChange`
- * `gBrowser._setCloseKeyState`
- * Emit `TabSelect`
- * `gBrowser._tabAttrModified`
- * `browser.getInPermitUnload`
- * `gBrowser.tabContainer._setPositionalAttributes`
- * `gBrowser._tabAttrModified`
-
-## Browser State
-
-When calling `gBrowser.swapBrowsersAndCloseOther`, the browser is not actually
-moved from one tab to the other. Instead, various properties _on_ each of the
-browsers are swapped.
-
-Browser attributes `gBrowser.swapBrowsersAndCloseOther` transfers between
-browsers:
-
-* `usercontextid`
-
-Tab attributes `gBrowser.swapBrowsersAndCloseOther` transfers between tabs:
-
-* `usercontextid`
-* `muted`
-* `soundplaying`
-* `busy`
-
-Browser properties `gBrowser.swapBrowsersAndCloseOther` transfers between
-browsers:
-
-* `mIconURL`
-* `getFindBar(aOurTab)._findField.value`
-
-Browser properties `gBrowser._swapBrowserDocShells` transfers between browsers:
-
-* `outerWindowID` in `gBrowser._outerWindowIDBrowserMap`
-* `_outerWindowID` on the browser (R)
-* `docShellIsActive`
-* `permanentKey`
-* `registeredOpenURI`
-
-Browser properties `browser.swapDocShells` transfers between browsers:
-
-* `_docShell`
-* `_webBrowserFind`
-* `_contentWindow`
-* `_webNavigation`
-* `_remoteWebNavigation` (R)
-* `_remoteWebNavigationImpl` (R)
-* `_remoteWebProgressManager` (R)
-* `_remoteWebProgress` (R)
-* `_remoteFinder` (R)
-* `_securityUI` (R)
-* `_documentURI` (R)
-* `_documentContentType` (R)
-* `_contentTitle` (R)
-* `_characterSet` (R)
-* `_contentPrincipal` (R)
-* `_imageDocument` (R)
-* `_fullZoom` (R)
-* `_textZoom` (R)
-* `_isSyntheticDocument` (R)
-* `_innerWindowID` (R)
-* `_manifestURI` (R)
-
-`browser.swapFrameLoaders` swaps the actual page content.
--- a/devtools/client/responsive.html/test/browser/browser.ini
+++ b/devtools/client/responsive.html/test/browser/browser.ini
@@ -22,27 +22,29 @@ support-files =
[browser_device_custom_remove.js]
[browser_device_custom.js]
[browser_device_modal_error.js]
[browser_device_modal_exit.js]
[browser_device_modal_submit.js]
[browser_device_width.js]
[browser_dpr_change.js]
[browser_exit_button.js]
+[browser_ext_messaging.js]
+tags = devtools webextensions
[browser_frame_script_active.js]
[browser_hide_container.js]
[browser_menu_item_01.js]
[browser_menu_item_02.js]
[browser_mouse_resize.js]
[browser_navigation.js]
skip-if = true # Bug 1413765
[browser_network_throttling.js]
[browser_page_state.js]
[browser_permission_doorhanger.js]
-tags = geolocation
+tags = devtools geolocation
skip-if = true # Bug 1413765
[browser_resize_cmd.js]
[browser_screenshot_button.js]
[browser_tab_close.js]
[browser_tab_remoteness_change.js]
[browser_target_blank.js]
[browser_toolbox_computed_view.js]
[browser_toolbox_rule_view.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/responsive.html/test/browser/browser_ext_messaging.js
@@ -0,0 +1,129 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/* eslint-env webextensions */
+
+"use strict";
+
+const TEST_URL = "http://example.com/";
+
+// These allowed rejections are copied from
+// browser/components/extensions/test/browser/head.js.
+PromiseTestUtils.whitelistRejectionsGlobally(/Message manager disconnected/);
+PromiseTestUtils.whitelistRejectionsGlobally(/Receiving end does not exist/);
+
+add_task(async function () {
+ let tab = await addTab(TEST_URL);
+ await openRDM(tab);
+
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ "permissions": ["tabs"],
+
+ "content_scripts": [{
+ "matches": [TEST_URL],
+ "js": ["content-script.js"],
+ "run_at": "document_start",
+ }],
+ },
+
+ async background() {
+ const TEST_URL = "http://example.com/"; // eslint-disable-line no-shadow
+
+ browser.test.log("Background script init");
+
+ let extTab;
+ let contentMessage = new Promise(resolve => {
+ browser.test.log("Listen to content");
+ let listener = async (msg, sender, respond) => {
+ browser.test.assertEq(msg, "hello-from-content",
+ "Background script got hello-from-content message");
+
+ let tabs = await browser.tabs.query({
+ currentWindow: true,
+ active: true,
+ });
+ browser.test.assertEq(tabs.length, 1,
+ "One tab is active in the current window");
+ extTab = tabs[0];
+ browser.test.log(`Tab: id ${extTab.id}, url ${extTab.url}`);
+ browser.test.assertEq(extTab.url, TEST_URL, "Tab has the test URL");
+
+ browser.test.assertTrue(!!sender, "Message has a sender");
+ browser.test.assertTrue(!!sender.tab, "Message has a sender.tab");
+ browser.test.assertEq(sender.tab.id, extTab.id,
+ "Sender's tab ID matches the RDM tab ID");
+ browser.test.assertEq(sender.tab.url, extTab.url,
+ "Sender's tab URL matches the RDM tab URL");
+
+ browser.runtime.onMessage.removeListener(listener);
+ resolve();
+ };
+ browser.runtime.onMessage.addListener(listener);
+ });
+
+ // Wait for "resume" message so we know the content script is also ready.
+ await new Promise(resolve => {
+ browser.test.onMessage.addListener(resolve);
+ browser.test.sendMessage("background-script-ready");
+ });
+
+ await contentMessage;
+
+ browser.test.log("Send message from background to content");
+ let contentSender = await browser.tabs.sendMessage(
+ extTab.id,
+ "hello-from-background"
+ );
+ browser.test.assertEq(contentSender.id, browser.runtime.id,
+ "The sender ID in content matches this extension");
+
+ browser.test.notifyPass("rdm-messaging");
+ },
+
+ files: {
+ "content-script.js": async function () {
+ browser.test.log("Content script init");
+
+ browser.test.log("Listen to background");
+ browser.runtime.onMessage.addListener((msg, sender, respond) => {
+ browser.test.assertEq(msg, "hello-from-background",
+ "Content script got hello-from-background message");
+
+ browser.test.assertTrue(!!sender, "Message has a sender");
+ browser.test.assertTrue(!!sender.id, "Message has a sender.id");
+
+ let { id } = sender;
+ respond({ id });
+ });
+
+ // Wait for "resume" message so we know the background script is also ready.
+ await new Promise(resolve => {
+ browser.test.onMessage.addListener(resolve);
+ browser.test.sendMessage("content-script-ready");
+ });
+
+ browser.test.log("Send message from content to background");
+ browser.runtime.sendMessage("hello-from-content");
+ },
+ },
+ });
+
+ let contentScriptReady = extension.awaitMessage("content-script-ready");
+ let backgroundScriptReady = extension.awaitMessage("background-script-ready");
+ let finish = extension.awaitFinish("rdm-messaging");
+
+ await extension.startup();
+
+ // It appears the background script and content script can loaded in either order, so
+ // we'll wait for the both to listen before proceeding.
+ await backgroundScriptReady;
+ await contentScriptReady;
+ extension.sendMessage("resume");
+
+ await finish;
+ await extension.unload();
+
+ await closeRDM(tab);
+ await removeTab(tab);
+});
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -13554,16 +13554,22 @@ nsDocShell::ConfirmRepost(bool* aRepost)
return rv;
}
rv = appBundle->GetStringFromName("resendButton.label", button0Title);
if (NS_FAILED(rv)) {
return rv;
}
+ // Make the repost prompt tab modal to prevent malicious pages from locking
+ // up the browser, see bug 1412559 for an example.
+ if (nsCOMPtr<nsIWritablePropertyBag2> promptBag = do_QueryInterface(prompter)) {
+ promptBag->SetPropertyAsBool(NS_LITERAL_STRING("allowTabModal"), true);
+ }
+
int32_t buttonPressed;
// The actual value here is irrelevant, but we can't pass an invalid
// bool through XPConnect.
bool checkState = false;
rv = prompter->ConfirmEx(
nullptr, msgString.get(),
(nsIPrompt::BUTTON_POS_0 * nsIPrompt::BUTTON_TITLE_IS_STRING) +
(nsIPrompt::BUTTON_POS_1 * nsIPrompt::BUTTON_TITLE_CANCEL),
--- a/editor/libeditor/DeleteRangeTransaction.cpp
+++ b/editor/libeditor/DeleteRangeTransaction.cpp
@@ -6,16 +6,17 @@
#include "DeleteRangeTransaction.h"
#include "DeleteNodeTransaction.h"
#include "DeleteTextTransaction.h"
#include "mozilla/Assertions.h"
#include "mozilla/EditorBase.h"
#include "mozilla/dom/Selection.h"
#include "mozilla/mozalloc.h"
+#include "mozilla/RangeBoundary.h"
#include "nsCOMPtr.h"
#include "nsDebug.h"
#include "nsError.h"
#include "nsIContent.h"
#include "nsIContentIterator.h"
#include "nsINode.h"
#include "nsAString.h"
@@ -51,56 +52,64 @@ DeleteRangeTransaction::DoTransaction()
// Swap mRangeToDelete out into a stack variable, so we make sure to null it
// out on return from this function. Once this function returns, we no longer
// need mRangeToDelete, and keeping it alive in the long term slows down all
// DOM mutations because it's observing them.
RefPtr<nsRange> rangeToDelete;
rangeToDelete.swap(mRangeToDelete);
// build the child transactions
- nsCOMPtr<nsINode> startContainer = rangeToDelete->GetStartContainer();
- int32_t startOffset = rangeToDelete->StartOffset();
- nsCOMPtr<nsINode> endContainer = rangeToDelete->GetEndContainer();
- int32_t endOffset = rangeToDelete->EndOffset();
- MOZ_ASSERT(startContainer && endContainer);
+ const RangeBoundary& startRef = rangeToDelete->StartRef();
+ const RangeBoundary& endRef = rangeToDelete->EndRef();
+ MOZ_ASSERT(startRef.IsSetAndValid());
+ MOZ_ASSERT(endRef.IsSetAndValid());
- if (startContainer == endContainer) {
+ if (startRef.Container() == endRef.Container()) {
// the selection begins and ends in the same node
- nsIContent* startChild = rangeToDelete->GetChildAtStartOffset();
- nsresult rv =
- CreateTxnsToDeleteBetween(startContainer, startOffset,
- startChild, endOffset);
- NS_ENSURE_SUCCESS(rv, rv);
+ nsresult rv = CreateTxnsToDeleteBetween(startRef.AsRaw(), endRef.AsRaw());
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
} else {
// the selection ends in a different node from where it started. delete
// the relevant content in the start node
- nsresult rv =
- CreateTxnsToDeleteContent(startContainer, startOffset, nsIEditor::eNext);
- NS_ENSURE_SUCCESS(rv, rv);
+ nsresult rv = CreateTxnsToDeleteContent(startRef.AsRaw(), nsIEditor::eNext);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
// delete the intervening nodes
rv = CreateTxnsToDeleteNodesBetween(rangeToDelete);
- NS_ENSURE_SUCCESS(rv, rv);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
// delete the relevant content in the end node
- rv = CreateTxnsToDeleteContent(endContainer, endOffset,
- nsIEditor::ePrevious);
- NS_ENSURE_SUCCESS(rv, rv);
+ rv = CreateTxnsToDeleteContent(endRef.AsRaw(), nsIEditor::ePrevious);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
}
// if we've successfully built this aggregate transaction, then do it.
nsresult rv = EditAggregateTransaction::DoTransaction();
- NS_ENSURE_SUCCESS(rv, rv);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
// only set selection to deletion point if editor gives permission
bool bAdjustSelection;
mEditorBase->ShouldTxnSetSelection(&bAdjustSelection);
if (bAdjustSelection) {
RefPtr<Selection> selection = mEditorBase->GetSelection();
- NS_ENSURE_TRUE(selection, NS_ERROR_NULL_POINTER);
- rv = selection->Collapse(startContainer, startOffset);
- NS_ENSURE_SUCCESS(rv, rv);
+ if (NS_WARN_IF(!selection)) {
+ return NS_ERROR_NULL_POINTER;
+ }
+ rv = selection->Collapse(startRef.AsRaw());
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
}
// else do nothing - dom range gravity will adjust selection
return NS_OK;
}
NS_IMETHODIMP
DeleteRangeTransaction::UndoTransaction()
@@ -117,108 +126,118 @@ DeleteRangeTransaction::RedoTransaction(
NS_IMETHODIMP
DeleteRangeTransaction::GetTxnDescription(nsAString& aString)
{
aString.AssignLiteral("DeleteRangeTransaction");
return NS_OK;
}
nsresult
-DeleteRangeTransaction::CreateTxnsToDeleteBetween(nsINode* aNode,
- int32_t aStartOffset,
- nsIContent* aChildAtStartOffset,
- int32_t aEndOffset)
+DeleteRangeTransaction::CreateTxnsToDeleteBetween(
+ const RawRangeBoundary& aStart,
+ const RawRangeBoundary& aEnd)
{
+ if (NS_WARN_IF(!aStart.IsSetAndValid()) ||
+ NS_WARN_IF(!aEnd.IsSetAndValid()) ||
+ NS_WARN_IF(aStart.Container() != aEnd.Container())) {
+ return NS_ERROR_INVALID_ARG;
+ }
+
if (NS_WARN_IF(!mEditorBase)) {
return NS_ERROR_NOT_AVAILABLE;
}
// see what kind of node we have
- if (aNode->IsNodeOfType(nsINode::eDATA_NODE)) {
+ if (aStart.Container()->IsNodeOfType(nsINode::eDATA_NODE)) {
// if the node is a chardata node, then delete chardata content
int32_t numToDel;
- if (aStartOffset == aEndOffset) {
+ if (aStart == aEnd) {
numToDel = 1;
} else {
- numToDel = aEndOffset - aStartOffset;
+ numToDel = aEnd.Offset() - aStart.Offset();
+ MOZ_DIAGNOSTIC_ASSERT(numToDel > 0);
}
RefPtr<nsGenericDOMDataNode> charDataNode =
- static_cast<nsGenericDOMDataNode*>(aNode);
+ static_cast<nsGenericDOMDataNode*>(aStart.Container());
RefPtr<DeleteTextTransaction> deleteTextTransaction =
- new DeleteTextTransaction(*mEditorBase, *charDataNode, aStartOffset,
+ new DeleteTextTransaction(*mEditorBase, *charDataNode, aStart.Offset(),
numToDel, mRangeUpdater);
// If the text node isn't editable, it should be never undone/redone.
// So, the transaction shouldn't be recorded.
if (NS_WARN_IF(!deleteTextTransaction->CanDoIt())) {
return NS_ERROR_FAILURE;
}
AppendChild(deleteTextTransaction);
return NS_OK;
}
- nsIContent* child = aChildAtStartOffset;
- for (int32_t i = aStartOffset; i < aEndOffset; ++i) {
- // Even if we detect invalid range, we should ignore it for removing
- // specified range's nodes as far as possible.
- if (NS_WARN_IF(!child)) {
- break;
- }
+ // Even if we detect invalid range, we should ignore it for removing
+ // specified range's nodes as far as possible.
+ for (nsIContent* child = aStart.GetChildAtOffset();
+ child && child != aEnd.GetChildAtOffset();
+ child = child->GetNextSibling()) {
RefPtr<DeleteNodeTransaction> deleteNodeTransaction =
new DeleteNodeTransaction(*mEditorBase, *child, mRangeUpdater);
// XXX This is odd handling. Even if some children are not editable,
// editor should append transactions because they could be editable
// at undoing/redoing. Additionally, if the transaction needs to
// delete/restore all nodes, it should at undoing/redoing.
if (deleteNodeTransaction->CanDoIt()) {
AppendChild(deleteNodeTransaction);
}
- child = child->GetNextSibling();
}
return NS_OK;
}
nsresult
-DeleteRangeTransaction::CreateTxnsToDeleteContent(nsINode* aNode,
- int32_t aOffset,
- nsIEditor::EDirection aAction)
+DeleteRangeTransaction::CreateTxnsToDeleteContent(
+ const RawRangeBoundary& aPoint,
+ nsIEditor::EDirection aAction)
{
+ if (NS_WARN_IF(!aPoint.IsSetAndValid())) {
+ return NS_ERROR_INVALID_ARG;
+ }
+
if (NS_WARN_IF(!mEditorBase)) {
return NS_ERROR_NOT_AVAILABLE;
}
- // see what kind of node we have
- if (aNode->IsNodeOfType(nsINode::eDATA_NODE)) {
- // if the node is a chardata node, then delete chardata content
- uint32_t start, numToDelete;
- if (nsIEditor::eNext == aAction) {
- start = aOffset;
- numToDelete = aNode->Length() - aOffset;
- } else {
- start = 0;
- numToDelete = aOffset;
- }
+ if (!aPoint.Container()->IsNodeOfType(nsINode::eDATA_NODE)) {
+ return NS_OK;
+ }
+
+ // If the node is a chardata node, then delete chardata content
+ uint32_t startOffset, numToDelete;
+ if (nsIEditor::eNext == aAction) {
+ startOffset = aPoint.Offset();
+ numToDelete = aPoint.Container()->Length() - aPoint.Offset();
+ } else {
+ startOffset = 0;
+ numToDelete = aPoint.Offset();
+ }
- if (numToDelete) {
- RefPtr<nsGenericDOMDataNode> dataNode =
- static_cast<nsGenericDOMDataNode*>(aNode);
- RefPtr<DeleteTextTransaction> deleteTextTransaction =
- new DeleteTextTransaction(*mEditorBase, *dataNode, start, numToDelete,
- mRangeUpdater);
- // If the text node isn't editable, it should be never undone/redone.
- // So, the transaction shouldn't be recorded.
- if (NS_WARN_IF(!deleteTextTransaction->CanDoIt())) {
- return NS_ERROR_FAILURE;
- }
- AppendChild(deleteTextTransaction);
- }
+ if (!numToDelete) {
+ return NS_OK;
}
+ RefPtr<nsGenericDOMDataNode> dataNode =
+ static_cast<nsGenericDOMDataNode*>(aPoint.Container());
+ RefPtr<DeleteTextTransaction> deleteTextTransaction =
+ new DeleteTextTransaction(*mEditorBase, *dataNode, startOffset, numToDelete,
+ mRangeUpdater);
+ // If the text node isn't editable, it should be never undone/redone.
+ // So, the transaction shouldn't be recorded.
+ if (NS_WARN_IF(!deleteTextTransaction->CanDoIt())) {
+ return NS_ERROR_FAILURE;
+ }
+ AppendChild(deleteTextTransaction);
+
return NS_OK;
}
nsresult
DeleteRangeTransaction::CreateTxnsToDeleteNodesBetween(nsRange* aRangeToDelete)
{
if (NS_WARN_IF(!mEditorBase)) {
return NS_ERROR_NOT_AVAILABLE;
--- a/editor/libeditor/DeleteRangeTransaction.h
+++ b/editor/libeditor/DeleteRangeTransaction.h
@@ -2,16 +2,17 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
#ifndef DeleteRangeTransaction_h
#define DeleteRangeTransaction_h
#include "EditAggregateTransaction.h"
+#include "mozilla/RangeBoundary.h"
#include "nsCycleCollectionParticipant.h"
#include "nsID.h"
#include "nsIEditor.h"
#include "nsISupportsImpl.h"
#include "nsRange.h"
#include "nscore.h"
class nsINode;
@@ -45,25 +46,63 @@ public:
virtual void LastRelease() override
{
mRangeToDelete = nullptr;
EditAggregateTransaction::LastRelease();
}
protected:
- nsresult CreateTxnsToDeleteBetween(nsINode* aNode,
- int32_t aStartOffset,
- nsIContent* aChildAtStartOffset,
- int32_t aEndOffset);
+ /**
+ * CreateTxnsToDeleteBetween() creates a DeleteTextTransaction or some
+ * DeleteNodeTransactions to remove text or nodes between aStart and aEnd
+ * and appends the created transactions to the array.
+ *
+ * @param aStart Must be set and valid point.
+ * @param aEnd Must be set and valid point. Additionally, the
+ * container must be same as aStart's container.
+ * And of course, this must not be before aStart in
+ * the DOM tree order.
+ * @return Returns NS_OK in most cases.
+ * When the arguments are invalid, returns
+ * NS_ERROR_INVALID_ARG.
+ * When mEditorBase isn't available, returns
+ * NS_ERROR_NOT_AVAIALBLE.
+ * When created DeleteTextTransaction cannot do its
+ * transaction, returns NS_ERROR_FAILURE.
+ * Note that even if one of created DeleteNodeTransaction
+ * cannot do its transaction, this returns NS_OK.
+ */
+ nsresult CreateTxnsToDeleteBetween(const RawRangeBoundary& aStart,
+ const RawRangeBoundary& aEnd);
nsresult CreateTxnsToDeleteNodesBetween(nsRange* aRangeToDelete);
- nsresult CreateTxnsToDeleteContent(nsINode* aParent,
- int32_t aOffset,
+ /**
+ * CreateTxnsToDeleteContent() creates a DeleteTextTransaction to delete
+ * text between start of aPoint.Container() and aPoint or aPoint and end of
+ * aPoint.Container() and appends the created transaction to the array.
+ *
+ * @param aPoint Must be set and valid point. If the container is not
+ * a data node, this method does nothing.
+ * @param aAction If nsIEditor::eNext, this method creates a transaction
+ * to delete text from aPoint to the end of the data node.
+ * Otherwise, this method creates a transaction to delete
+ * text from start of the data node to aPoint.
+ * @return Returns NS_OK in most cases.
+ * When the arguments are invalid, returns
+ * NS_ERROR_INVALID_ARG.
+ * When mEditorBase isn't available, returns
+ * NS_ERROR_NOT_AVAIALBLE.
+ * When created DeleteTextTransaction cannot do its
+ * transaction, returns NS_ERROR_FAILURE.
+ * Note that even if no character will be deleted,
+ * this returns NS_OK.
+ */
+ nsresult CreateTxnsToDeleteContent(const RawRangeBoundary& aPoint,
nsIEditor::EDirection aAction);
// The editor for this transaction.
RefPtr<EditorBase> mEditorBase;
// P1 in the range. This is only non-null until DoTransaction is called and
// we convert it into child transactions.
RefPtr<nsRange> mRangeToDelete;
--- a/gfx/layers/LayerMetricsWrapper.h
+++ b/gfx/layers/LayerMetricsWrapper.h
@@ -399,18 +399,18 @@ public:
return 1.0f;
}
EventRegionsOverride GetEventRegionsOverride() const
{
MOZ_ASSERT(IsValid());
- if (mLayer->AsContainerLayer()) {
- return mLayer->AsContainerLayer()->GetEventRegionsOverride();
+ if (mLayer->AsRefLayer()) {
+ return mLayer->AsRefLayer()->GetEventRegionsOverride();
}
return EventRegionsOverride::NoOverride;
}
const ScrollThumbData& GetScrollThumbData() const
{
MOZ_ASSERT(IsValid());
--- a/gfx/layers/Layers.cpp
+++ b/gfx/layers/Layers.cpp
@@ -835,18 +835,17 @@ ContainerLayer::ContainerLayer(LayerMana
mPreYScale(1.0f),
mInheritedXScale(1.0f),
mInheritedYScale(1.0f),
mPresShellResolution(1.0f),
mScaleToResolution(false),
mUseIntermediateSurface(false),
mSupportsComponentAlphaChildren(false),
mMayHaveReadbackChild(false),
- mChildrenChanged(false),
- mEventRegionsOverride(EventRegionsOverride::NoOverride)
+ mChildrenChanged(false)
{
}
ContainerLayer::~ContainerLayer()
{
}
bool
@@ -1030,18 +1029,17 @@ ContainerLayer::RepositionChild(Layer* a
return true;
}
void
ContainerLayer::FillSpecificAttributes(SpecificLayerAttributes& aAttrs)
{
aAttrs = ContainerLayerAttributes(mPreXScale, mPreYScale,
mInheritedXScale, mInheritedYScale,
- mPresShellResolution, mScaleToResolution,
- mEventRegionsOverride);
+ mPresShellResolution, mScaleToResolution);
}
bool
ContainerLayer::Creates3DContextWithExtendingChildren()
{
if (Extend3DContext()) {
return false;
}
@@ -2057,22 +2055,16 @@ ContainerLayer::PrintInfo(std::stringstr
aStream << " [usesTmpSurf]";
}
if (1.0 != mPreXScale || 1.0 != mPreYScale) {
aStream << nsPrintfCString(" [preScale=%g, %g]", mPreXScale, mPreYScale).get();
}
if (mScaleToResolution) {
aStream << nsPrintfCString(" [presShellResolution=%g]", mPresShellResolution).get();
}
- if (mEventRegionsOverride & EventRegionsOverride::ForceDispatchToContent) {
- aStream << " [force-dtc]";
- }
- if (mEventRegionsOverride & EventRegionsOverride::ForceEmptyHitRegion) {
- aStream << " [force-ehr]";
- }
}
void
ContainerLayer::DumpPacket(layerscope::LayersPacket* aPacket, const void* aParent)
{
Layer::DumpPacket(aPacket, aParent);
// Get this layer data
using namespace layerscope;
@@ -2239,16 +2231,22 @@ ImageLayer::DumpPacket(layerscope::Layer
void
RefLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
{
ContainerLayer::PrintInfo(aStream, aPrefix);
if (0 != mId) {
AppendToString(aStream, mId, " [id=", "]");
}
+ if (mEventRegionsOverride & EventRegionsOverride::ForceDispatchToContent) {
+ aStream << " [force-dtc]";
+ }
+ if (mEventRegionsOverride & EventRegionsOverride::ForceEmptyHitRegion) {
+ aStream << " [force-ehr]";
+ }
}
void
RefLayer::DumpPacket(layerscope::LayersPacket* aPacket, const void* aParent)
{
Layer::DumpPacket(aPacket, aParent);
// Get this layer data
using namespace layerscope;
--- a/gfx/layers/Layers.h
+++ b/gfx/layers/Layers.h
@@ -2310,30 +2310,16 @@ public:
* content flag set.
*/
static bool HasOpaqueAncestorLayer(Layer* aLayer);
void SetChildrenChanged(bool aVal) {
mChildrenChanged = aVal;
}
- void SetEventRegionsOverride(EventRegionsOverride aVal) {
- if (mEventRegionsOverride == aVal) {
- return;
- }
-
- MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) EventRegionsOverride", this));
- mEventRegionsOverride = aVal;
- Mutated();
- }
-
- EventRegionsOverride GetEventRegionsOverride() const {
- return mEventRegionsOverride;
- }
-
// If |aRect| is null, the entire layer should be considered invalid for
// compositing.
virtual void SetInvalidCompositeRect(const gfx::IntRect* aRect) {}
protected:
friend class ReadbackProcessor;
// Note that this is not virtual, and is based on the implementation of
@@ -2413,17 +2399,16 @@ protected:
// Whether the compositor should scale to mPresShellResolution.
bool mScaleToResolution;
bool mUseIntermediateSurface;
bool mSupportsComponentAlphaChildren;
bool mMayHaveReadbackChild;
// This is updated by ComputeDifferences. This will be true if we need to invalidate
// the intermediate surface.
bool mChildrenChanged;
- EventRegionsOverride mEventRegionsOverride;
};
/**
* A generic layer that references back to its display item.
*
* In order to not throw away information early in the pipeline from layout -> webrender,
* we'd like a generic layer type that can represent all the nsDisplayItems instead of
* creating a new layer type for each nsDisplayItem for Webrender. Another option
@@ -2833,16 +2818,35 @@ public:
return;
}
mFirstChild = mLastChild = aLayer;
aLayer->SetParent(this);
}
/**
+ * CONSTRUCTION PHASE ONLY
+ * Set flags that indicate how event regions in the child layer tree need
+ * to be overridden because of properties of the parent layer tree.
+ */
+ void SetEventRegionsOverride(EventRegionsOverride aVal) {
+ if (mEventRegionsOverride == aVal) {
+ return;
+ }
+
+ MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) EventRegionsOverride", this));
+ mEventRegionsOverride = aVal;
+ Mutated();
+ }
+
+ EventRegionsOverride GetEventRegionsOverride() const {
+ return mEventRegionsOverride;
+ }
+
+ /**
* DRAWING PHASE ONLY
* |aLayer| is the same as the argument to ConnectReferentLayer().
*/
void DetachReferentLayer(Layer* aLayer)
{
mFirstChild = mLastChild = nullptr;
aLayer->SetParent(nullptr);
}
@@ -2856,25 +2860,28 @@ public:
* DRAWING PHASE ONLY
*/
virtual void FillSpecificAttributes(SpecificLayerAttributes& aAttrs) override;
MOZ_LAYER_DECL_NAME("RefLayer", TYPE_REF)
protected:
RefLayer(LayerManager* aManager, void* aImplData)
- : ContainerLayer(aManager, aImplData) , mId(0)
+ : ContainerLayer(aManager, aImplData)
+ , mId(0)
+ , mEventRegionsOverride(EventRegionsOverride::NoOverride)
{}
virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) override;
virtual void DumpPacket(layerscope::LayersPacket* aPacket, const void* aParent) override;
// 0 is a special value that means "no ID".
uint64_t mId;
+ EventRegionsOverride mEventRegionsOverride;
};
void SetAntialiasingFlags(Layer* aLayer, gfx::DrawTarget* aTarget);
#ifdef MOZ_DUMP_PAINTING
void WriteSnapshotToDumpFile(Layer* aLayer, gfx::DataSourceSurface* aSurf);
void WriteSnapshotToDumpFile(LayerManager* aManager, gfx::DataSourceSurface* aSurf);
void WriteSnapshotToDumpFile(Compositor* aCompositor, gfx::DrawTarget* aTarget);
--- a/gfx/layers/LayersTypes.h
+++ b/gfx/layers/LayersTypes.h
@@ -198,17 +198,17 @@ struct EventRegions {
{
nsCString result = mHitRegion.ToString();
result.AppendLiteral(";dispatchToContent=");
result.Append(mDispatchToContentHitRegion.ToString());
return result;
}
};
-// Bit flags that go on a ContainerLayer (or RefLayer) and override the
+// Bit flags that go on a RefLayer and override the
// event regions in the entire subtree below. This is needed for propagating
// various flags across processes since the child-process layout code doesn't
// know about parent-process listeners or CSS rules.
enum EventRegionsOverride {
// The default, no flags set
NoOverride = 0,
// Treat all hit regions in the subtree as dispatch-to-content
ForceDispatchToContent = (1 << 0),
--- a/gfx/layers/apz/src/APZCTreeManager.cpp
+++ b/gfx/layers/apz/src/APZCTreeManager.cpp
@@ -646,16 +646,20 @@ template<class ScrollNode> static EventR
GetEventRegionsOverride(HitTestingTreeNode* aParent,
const ScrollNode& aLayer)
{
// Make it so that if the flag is set on the layer tree, it automatically
// propagates to all the nodes in the corresponding subtree rooted at that
// layer in the hit-test tree. This saves having to walk up the tree every
// we want to see if a hit-test node is affected by this flag.
EventRegionsOverride result = aLayer.GetEventRegionsOverride();
+ if (result != EventRegionsOverride::NoOverride) {
+ // Overrides should only ever get set for ref layers.
+ MOZ_ASSERT(aLayer.GetReferentId());
+ }
if (aParent) {
result |= aParent->GetEventRegionsOverride();
}
return result;
}
void
APZCTreeManager::StartScrollbarDrag(const ScrollableLayerGuid& aGuid,
new file mode 100644
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/helper_override_root.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width; initial-scale=1.0">
+ <title>Simple wheel scroll cancellation</title>
+ <script type="application/javascript" src="apz_test_native_event_utils.js"></script>
+ <script type="application/javascript" src="apz_test_utils.js"></script>
+ <script type="application/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
+ <script type="application/javascript">
+
+// Add a non-passive listener on the document, so that we have a document-level
+// APZ-aware listener, and the entire document is put in the dispatch-to-content
+// region
+document.addEventListener('wheel', function(e) {
+ dump("Wheel listener running...\n");
+
+ // spin for 2 seconds to give APZ time to scroll, if the event region override
+ // is broken and it decides not to wait for the main thread. Note that it's
+ // possible the APZ controller thread is busy for whatever reason so APZ
+ // may not scroll. That might cause this test to only fail intermittently
+ // instead of consistently if the behaviour being tested regresses.
+ var now = Date.now();
+ while (Date.now() - now < 2000);
+
+ // Cancel the scroll. If this works then we know APZ waited for this listener
+ // to run.
+ e.preventDefault();
+
+ setTimeout(function() {
+ flushApzRepaints(checkScroll);
+ }, 0);
+}, false);
+
+function scrollPage() {
+ synthesizeNativeWheel(document.body, 100, 100, 0, -50);
+ dump("Finished native wheel, waiting for listener to run...\n");
+}
+
+function checkScroll() {
+ is(window.scrollY, 0, "check that the window didn't scroll");
+ subtestDone();
+}
+
+if (window.top != window) {
+ dump("Running inside an iframe! stealing functions from window.top...\n");
+ window.subtestDone = window.top.subtestDone;
+ window.SimpleTest = window.top.SimpleTest;
+ window.is = window.top.is;
+ window.ok = window.top.ok;
+}
+
+waitUntilApzStable().then(scrollPage);
+
+ </script>
+</head>
+<body style="height: 5000px; background-image: linear-gradient(green,red);">
+ This page should not be wheel-scrollable.
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/helper_override_subdoc.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width; initial-scale=1.0">
+ <title>Wheel scroll cancellation inside iframe</title>
+ <script type="application/javascript" src="apz_test_utils.js"></script>
+ <script type="application/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
+</head>
+<body>
+ This just loads helper_override_root in an iframe, so that we test event
+ regions overriding on in-process subdocuments.
+ <iframe id="ifr" src="helper_override_root.html" onload="document.getElementById('ifr').focus()"></iframe>
+</body>
+</html>
--- a/gfx/layers/apz/test/mochitest/mochitest.ini
+++ b/gfx/layers/apz/test/mochitest/mochitest.ini
@@ -16,16 +16,18 @@
helper_div_pan.html
helper_drag_click.html
helper_drag_scroll.html
helper_iframe_pan.html
helper_iframe1.html
helper_iframe2.html
helper_key_scroll.html
helper_long_tap.html
+ helper_override_root.html
+ helper_override_subdoc.html
helper_scroll_inactive_perspective.html
helper_scroll_inactive_zindex.html
helper_scroll_on_position_fixed.html
helper_scroll_over_scrollbar.html
helper_scroll_tables_perspective.html
helper_scrollto_tap.html
helper_subframe_style.css
helper_tall.html
@@ -67,8 +69,10 @@ skip-if = os == 'win' && os_version == '
[test_scroll_subframe_scrollbar.html]
skip-if = (os == 'android') # wheel events not supported on mobile
[test_touch_listeners_impacting_wheel.html]
skip-if = (toolkit == 'android') || (toolkit == 'cocoa') # wheel events not supported on mobile, and synthesized wheel smooth-scrolling not supported on OS X
[test_wheel_scroll.html]
skip-if = (os == 'android') # wheel events not supported on mobile
[test_wheel_transactions.html]
skip-if = (os == 'android') # wheel events not supported on mobile
+[test_group_overrides.html]
+ skip-if = (os == 'android') # wheel events not supported on mobile
new file mode 100644
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/test_group_overrides.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Various tests for event regions overrides</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="apz_test_utils.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+ <script type="application/javascript">
+
+var prefs = [
+ // turn off smooth scrolling so that we don't have to wait for
+ // APZ animations to finish before sampling the scroll offset
+ ['general.smoothScroll', false],
+ // Increase the content response timeout because these tests do preventDefault
+ // and we want to make sure APZ actually waits for them.
+ ['apz.content_response_timeout', 10000],
+]
+
+var subtests = [
+ {'file': 'helper_override_root.html', 'prefs': prefs},
+ {'file': 'helper_override_subdoc.html', 'prefs': prefs},
+];
+
+if (isApzEnabled()) {
+ SimpleTest.waitForExplicitFinish();
+ window.onload = function() {
+ runSubtestsSeriallyInFreshWindows(subtests)
+ .then(SimpleTest.finish);
+ };
+}
+
+ </script>
+</head>
+<body>
+</body>
+</html>
--- a/gfx/layers/ipc/LayerTransactionParent.cpp
+++ b/gfx/layers/ipc/LayerTransactionParent.cpp
@@ -604,20 +604,16 @@ LayerTransactionParent::SetLayerAttribut
return false;
}
const ContainerLayerAttributes& attrs =
specific.get_ContainerLayerAttributes();
containerLayer->SetPreScale(attrs.preXScale(), attrs.preYScale());
containerLayer->SetInheritedScale(attrs.inheritedXScale(), attrs.inheritedYScale());
containerLayer->SetScaleToResolution(attrs.scaleToResolution(),
attrs.presShellResolution());
- if (attrs.eventRegionsOverride() != containerLayer->GetEventRegionsOverride()) {
- UpdateHitTestingTree(layer, "event regions override changed");
- containerLayer->SetEventRegionsOverride(attrs.eventRegionsOverride());
- }
break;
}
case Specific::TColorLayerAttributes: {
MOZ_LAYERS_LOG(("[ParentSide] color layer"));
ColorLayer* colorLayer = layer->AsColorLayer();
if (!colorLayer) {
return false;
--- a/gfx/layers/ipc/LayersMessages.ipdlh
+++ b/gfx/layers/ipc/LayersMessages.ipdlh
@@ -282,34 +282,31 @@ struct PaintedLayerAttributes {
};
struct ContainerLayerAttributes {
float preXScale;
float preYScale;
float inheritedXScale;
float inheritedYScale;
float presShellResolution;
bool scaleToResolution;
- EventRegionsOverride eventRegionsOverride;
};
struct GlyphArray
{
LayerColor color;
Glyph[] glyphs;
};
// XXX - Bas - Hack warning! This is using a raw pointer to a ScaledFont*
// and won't work with e10s.
struct TextLayerAttributes { IntRect bounds; GlyphArray[] glyphs; uintptr_t scaledFont; };
struct ColorLayerAttributes { LayerColor color; IntRect bounds; };
struct CanvasLayerAttributes { SamplingFilter samplingFilter; IntRect bounds; };
struct RefLayerAttributes {
uint64_t id;
- // TODO: Once bug 1132895 is fixed we shouldn't need to propagate the override
- // explicitly here.
EventRegionsOverride eventRegionsOverride;
};
struct ImageLayerAttributes { SamplingFilter samplingFilter; IntSize scaleToSize; ScaleMode scaleMode; };
struct BorderLayerAttributes {
LayerRect rect;
BorderColors colors;
BorderCorners corners;
BorderWidths widths;
--- a/gfx/layers/wr/WebRenderCommandBuilder.cpp
+++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp
@@ -75,22 +75,16 @@ WebRenderCommandBuilder::BuildWebRenderC
StackingContextHelper pageRootSc(sc, aBuilder);
CreateWebRenderCommandsFromDisplayList(aDisplayList, aDisplayListBuilder,
pageRootSc, aBuilder, aResourceUpdates);
}
// Make a "root" layer data that has everything else as descendants
mLayerScrollData.emplace_back();
mLayerScrollData.back().InitializeRoot(mLayerScrollData.size() - 1);
- if (aDisplayListBuilder->IsBuildingLayerEventRegions()) {
- nsIPresShell* shell = aDisplayListBuilder->RootReferenceFrame()->PresShell();
- if (nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(shell)) {
- mLayerScrollData.back().SetEventRegionsOverride(EventRegionsOverride::ForceDispatchToContent);
- }
- }
auto callback = [&aScrollData](FrameMetrics::ViewID aScrollId) -> bool {
return aScrollData.HasMetadataFor(aScrollId);
};
if (Maybe<ScrollMetadata> rootMetadata = nsLayoutUtils::GetRootMetadata(
aDisplayListBuilder, mManager, ContainerLayerParameters(), callback)) {
mLayerScrollData.back().AppendScrollMetadata(aScrollData, rootMetadata.ref());
}
// Append the WebRenderLayerScrollData items into WebRenderScrollData
--- a/gfx/layers/wr/WebRenderLayerManager.cpp
+++ b/gfx/layers/wr/WebRenderLayerManager.cpp
@@ -220,34 +220,16 @@ WebRenderLayerManager::EndEmptyTransacti
}
WrBridge()->EndEmptyTransaction(mFocusTarget, mLatestTransactionId, transactionStart);
MakeSnapshotIfRequired(size);
return true;
}
-/*static*/ int32_t
-PopulateScrollData(WebRenderScrollData& aTarget, Layer* aLayer)
-{
- MOZ_ASSERT(aLayer);
-
- // We want to allocate a WebRenderLayerScrollData object for this layer,
- // but don't keep a pointer to it since it might get memmove'd during the
- // recursion below. Instead keep the index and get the pointer later.
- size_t index = aTarget.AddNewLayerData();
-
- int32_t descendants = 0;
- for (Layer* child = aLayer->GetLastChild(); child; child = child->GetPrevSibling()) {
- descendants += PopulateScrollData(aTarget, child);
- }
- aTarget.GetLayerDataMutable(index)->Initialize(aTarget, aLayer, descendants);
- return descendants + 1;
-}
-
void
WebRenderLayerManager::EndTransaction(DrawPaintedLayerCallback aCallback,
void* aCallbackData,
EndTransactionFlags aFlags)
{
// This should never get called, all callers should use
// EndTransactionWithoutLayer instead.
MOZ_ASSERT(false);
--- a/gfx/layers/wr/WebRenderScrollData.cpp
+++ b/gfx/layers/wr/WebRenderScrollData.cpp
@@ -28,47 +28,16 @@ WebRenderLayerScrollData::WebRenderLayer
{
}
WebRenderLayerScrollData::~WebRenderLayerScrollData()
{
}
void
-WebRenderLayerScrollData::Initialize(WebRenderScrollData& aOwner,
- Layer* aLayer,
- int32_t aDescendantCount)
-{
- MOZ_ASSERT(aDescendantCount >= 0); // Ensure value is valid
- MOZ_ASSERT(mDescendantCount == -1); // Don't allow re-setting an already set value
- mDescendantCount = aDescendantCount;
-
- MOZ_ASSERT(aLayer);
- for (uint32_t i = 0; i < aLayer->GetScrollMetadataCount(); i++) {
- mScrollIds.AppendElement(aOwner.AddMetadata(aLayer->GetScrollMetadata(i)));
- }
-
- mTransform = aLayer->GetTransform();
- mTransformIsPerspective = aLayer->GetTransformIsPerspective();
- mEventRegions = aLayer->GetEventRegions();
- mVisibleRegion = aLayer->GetVisibleRegion();
- mReferentId = aLayer->AsRefLayer()
- ? Some(aLayer->AsRefLayer()->GetReferentId())
- : Nothing();
- mEventRegionsOverride = aLayer->AsContainerLayer()
- ? aLayer->AsContainerLayer()->GetEventRegionsOverride()
- : EventRegionsOverride::NoOverride;
- mScrollThumbData = aLayer->GetScrollThumbData();
- mScrollbarAnimationId = aLayer->GetCompositorAnimationsId();
- mScrollbarTargetContainerId = aLayer->GetScrollbarTargetContainerId();
- mIsScrollbarContainer = aLayer->IsScrollbarContainer();
- mFixedPosScrollContainerId = aLayer->GetFixedPositionScrollContainerId();
-}
-
-void
WebRenderLayerScrollData::InitializeRoot(int32_t aDescendantCount)
{
mDescendantCount = aDescendantCount;
}
void
WebRenderLayerScrollData::Initialize(WebRenderScrollData& aOwner,
nsDisplayItem* aItem,
--- a/gfx/layers/wr/WebRenderScrollData.h
+++ b/gfx/layers/wr/WebRenderScrollData.h
@@ -37,22 +37,16 @@ class WebRenderScrollData;
// Each WebRenderLayerScrollData is conceptually associated with an "owning"
// WebRenderScrollData.
class WebRenderLayerScrollData
{
public:
WebRenderLayerScrollData(); // needed for IPC purposes
~WebRenderLayerScrollData();
- // Actually initialize the object. This is not done during the constructor
- // for optimization purposes (the call site is hard to write efficiently
- // if we do this in the constructor).
- void Initialize(WebRenderScrollData& aOwner,
- Layer* aLayer,
- int32_t aDescendantCount);
void InitializeRoot(int32_t aDescendantCount);
void Initialize(WebRenderScrollData& aOwner,
nsDisplayItem* aItem,
int32_t aDescendantCount,
const ActiveScrolledRoot* aStopAtAsr);
int32_t GetDescendantCount() const;
size_t GetScrollMetadataCount() const;
--- a/intl/locale/PluralForm.jsm
+++ b/intl/locale/PluralForm.jsm
@@ -65,16 +65,18 @@ var gFunctions = [
// 13: Maltese
[4, (n) => n==1?0:n==0||n%100>0&&n%100<=10?1:n%100>10&&n%100<20?2:3],
// 14: Macedonian
[3, (n) => n%10==1?0:n%10==2?1:2],
// 15: Icelandic
[2, (n) => n%10==1&&n%100!=11?0:1],
// 16: Breton
[5, (n) => n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?0:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?1:(n%10==3||n%10==4||n%10==9)&&n%100!=13&&n%100!=14&&n%100!=19&&n%100!=73&&n%100!=74&&n%100!=79&&n%100!=93&&n%100!=94&&n%100!=99?2:n%1000000==0&&n!=0?3:4],
+ // 17: Shuar
+ [2, (n) => n!=0?1:0],
];
this.PluralForm = {
/**
* Get the correct plural form of a word based on the number
*
* @param aNum
* The number to decide which plural form to use
--- a/intl/locale/tests/unit/test_pluralForm.js
+++ b/intl/locale/tests/unit/test_pluralForm.js
@@ -584,16 +584,50 @@ function run_test()
5,1,2,3,3,5,5,5,5,3,
5,1,2,3,3,5,5,5,5,3,
5,1,2,3,3,5,5,5,5,3,
5,1,2,3,3,5,5,5,5,3,
5,1,2,3,3,5,5,5,5,3,
5,5,5,5,5,5,5,5,5,5,
5,1,2,3,3,5,5,5,5,3,
5,5,5,5,5,5,5,5,5,5,
+ ], [
+ // 17: Shuar 0-9, 10-19, ..., 90-99
+ 1,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ // 100-109, 110-119, ..., 190-199
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ // 200-209, 210-219, ..., 290-299
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,
]];
for (let [rule, expect] of allExpect.entries()) {
print("\nTesting rule #" + rule);
let [get, numForms] = PluralForm.makeGetter(rule);
// Make sure the largest value expected matches the number of plural forms
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -3775,16 +3775,19 @@ nsLayoutUtils::PaintFrame(gfxContext* aR
id = nsLayoutUtils::FindOrCreateIDFor(element);
}
}
nsDisplayListBuilder::AutoCurrentScrollParentIdSetter idSetter(&builder, id);
builder.SetVisibleRect(visibleRect);
builder.SetIsBuilding(true);
+ builder.SetAncestorHasApzAwareEventHandler(
+ builder.IsBuildingLayerEventRegions() &&
+ nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(presShell));
const bool paintedPreviously =
aFrame->HasProperty(nsIFrame::ModifiedFrameList());
// Attempt to do a partial build and merge into the existing list.
// This calls BuildDisplayListForStacking context on a subset of the
// viewport.
bool merged = false;
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -2523,16 +2523,20 @@ public:
~AutoSaveRestoreContainsBlendMode() {
mBuilder.SetContainsBlendMode(mSavedContainsBlendMode);
}
};
static void
CheckForApzAwareEventHandlers(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame)
{
+ if (aBuilder->GetAncestorHasApzAwareEventHandler()) {
+ return;
+ }
+
nsIContent* content = aFrame->GetContent();
if (!content) {
return;
}
if (content->IsNodeApzAware()) {
aBuilder->SetAncestorHasApzAwareEventHandler(true);
}
--- a/layout/generic/nsSubDocumentFrame.cpp
+++ b/layout/generic/nsSubDocumentFrame.cpp
@@ -442,22 +442,16 @@ nsSubDocumentFrame::BuildDisplayList(nsD
constructZoomItem ||
haveDisplayPort ||
presContext->IsRootContentDocument() ||
(sf && sf->IsScrollingActive(aBuilder)))
{
needsOwnLayer = true;
}
- if (!needsOwnLayer && aBuilder->IsBuildingLayerEventRegions() &&
- nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(presShell))
- {
- needsOwnLayer = true;
- }
-
if (aBuilder->IsRetainingDisplayList()) {
// The value of needsOwnLayer can change between builds without
// an invalidation recorded for this frame (like if the root
// scrollframe becomes active). If this happens,
// then we need to notify the builder so that merging can
// happen correctly.
if (!mPreviouslyNeededLayer ||
mPreviouslyNeededLayer.value() != needsOwnLayer) {
@@ -500,17 +494,21 @@ nsSubDocumentFrame::BuildDisplayList(nsD
if (subdocRootFrame) {
nsIFrame* rootScrollFrame = presShell->GetRootScrollFrame();
nsDisplayListBuilder::AutoCurrentScrollParentIdSetter idSetter(
aBuilder,
ignoreViewportScrolling && rootScrollFrame && rootScrollFrame->GetContent()
? nsLayoutUtils::FindOrCreateIDFor(rootScrollFrame->GetContent())
: aBuilder->GetCurrentScrollParentId());
- aBuilder->SetAncestorHasApzAwareEventHandler(false);
+ bool hasDocumentLevelListenersForApzAwareEvents =
+ aBuilder->IsBuildingLayerEventRegions() &&
+ nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(presShell);
+
+ aBuilder->SetAncestorHasApzAwareEventHandler(hasDocumentLevelListenersForApzAwareEvents);
subdocRootFrame->
BuildDisplayListForStackingContext(aBuilder, &childItems);
}
if (!aBuilder->IsForEventDelivery()) {
// If we are going to use a displayzoom below then any items we put under
// it need to have underlying frames from the subdocument. So we need to
// calculate the bounds based on which frame will be the underlying frame
--- a/layout/ipc/RenderFrameParent.cpp
+++ b/layout/ipc/RenderFrameParent.cpp
@@ -369,18 +369,18 @@ nsDisplayRemote::nsDisplayRemote(nsDispl
}
already_AddRefed<Layer>
nsDisplayRemote::BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerLayerParameters& aContainerParameters)
{
RefPtr<Layer> layer = mRemoteFrame->BuildLayer(aBuilder, mFrame, aManager, this, aContainerParameters);
- if (layer && layer->AsContainerLayer()) {
- layer->AsContainerLayer()->SetEventRegionsOverride(mEventRegionsOverride);
+ if (layer && layer->AsRefLayer()) {
+ layer->AsRefLayer()->SetEventRegionsOverride(mEventRegionsOverride);
}
return layer.forget();
}
bool
nsDisplayRemote::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
mozilla::wr::IpcResourceUpdateQueue& aResources,
const StackingContextHelper& aSc,
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -2476,22 +2476,16 @@ already_AddRefed<LayerManager> nsDisplay
layerManager->SetUserData(&gLayerManagerLayerBuilder, oldBuilder);
return nullptr;
}
// Root is being scaled up by the X/Y resolution. Scale it back down.
root->SetPostScale(1.0f/containerParameters.mXScale,
1.0f/containerParameters.mYScale);
root->SetScaleToResolution(presShell->ScaleToResolution(),
containerParameters.mXScale);
- if (aBuilder->IsBuildingLayerEventRegions() &&
- nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(presShell)) {
- root->SetEventRegionsOverride(EventRegionsOverride::ForceDispatchToContent);
- } else {
- root->SetEventRegionsOverride(EventRegionsOverride::NoOverride);
- }
auto callback = [root](FrameMetrics::ViewID aScrollId) -> bool {
return nsLayoutUtils::ContainsMetricsWithId(root, aScrollId);
};
if (Maybe<ScrollMetadata> rootMetadata = nsLayoutUtils::GetRootMetadata(
aBuilder, root->Manager(), containerParameters, callback)) {
root->SetScrollMetadata(rootMetadata.value());
}
@@ -6856,45 +6850,31 @@ nsDisplaySubDocument::nsDisplaySubDocume
nsSubDocumentFrame* aSubDocFrame,
nsDisplayList* aList, uint32_t aFlags)
: nsDisplayOwnLayer(aBuilder, aFrame, aList, aBuilder->CurrentActiveScrolledRoot(), aFlags)
, mScrollParentId(aBuilder->GetCurrentScrollParentId())
, mShouldFlatten(false)
, mSubDocFrame(aSubDocFrame)
{
MOZ_COUNT_CTOR(nsDisplaySubDocument);
- mForceDispatchToContentRegion =
- aBuilder->IsBuildingLayerEventRegions() &&
- nsLayoutUtils::HasDocumentLevelListenersForApzAwareEvents(aFrame->PresShell());
// The SubDocument display item is conceptually outside the viewport frame,
// so in cases where the viewport frame is an AGR, the SubDocument's AGR
// should be not the viewport frame itself, but its parent AGR.
if (*mAnimatedGeometryRoot == mFrame && mAnimatedGeometryRoot->mParentAGR) {
mAnimatedGeometryRoot = mAnimatedGeometryRoot->mParentAGR;
}
}
#ifdef NS_BUILD_REFCNT_LOGGING
nsDisplaySubDocument::~nsDisplaySubDocument() {
MOZ_COUNT_DTOR(nsDisplaySubDocument);
}
#endif
-already_AddRefed<Layer>
-nsDisplaySubDocument::BuildLayer(nsDisplayListBuilder* aBuilder,
- LayerManager* aManager,
- const ContainerLayerParameters& aContainerParameters) {
- RefPtr<Layer> layer = nsDisplayOwnLayer::BuildLayer(aBuilder, aManager, aContainerParameters);
- layer->AsContainerLayer()->SetEventRegionsOverride(mForceDispatchToContentRegion
- ? EventRegionsOverride::ForceDispatchToContent
- : EventRegionsOverride::NoOverride);
- return layer.forget();
-}
-
UniquePtr<ScrollMetadata>
nsDisplaySubDocument::ComputeScrollMetadata(LayerManager* aLayerManager,
const ContainerLayerParameters& aContainerParameters)
{
if (!(mFlags & GENERATE_SCROLLABLE_LAYER)) {
return UniquePtr<ScrollMetadata>(nullptr);
}
--- a/layout/painting/nsDisplayList.h
+++ b/layout/painting/nsDisplayList.h
@@ -696,17 +696,17 @@ public:
}
bool IsBuildingLayerEventRegions();
static bool LayerEventRegionsEnabled();
bool IsInsidePointerEventsNoneDoc()
{
return CurrentPresShellState()->mInsidePointerEventsNoneDoc;
}
- bool GetAncestorHasApzAwareEventHandler() { return mAncestorHasApzAwareEventHandler; }
+ bool GetAncestorHasApzAwareEventHandler() const { return mAncestorHasApzAwareEventHandler; }
void SetAncestorHasApzAwareEventHandler(bool aValue)
{
mAncestorHasApzAwareEventHandler = aValue;
}
bool HaveScrollableDisplayPort() const { return mHaveScrollableDisplayPort; }
void SetHaveScrollableDisplayPort() { mHaveScrollableDisplayPort = true; }
void ClearHaveScrollableDisplayPort() { mHaveScrollableDisplayPort = false; }
@@ -5106,20 +5106,16 @@ class nsDisplaySubDocument : public nsDi
public:
nsDisplaySubDocument(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsSubDocumentFrame* aSubDocFrame,
nsDisplayList* aList, uint32_t aFlags);
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplaySubDocument();
#endif
- virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
- LayerManager* aManager,
- const ContainerLayerParameters& aContainerParameters) override;
-
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder,
bool* aSnap) const override;
virtual nsSubDocumentFrame* SubDocumentFrame() { return mSubDocFrame; }
virtual bool ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion) override;
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1154,9 +1154,9 @@ static const TransportSecurityPreload kP
{ "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
{ "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
};
// Pinning Preload List Length = 481;
static const int32_t kUnknownId = -1;
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1518637560032000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1518723892807000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -1,12 +1,12 @@
06se.com: could not connect to host
0day.su: could not connect to host
-1000serien.com: could not connect to host
-27728522.com: could not connect to host
+33836.com: could not connect to host
+3hl0.net: could not connect to host
47tech.com: could not connect to host
4loc.us: could not connect to host
4x4.lk: could not connect to host
692b8c32.de: could not connect to host
8560.be: could not connect to host
87577.com: could not connect to host
8887999.com: could not connect to host
8ack.de: could not connect to host
@@ -14,69 +14,70 @@ 8t88.biz: could not connect to host
91-freedom.com: could not connect to host
9ss6.com: could not connect to host
aaronmcguire.me: could not connect to host
abolition.co: could not connect to host
accwing.com: could not connect to host
acrossgw.com: could not connect to host
adamfontenot.com: could not connect to host
adamgold.net: could not connect to host
+adblock.ovh: could not connect to host
adquisitio.co.uk: could not connect to host
adquisitio.es: could not connect to host
adquisitio.fr: could not connect to host
adquisitio.it: could not connect to host
-adzie.xyz: could not connect to host
aevpn.org: could not connect to host
affily.io: could not connect to host
agowa338.de: could not connect to host
akiba-server.info: could not connect to host
akita-stream.com: could not connect to host
akoww.de: could not connect to host
akul.co.in: could not connect to host
al-f.net: could not connect to host
alamgir.works: could not connect to host
alasta.info: could not connect to host
alauda-home.de: could not connect to host
-alexandernorth.ch: could not connect to host
alexey-shamara.ru: could not connect to host
alexmol.tk: could not connect to host
alexperry.io: could not connect to host
+alilialili.ga: could not connect to host
alphie.me: could not connect to host
altahrim.net: could not connect to host
ameho.me: could not connect to host
amua.fr: could not connect to host
anastasia-shamara.ru: could not connect to host
andiplusben.com: could not connect to host
andreaskluge.eu: could not connect to host
andrei-coman.com: could not connect to host
-andrepicard.de: could not connect to host
annetaan.fi: could not connect to host
-answers-online.ru: could not connect to host
+anvartay.com: could not connect to host
anyways.at: could not connect to host
+aperture-laboratories.science: could not connect to host
apkoyunlar.club: could not connect to host
appdrinks.com: could not connect to host
+applesana.es: could not connect to host
arawaza.biz: could not connect to host
arawaza.info: could not connect to host
arent.kz: could not connect to host
arksan.com.tr: could not connect to host
artisense.de: could not connect to host
artyland.ru: could not connect to host
aseith.com: could not connect to host
askmagicconch.com: could not connect to host
assdecoeur.org: could not connect to host
+asthon.cn: could not connect to host
at1.co: could not connect to host
athi.pl: could not connect to host
austinsutphin.com: could not connect to host
australiancattle.dog: could not connect to host
autostop-occasions.be: could not connect to host
autozane.com: could not connect to host
awan.tech: could not connect to host
awf0.xyz: could not connect to host
b8a.me: could not connect to host
-bakaweb.fr: could not connect to host
balonmano.co: could not connect to host
bandally.net: could not connect to host
bandarifamily.com: could not connect to host
bandiga.it: could not connect to host
barbate.fr: could not connect to host
bbb1991.me: could not connect to host
bbdos.ru: could not connect to host
beasel.biz: could not connect to host
@@ -87,93 +88,97 @@ benjamin-suess.de: could not connect to
benzou-space.com: could not connect to host
berduri.com: could not connect to host
berthelier.me: could not connect to host
bey.io: could not connect to host
binimo.com: could not connect to host
bip.gov.sa: could not connect to host
bitmessage.ch: could not connect to host
bizeau.ch: could not connect to host
+bjtxl.cn: could not connect to host
blackdiam.net: could not connect to host
blackscytheconsulting.com: could not connect to host
blinkenlight.co.uk: could not connect to host
blinkenlight.com.au: could not connect to host
-blog.gparent.org: could not connect to host
-blogtroterzy.pl: could not connect to host
blumen-garage.de: could not connect to host
bm-i.ch: could not connect to host
bodrumfarm.com: could not connect to host
bolwerk.com.br: could not connect to host
borisbesemer.com: could not connect to host
bouncelanduk.co.uk: could not connect to host
bouncourseplanner.net: could not connect to host
-bouncycastlehiremalvern.co.uk: could not connect to host
+boxdevigneron.fr: could not connect to host
brage.info: could not connect to host
+braintensive.com: could not connect to host
brettabel.com: could not connect to host
brfvh24.se: could not connect to host
-brunner.ninja: could not connect to host
bsktweetup.info: could not connect to host
bsuess.de: could not connect to host
+btsoft.eu: could not connect to host
buka.jp: could not connect to host
burlesquemakeup.com: could not connect to host
businessfurs.info: could not connect to host
businessmodeler.se: could not connect to host
buyshoe.org: could not connect to host
bvexplained.co.uk: could not connect to host
by1898.com: could not connect to host
bypass.kr: could not connect to host
c16t.uk: could not connect to host
cafesg.net: could not connect to host
calculatoaresecondhand.xyz: could not connect to host
callabs.net: could not connect to host
callsigns.ca: could not connect to host
calories.org: could not connect to host
canarymod.net: could not connect to host
-cardse.net: could not connect to host
carlandfaith.com: could not connect to host
-carloshmm.stream: could not connect to host
casinoreal.com: could not connect to host
caughtredhanded.co.nz: could not connect to host
centos.pub: could not connect to host
challengeskins.com: could not connect to host
chaoticlaw.com: could not connect to host
charmyadesara.com: could not connect to host
charonsecurity.com: could not connect to host
+charta-digitale-vernetzung.de: could not connect to host
cheah.xyz: could not connect to host
cheesefusion.com: could not connect to host
childrendeservebetter.org: could not connect to host
china-line.org: could not connect to host
chloehorler.com: could not connect to host
chosenplaintext.org: could not connect to host
chrisu3050.at: could not connect to host
chziyue.com: could not connect to host
cjtkfan.club: could not connect to host
clearchatsandbox.com: could not connect to host
clearviewwealthprojector.com.au: could not connect to host
cloudbleed.info: could not connect to host
+cloudbolin.es: could not connect to host
cloudimproved.com: could not connect to host
cloudimprovedtest.com: could not connect to host
+cni-certing.it: could not connect to host
cnlic.com: could not connect to host
+co-yutaka.com: could not connect to host
coco-cool.fr: could not connect to host
code.fm: could not connect to host
codenlife.xyz: could not connect to host
codercross.com: could not connect to host
colleencornez.com: could not connect to host
coloppe.com: could not connect to host
comprehensiveihc.com: could not connect to host
conception.sk: could not connect to host
conniesacademy.com: could not connect to host
+connyduck.at: could not connect to host
corinnanese.de: could not connect to host
-cosmeticasimple.com: could not connect to host
cosplayer.com: could not connect to host
cpaneltips.com: could not connect to host
crackpfer.de: could not connect to host
+craftinginredlipstick.com: could not connect to host
cristianhares.com: could not connect to host
criticalaim.com: could not connect to host
crow.tw: could not connect to host
+cryptoki.fr: could not connect to host
crystalmachine.net: could not connect to host
csgo.help: could not connect to host
csgo77.com: could not connect to host
cubela.tech: could not connect to host
customfilmworks.com: could not connect to host
cyber-computer.club: could not connect to host
cyberpeace.nl: could not connect to host
cypherpunk.ws: could not connect to host
@@ -181,133 +186,140 @@ d-bood.site: could not connect to host
dahlberg.cologne: could not connect to host
daniel-stahl.net: could not connect to host
darkdestiny.ch: could not connect to host
darlastudio66.com: could not connect to host
datorb.com: could not connect to host
davidscherzer.at: could not connect to host
davros.eu: could not connect to host
davros.ru: could not connect to host
-dawnson.is: could not connect to host
dawnsonb.com: could not connect to host
days.one: could not connect to host
dbcom.ru: could not connect to host
de-servers.de: could not connect to host
decoyrouting.com: could not connect to host
deloittequant.com: could not connect to host
+demo.sb: could not connect to host
derchris.me: could not connect to host
derivativeshub.pro: could not connect to host
dermacarecomplex.com: could not connect to host
dev-talk.eu: could not connect to host
devkid.net: could not connect to host
devops.moe: could not connect to host
+dhome.at: could not connect to host
dick.red: could not connect to host
+digioccumss.ddns.net: could not connect to host
diguass.us: could not connect to host
dijks.com: could not connect to host
dirtycat.ru: could not connect to host
disadattamentolavorativo.it: could not connect to host
disco-crazy-world.de: could not connect to host
djangogolf.com: could not connect to host
dlyl888.com: could not connect to host
+dmdre.com: could not connect to host
dojifish.space: could not connect to host
dolphin-hosting.com: could not connect to host
domengrad.ru: could not connect to host
dostavkakurierom.ru: could not connect to host
drakeluce.com: could not connect to host
dreaming.solutions: could not connect to host
drighes.com: could not connect to host
+drlazarina.net: could not connect to host
dronexpertos.com: could not connect to host
droomhuis-in-zuid-holland-kopen.nl: could not connect to host
dubrovskiy.net: could not connect to host
dubrovskiy.pro: could not connect to host
duch.cloud: could not connect to host
duelsow.eu: could not connect to host
duks.com.br: could not connect to host
duo.money: could not connect to host
duole30.com: could not connect to host
e-wishlist.net: could not connect to host
eagleridgecampground.com: could not connect to host
eatfitoutlet.com.br: could not connect to host
ebaymotorssucks.com: could not connect to host
+edtech-hub.com: could not connect to host
eeb98.com: could not connect to host
eez.ee: could not connect to host
-egbert.net: could not connect to host
ehuber.info: could not connect to host
elisabeth-strunz.de: could not connect to host
elonbase.com: could not connect to host
elsword.moe: could not connect to host
-emanuelemazzotta.com: could not connect to host
endlessdiy.ca: could not connect to host
endspamwith.us: could not connect to host
engg.ca: could not connect to host
-enriquepiraces.com: could not connect to host
+englishlol.com: could not connect to host
er-music.com: could not connect to host
ericdiao.com: could not connect to host
erspro.net: could not connect to host
estan.cn: could not connect to host
+estcequejailaflemme.fr: could not connect to host
+etenendrinken.nu: could not connect to host
eurostrategy.vn.ua: could not connect to host
eveshaiwu.com: could not connect to host
+evosyn.com: could not connect to host
exceed.global: could not connect to host
faber.org.ru: could not connect to host
facilitrak.com: could not connect to host
faithwatch.org: could not connect to host
falkus.net: could not connect to host
+fander.it: could not connect to host
farm24.co.uk: could not connect to host
farsil.eu: could not connect to host
-fashion4ever.pl: could not connect to host
-fed51.com: could not connect to host
feedstringer.com: could not connect to host
feirlane.org: could not connect to host
fernangp.com: could not connect to host
filhomes.ph: could not connect to host
+filme-online.eu.com: could not connect to host
findmybottleshop.com.au: could not connect to host
firebaseio.com: could not connect to host
firexarxa.de: could not connect to host
first-time-offender.com: could not connect to host
fixmyglitch.com: could not connect to host
flow.su: could not connect to host
-flucky.xyz: could not connect to host
flygpost.com: could not connect to host
foodserve.in: could not connect to host
forglemmigej.net: could not connect to host
foshanshequ.com: could not connect to host
fossewayflowers.co.uk: could not connect to host
fossewayflowers.com: could not connect to host
+fossgruppen.se: could not connect to host
foudufafa.de: could not connect to host
foxmay.co.uk: could not connect to host
fr0zenbits.io: could not connect to host
fragnic.com: could not connect to host
franckyz.com: could not connect to host
-franksiler.com: could not connect to host
fransallen.com: could not connect to host
freaksites.dk: could not connect to host
fredliang.cn: could not connect to host
fredtec.ru: could not connect to host
freelansir.com: could not connect to host
-freesounding.ru: could not connect to host
+freshcode.nl: could not connect to host
frodriguez.xyz: could not connect to host
fromlemaytoz.com: could not connect to host
frosty-gaming.xyz: could not connect to host
fukuko.biz: could not connect to host
fukuko.xyz: could not connect to host
funfunmstdn.tokyo: could not connect to host
funideas.org: could not connect to host
funksteckdosen24.de: could not connect to host
futbolvivo.tv: could not connect to host
-g4w.co: could not connect to host
+fyfywka.com: could not connect to host
gabriele-kluge.de: could not connect to host
gaiserik.com: could not connect to host
gam3rs.de: could not connect to host
game-gentle.com: could not connect to host
+garanteasy.com: could not connect to host
gasbarkenora.com: could not connect to host
gasnews.net: could not connect to host
gayforgenji.com: could not connect to host
gaygeeks.de: could not connect to host
gdevpenze.ru: could not connect to host
gdhzcgs.com: could not connect to host
+geek.ch: could not connect to host
geeks.berlin: could not connect to host
gehrke.nrw: could not connect to host
generationnext.pl: could not connect to host
geneve.guide: could not connect to host
georgescarryout.com: could not connect to host
getgeek.dk: could not connect to host
getgeek.ee: could not connect to host
getgeek.es: could not connect to host
@@ -315,67 +327,75 @@ getgeek.fi: could not connect to host
getgeek.fr: could not connect to host
getgeek.io: could not connect to host
getgeek.no: could not connect to host
getgeek.nu: could not connect to host
getgeek.pl: could not connect to host
getwarden.net: could not connect to host
gevaulug.fr: could not connect to host
gfoss.gr: could not connect to host
+gigin.me: could not connect to host
glasner.photo: could not connect to host
+glbg.eu: could not connect to host
gmantra.org: could not connect to host
gnom.me: could not connect to host
godrive.ga: could not connect to host
+golik.net.pl: could not connect to host
google: could not connect to host
gottfridsberg.org: could not connect to host
goukon.ru: could not connect to host
gozadentro.com: could not connect to host
gradsm-ci.net: could not connect to host
+graffen.dk: could not connect to host
granth.io: could not connect to host
gratisonlinesex.com: could not connect to host
greboid.co.uk: could not connect to host
greboid.com: could not connect to host
greenroach.ru: could not connect to host
gritte.net: could not connect to host
grizzlys.com: could not connect to host
grog.pw: could not connect to host
-gurochan.ch: could not connect to host
gvt2.com: could not connect to host
gvt3.com: could not connect to host
h3artbl33d.nl: could not connect to host
hackerchai.com: could not connect to host
hackingsafe.com: could not connect to host
halcyonsbastion.com: could not connect to host
harmfarm.nl: could not connect to host
hasabig.wang: could not connect to host
hasalittle.wang: could not connect to host
hdy.nz: could not connect to host
-heijblok.com: could not connect to host
heisenberg.co: could not connect to host
hellomouse.tk: could not connect to host
helpantiaging.com: could not connect to host
helsingfors.guide: could not connect to host
henriknoerr.com: could not connect to host
hentaimaster.net: could not connect to host
here.ml: could not connect to host
+hg0088.vip: could not connect to host
+hg718.com: could not connect to host
hg881.com: could not connect to host
+higilopocht.li: could not connect to host
hiraku.me: could not connect to host
homophoni.com: could not connect to host
hoodoo.io: could not connect to host
hoodoo.tech: could not connect to host
-horeizai.net: could not connect to host
horvathd.eu: could not connect to host
hudingyuan.cn: could not connect to host
hukkatavara.com: could not connect to host
+hydra.zone: could not connect to host
+iactu.info: could not connect to host
ibase.com: could not connect to host
ictpro.info: could not connect to host
iec.pe: could not connect to host
ifxnet.com: could not connect to host
ikenmeyer.eu: could not connect to host
ileat.com: could not connect to host
+image.tf: could not connect to host
+imgencrypt.com: could not connect to host
imperdintechnologies.com: could not connect to host
inexpensivecomputers.net: could not connect to host
informatik.zone: could not connect to host
ingalls.run: could not connect to host
injust.me: could not connect to host
inscript.pl: could not connect to host
insouciant.org: could not connect to host
installgentoo.net: could not connect to host
@@ -384,32 +404,33 @@ isamiok.com: could not connect to host
issuesofconcern.in: could not connect to host
itilo.de: could not connect to host
itpro-mg.de: could not connect to host
itproject.guru: could not connect to host
ivanpolchenko.com: could not connect to host
ixio.cz: could not connect to host
jaaxypro.com: could not connect to host
jakincode.army: could not connect to host
+jan-rieger.de: could not connect to host
japan4you.org: could not connect to host
jaredfraser.com: could not connect to host
javascriptlab.fr: could not connect to host
-jayharris.ca: could not connect to host
jbrowndesign.me: could not connect to host
jean-remy.ch: could not connect to host
+jens.hk: could not connect to host
jeremyc.ca: could not connect to host
jhburton.co.uk: could not connect to host
jie.dance: could not connect to host
jobmedic.com: could not connect to host
joecod.es: could not connect to host
johand.io: could not connect to host
jonathansanchez.pro: could not connect to host
jonpads.com: could not connect to host
joostbovee.nl: could not connect to host
-jornalalerta.com.br: could not connect to host
+jorovik.com: could not connect to host
juliawebber.co.za: could not connect to host
just-pools.co.za: could not connect to host
justmy.website: could not connect to host
juventusmania1897.com: could not connect to host
kabus.org: could not connect to host
kaika-facilitymanagement.de: could not connect to host
kamikaichimaru.com: could not connect to host
kapo.info: could not connect to host
@@ -417,152 +438,158 @@ karanlyons.com: could not connect to hos
karuneshjohri.com: could not connect to host
katzen.me: could not connect to host
kawaiiku.com: could not connect to host
kawaiiku.de: could not connect to host
kelm.me: could not connect to host
kenrogers.co: could not connect to host
kenvix.com: could not connect to host
keyihao.cn: could not connect to host
+kibibit.net: could not connect to host
kieranweightman.me: could not connect to host
kinepolis-studio.ga: could not connect to host
kitchenaccessories.pro: could not connect to host
kjchernov.info: could not connect to host
kjoglum.me: could not connect to host
+kleinreich.de: could not connect to host
kngk-azs.ru: could not connect to host
knownsec.cf: could not connect to host
koketteriet.se: could not connect to host
kollawat.me: could not connect to host
+komget.net: could not connect to host
konicaprinterdriver.com: could not connect to host
konventseliten.se: could not connect to host
kopfsalat.eu: could not connect to host
kopular.com: could not connect to host
kousaku.jp: could not connect to host
kozmik.co: could not connect to host
kpvpn.com: could not connect to host
-krag.be: could not connect to host
kteen.info: could not connect to host
kylling.io: could not connect to host
l18.io: could not connect to host
laboutiquemarocaineduconvoyeur.ma: could not connect to host
lacasa.fr: could not connect to host
lachawoj.de: could not connect to host
+larptreff.de: could not connect to host
lathamlabs.com: could not connect to host
lathamlabs.net: could not connect to host
lathamlabs.org: could not connect to host
lavapot.com: could not connect to host
lawformt.com: could not connect to host
lazulu.com: could not connect to host
lcti.biz: could not connect to host
ldcraft.pw: could not connect to host
+ldvsoft.net: could not connect to host
lebal.se: could not connect to host
legaltip.eu: could not connect to host
legitaxi.com: could not connect to host
leifdreizler.com: could not connect to host
leiming.co: could not connect to host
leninalbertop.com.ve: could not connect to host
leonardcamacho.me: could not connect to host
leveredge.net: could not connect to host
lezdomsm.com: could not connect to host
lheinrich.org: could not connect to host
-libbitcoin.org: could not connect to host
+liceserv.com: could not connect to host
lifenexto.com: could not connect to host
likenosis.com: could not connect to host
lingerieonline.com.br: could not connect to host
linksanitizer.com: could not connect to host
linksextremist.at: could not connect to host
linuxcommand.ru: could not connect to host
+linuxwebservertips.in: could not connect to host
linvx.org: could not connect to host
lissabon.guide: could not connect to host
littleservice.cn: could not connect to host
litz.ca: could not connect to host
litzenberger.ca: could not connect to host
liukang.tech: could not connect to host
-liul.in: could not connect to host
livnev.me: could not connect to host
lobosdomain.no-ip.info: could not connect to host
-localhorst.xyz: could not connect to host
locker3.com: could not connect to host
logcat.info: could not connect to host
+logement.com: could not connect to host
logic8.ml: could not connect to host
+longhorn-imports.com: could not connect to host
lookyman.net: could not connect to host
-loss.no: could not connect to host
lovelytimes.net: could not connect to host
luav.org: could not connect to host
-lubomirkazakov.com: could not connect to host
lukasunger.cz: could not connect to host
lukasunger.net: could not connect to host
luxonetwork.com: could not connect to host
-luzat.com: could not connect to host
m4g.ru: could not connect to host
maartenterpstra.xyz: could not connect to host
macedopesca.com.br: could not connect to host
+madoka.nu: could not connect to host
madrants.net: could not connect to host
magnacumlaude.co: could not connect to host
-maik-mahlow.de: could not connect to host
mail4geek.com: could not connect to host
+mainzelmaennchen.net: could not connect to host
marketingdesignu.cz: could not connect to host
martin-mattel.com: could not connect to host
marvinkeller.de: could not connect to host
mastodon.my: could not connect to host
-matcha-iga.jp: could not connect to host
mathijskingma.nl: could not connect to host
+matthewkenny.co.uk: could not connect to host
mattwb65.com: could not connect to host
-mazzotta.me: could not connect to host
mcdanieldevelopmentservices.com: could not connect to host
mchopkins.net: could not connect to host
me-dc.com: could not connect to host
meanevo.com: could not connect to host
mecanicadom.com: could not connect to host
mediadandy.com: could not connect to host
melonstudios.net: could not connect to host
mentax.net: could not connect to host
mes10doigts.ovh: could not connect to host
metachris.com: could not connect to host
metrobriefs.com: could not connect to host
mhjuma.com: could not connect to host
+michaelsulzer.com: could not connect to host
+michaelsulzer.eu: could not connect to host
+minantavla.se: could not connect to host
+minesouls.fr: could not connect to host
mingy.ddns.net: could not connect to host
minitruckin.net: could not connect to host
mirodasilva.be: could not connect to host
+mistybox.com: could not connect to host
miyugirls.com: could not connect to host
mkfs.fr: could not connect to host
-mmstick.tk: could not connect to host
modded-minecraft-server-list.com: could not connect to host
moe-max.jp: could not connect to host
+moin.jp: could not connect to host
moobo.xyz: could not connect to host
mooselook.de: could not connect to host
morotech.com.br: could not connect to host
mosaique-lachenaie.fr: could not connect to host
moskva.guide: could not connect to host
-motherboard.services: could not connect to host
motomorgen.com: could not connect to host
motorbiketourhanoi.com: could not connect to host
mountainadventureseminars.com: could not connect to host
mowalls.net: could not connect to host
mpserver12.org: could not connect to host
mrliu.me: could not connect to host
mtn.cc: could not connect to host
+muga.space: could not connect to host
munduch.cz: could not connect to host
muslimbanter.co.za: could not connect to host
mybeautyjobs.de: could not connect to host
mycustomwriting.com: could not connect to host
myfrenchtattoo.fr: could not connect to host
-n0099.cf: could not connect to host
naphex.rocks: could not connect to host
narodsovety.ru: could not connect to host
natanaelys.com: could not connect to host
nauck.org: could not connect to host
ncdesigns-studio.com: could not connect to host
nedcf.org.uk: could not connect to host
neer.io: could not connect to host
+nestor.nu: could not connect to host
netbrief.ml: could not connect to host
netica.fr: could not connect to host
netulo.com: could not connect to host
nevadafiber.net: could not connect to host
-next-log.ru: could not connect to host
nexuscorporation.in: could not connect to host
nfluence.org: could not connect to host
nico.st: could not connect to host
nienfun.com: could not connect to host
nikksno.io: could not connect to host
nikolasbradshaw.com: could not connect to host
niouininon.eu: could not connect to host
nirada.info: could not connect to host
@@ -575,80 +602,88 @@ novascan.net: could not connect to host
novelabs.eu: could not connect to host
nowremindme.com: could not connect to host
nsdev.cn: could not connect to host
nup.pw: could not connect to host
obdolbacca.ru: could not connect to host
oberhof.co: could not connect to host
off-the-clock.us: could not connect to host
office-ruru.com: could not connect to host
+ogkw.de: could not connect to host
+okmx.de: could not connect to host
oliverspringer.eu: could not connect to host
+ollies.cloud: could not connect to host
+olliespage.net: could not connect to host
onewebdev.info: could not connect to host
onstud.com: could not connect to host
onwie.fr: could not connect to host
opengg.me: could not connect to host
+openrainbow.net: could not connect to host
+openrainbow.org: could not connect to host
openspace.xxx: could not connect to host
-oranges.tokyo: could not connect to host
oscsdp.cz: could not connect to host
+osterkraenzchen.de: could not connect to host
+osx86spain.com: could not connect to host
outetc.com: could not connect to host
oxygaming.com: could not connect to host
oxymc.com: could not connect to host
p4chivtac.com: could not connect to host
+pajuvuo.fi: could not connect to host
panj.ws: could not connect to host
+paradiesgirls.ch: could not connect to host
pardnoy.com: could not connect to host
passrhce.com: could not connect to host
passrhcsa.com: could not connect to host
patrickbusch.net: could not connect to host
patrickneuro.de: could not connect to host
-pautadiaria.com: could not connect to host
pear2pear.de: could not connect to host
perkbrian.com: could not connect to host
persjrp.ca: could not connect to host
persoform.ch: could not connect to host
+petangen.se: could not connect to host
pgpmail.cc: could not connect to host
phasme-2016.com: could not connect to host
philippa.cool: could not connect to host
picallo.es: could not connect to host
picone.com.au: could not connect to host
pinebaylibrary.org: could not connect to host
pitfire.io: could not connect to host
-pixelbash.de: could not connect to host
plaasprodukte.com: could not connect to host
planbox.info: could not connect to host
playsoundevents.be: could not connect to host
plussizereviews.com: could not connect to host
pnsc.is: could not connect to host
pointagri.com: could not connect to host
pokalsocial.de: could not connect to host
polit.im: could not connect to host
poolinstallers.co.za: could not connect to host
pouets.ovh: could not connect to host
powerentertainment.tv: could not connect to host
-prelogica.com.br: could not connect to host
privcloud.org: could not connect to host
projectasterk.com: could not connect to host
provitacare.com: could not connect to host
proxydesk.eu: could not connect to host
proxyweb.us: could not connect to host
psncardplus.be: could not connect to host
psncardplus.com: could not connect to host
psncardplus.dk: could not connect to host
psncardplus.nl: could not connect to host
psncardplus.se: could not connect to host
-psu.je: could not connect to host
publimepa.it: could not connect to host
puhe.se: could not connect to host
pypa.io: could not connect to host
pythia.nz: could not connect to host
+q8mp3.me: could not connect to host
qoqo.us: could not connect to host
qrforex.com: could not connect to host
qscloud.de: could not connect to host
qto.net: could not connect to host
r0t.co: could not connect to host
rainbin.com: could not connect to host
+rdns.cc: could not connect to host
readityourself.net: could not connect to host
real-compare.com: could not connect to host
realwoo.com: could not connect to host
reignsphere.net: could not connect to host
reismil.ch: could not connect to host
relsak.cz: could not connect to host
relvan.com: could not connect to host
report-to.io: could not connect to host
@@ -660,17 +695,20 @@ reporturl.com: could not connect to host
reporturl.io: could not connect to host
reqognize.com: could not connect to host
ressl.ch: could not connect to host
retcor.net: could not connect to host
reth.ch: could not connect to host
retube.ga: could not connect to host
reykjavik.guide: could not connect to host
richeza.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 119" data: no]
+robin-novotny.com: could not connect to host
+robomonkey.org: could not connect to host
roeldevries.me: could not connect to host
+roelf.org: could not connect to host
roguesignal.net: could not connect to host
rohanbassett.com: could not connect to host
romainmuller.xyz: could not connect to host
roolevoi.ru: could not connect to host
rpgmaker.es: could not connect to host
rs-devdemo.host: could not connect to host
rsldb.com: could not connect to host
rubyist.today: could not connect to host
@@ -680,235 +718,241 @@ runementors.com: could not connect to ho
ruobiyi.com: could not connect to host
ruudkoot.nl: could not connect to host
rxbusiness.com: could not connect to host
saferedirectlink.com: could not connect to host
sallysubs.com: could not connect to host
salzamt.tk: could not connect to host
samaritan.tech: could not connect to host
sanatrans.com: could not connect to host
+sanderkoenders.eu: could not connect to host
+sanderkoenders.nl: could not connect to host
sarndipity.com: could not connect to host
sbiewald.de: could not connect to host
-scheidtweiler.de: could not connect to host
sciencemonster.co.uk: could not connect to host
scm-2017.org: could not connect to host
sctm.at: could not connect to host
secitem.de: could not connect to host
sectest.ml: could not connect to host
security.xn--q9jyb4c: could not connect to host
securitysoapbox.com: could not connect to host
securoswiss.ch: could not connect to host
sellmoretires.com: could not connect to host
sep23.ru: could not connect to host
servfefe.com: could not connect to host
sesha.co.za: could not connect to host
shadowplus.net: could not connect to host
shadowrocket.net: could not connect to host
+shakepeers.org: could not connect to host
sharevari.com: could not connect to host
+sharingcode.com: could not connect to host
shavingks.com: could not connect to host
sheratan.web.id: could not connect to host
sheying.tm: could not connect to host
shirakaba-cc.com: could not connect to host
+shishlik.net: could not connect to host
shopifycloud.com: could not connect to host
shoppingreview.org: could not connect to host
-sickfile.com: could not connect to host
-siliconchip.me: could not connect to host
+shuro.de: could not connect to host
simbolo.co.uk: could not connect to host
simplerses.com: could not connect to host
siqi.wang: could not connect to host
skarox.com: could not connect to host
skarox.net: could not connect to host
skarox.ru: could not connect to host
sky-aroma.com: could not connect to host
skylocker.net: could not connect to host
skylocker.nl: could not connect to host
+sl1pkn07.wtf: could not connect to host
slovoice.org: could not connect to host
smith.is: could not connect to host
sml.lc: could not connect to host
socialworkout.com: could not connect to host
socialworkout.net: could not connect to host
socialworkout.org: could not connect to host
socialworkout.tv: could not connect to host
socketize.com: could not connect to host
sodiao.cc: could not connect to host
sojingle.net: could not connect to host
solos.im: could not connect to host
+somali-derp.com: could not connect to host
soulema.com: could not connect to host
soundhunter.xyz: could not connect to host
sowingseasons.com: could not connect to host
spicywombat.com: could not connect to host
-spom.net: could not connect to host
sportsmanadvisor.com: could not connect to host
sprint.ml: could not connect to host
-squido.ch: could not connect to host
stadionmanager.com: could not connect to host
stadtgartenla.com: could not connect to host
statgram.me: could not connect to host
static-assets.io: could not connect to host
stbennett.org: could not connect to host
-stefanovski.io: could not connect to host
steffi-in-australien.com: could not connect to host
steven-bennett.com: could not connect to host
stickswag.cf: could not connect to host
stilettomoda.com.br: could not connect to host
stpip.com: could not connect to host
stressfreehousehold.com: could not connect to host
-stuka-art.de: could not connect to host
stylle.me: could not connect to host
+suelyonjones.com: could not connect to host
sulek.eu: could not connect to host
suneilpatel.com: could not connect to host
sunjaydhama.com: could not connect to host
sussexwebdesigns.com: could not connect to host
sviz.pro: could not connect to host
+swiftconf.com: could not connect to host
t3rror.net: could not connect to host
takusan.ru: could not connect to host
talktwincities.com: could not connect to host
tdelmas.eu: could not connect to host
tdelmas.ovh: could not connect to host
tdsb.cf: could not connect to host
tdsbhack.tk: could not connect to host
techask.it: could not connect to host
+techcavern.ml: could not connect to host
techpit.us: could not connect to host
telugu4u.net: could not connect to host
tenispopular.com: could not connect to host
teracloud.at: could not connect to host
terminalvelocity.co.nz: could not connect to host
terrax.net: could not connect to host
tetsai.com: could not connect to host
theprivacysolution.com: could not connect to host
thesehighsandlows.com: could not connect to host
-thesteins.org: could not connect to host
thinkcash.nl: could not connect to host
-thinktux.net: could not connect to host
thynx.io: could not connect to host
tiliaze.info: could not connect to host
tiliaze.net: could not connect to host
timysewyn.be: could not connect to host
tokaido.com: could not connect to host
topdetoxcleanse.com: could not connect to host
topnotchendings.com: could not connect to host
totallynotaserver.com: could not connect to host
totch.de: could not connect to host
totot.net: could not connect to host
+touch-up-net.com: could not connect to host
toxicip.com: could not connect to host
transcendmotor.sg: could not connect to host
tsaro.io: could not connect to host
tucidi.net: could not connect to host
tumelum.de: could not connect to host
turn-sticks.com: could not connect to host
twem.ddns.net: could not connect to host
twiri.net: could not connect to host
twotube.ie: could not connect to host
tyil.work: could not connect to host
tykoon.com: could not connect to host
-u.nu: could not connect to host
-uberboxen.net: could not connect to host
udo-luetkemeier.de: could not connect to host
uevan.com: could not connect to host
umsapi.com: could not connect to host
unhu.fr: could not connect to host
unicorn.li: could not connect to host
unsupervised.ca: could not connect to host
untoldstory.eu: could not connect to host
urbackups.com: could not connect to host
-uscp8.com: could not connect to host
uwesander.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 119" data: no]
vadik.me: could not connect to host
valshamar.is: could not connect to host
-valtoaho.com: could not connect to host
vanderstraeten.dynv6.net: could not connect to host
vapehour.com: could not connect to host
vapeshopsupply.com: could not connect to host
varela-electricite.fr: could not connect to host
venmos.com: could not connect to host
versfin.net: could not connect to host
+verzick.com: could not connect to host
vgatest.nl: could not connect to host
vinetalk.net: could not connect to host
visiontree.eu: could not connect to host
vlogge.com: could not connect to host
vmug.pl: could not connect to host
+vozami.com: could not connect to host
vrtouring.org: could not connect to host
vsx.ch: could not connect to host
vxapps.com: could not connect to host
w4.no: could not connect to host
waixingrenfuli.vip: could not connect to host
-wallpapers.pub: could not connect to host
wanashi.com: could not connect to host
+warekon.com: could not connect to host
+warekon.dk: could not connect to host
warlions.info: could not connect to host
warp-radio.com: could not connect to host
warp-radio.tv: could not connect to host
watchweasel.com: could not connect to host
we.serveftp.net: could not connect to host
weareincognito.org: could not connect to host
webart-factory.de: could not connect to host
webcatechism.com: could not connect to host
webdesigneauclaire.com: could not connect to host
webhackspro.com: could not connect to host
+webreslist.com: could not connect to host
webtech.com.br: could not connect to host
webthings.com.br: could not connect to host
wecanvisit.com: could not connect to host
-weed.ren: could not connect to host
-wekibe.de: could not connect to host
+weirdserver.com: could not connect to host
welby.cat: could not connect to host
welcomehelp.de: could not connect to host
werhatunsverraten.eu: could not connect to host
werkkrew.xyz: could not connect to host
wessner.org: could not connect to host
wetthost.com: could not connect to host
+whey-protein.ch: could not connect to host
whilsttraveling.com: could not connect to host
winnersports.co: could not connect to host
+wipply.com: could not connect to host
wireframesoftware.com: could not connect to host
wissl.org: could not connect to host
+wizznab.tk: could not connect to host
+wjglerum.nl: could not connect to host
wolfemg.com: could not connect to host
wolfenland.net: could not connect to host
woomu.me: could not connect to host
wooplagaming.com: could not connect to host
workemy.com: could not connect to host
-worldfree4.org: could not connect to host
wp-fastsearch.de: could not connect to host
wp6.pw: could not connect to host
wriedts.de: could not connect to host
wwv-8522.com: could not connect to host
www-8887999.com: could not connect to host
www.re: could not connect to host
www.sb: could not connect to host
www.simbolo.co.uk: could not connect to host
xia100.xyz: could not connect to host
xiaoyu.net: could not connect to host
xing.ml: could not connect to host
xn--8mr166hf6s.xn--fiqs8s: could not connect to host
xn--yj8h0m.ws: could not connect to host
+xps2pdf.co.uk: could not connect to host
xqin.net: could not connect to host
xtremenutrition.com.br: could not connect to host
xwaretech.info: could not connect to host
yabrt.cn: could not connect to host
yaucy.win: could not connect to host
yffengshi.ml: could not connect to host
yoga.is-an-engineer.com: could not connect to host
+yum.beer: could not connect to host
yux.fr: could not connect to host
yvesx.com: could not connect to host
zaoext.com: could not connect to host
zby.io: could not connect to host
zeloz.xyz: could not connect to host
zenghx.tk: could not connect to host
zerosource.net: could not connect to host
zhangfangzhou.com: could not connect to host
zhiin.net: could not connect to host
zorz.info: could not connect to host
ztytian.com: could not connect to host
zuefle.net: could not connect to host
-zukix.com: could not connect to host
zulu7.com: could not connect to host
zuviel.space: could not connect to host
zzw.ca: could not connect to host
0005.com: could not connect to host
0005aa.com: could not connect to host
007sascha.de: did not receive HSTS header
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 119" data: no]
-0222aa.com: did not receive HSTS header
+0222aa.com: could not connect to host
048.ag: could not connect to host
050508.com: could not connect to host
0f.io: could not connect to host
0g.org.uk: could not connect to host
0o0.ooo: could not connect to host
0p.no: did not receive HSTS header
0w0.vc: could not connect to host
0x0a.net: could not connect to host
@@ -933,25 +977,23 @@ 123.gg: could not connect to host
123share.org: could not connect to host
123test.de: did not receive HSTS header
123test.es: did not receive HSTS header
123test.fr: did not receive HSTS header
126ium.moe: could not connect to host
127011-networks.ch: could not connect to host
12vpn.org: could not connect to host
12vpnchina.com: could not connect to host
-1391kj.com: did not receive HSTS header
-1396.cc: did not receive HSTS header
1396.net: could not connect to host
1536.cf: could not connect to host
163pwd.com: could not connect to host
166166.com: could not connect to host
16deza.com: did not receive HSTS header
16packets.com: could not connect to host
-173vpn.cn: could not connect to host
+173vpn.cn: did not receive HSTS header
173vpns.com: did not receive HSTS header
188betwarriors.co.uk: could not connect to host
188trafalgar.ca: did not receive HSTS header
195gm.com: could not connect to host
1a-jva.de: could not connect to host
1atic.com: could not connect to host
1co-jp.net: did not receive HSTS header
1cover.com: could not connect to host
@@ -972,17 +1014,17 @@ 25daysof.io: could not connect to host
2859cc.com: could not connect to host
2acbi-asso.fr: did not receive HSTS header
2bizi.ru: could not connect to host
2brokegirls.org: could not connect to host
2carpros.com: did not receive HSTS header
2intermediate.co.uk: did not receive HSTS header
2or3.tk: could not connect to host
2smart4food.com: did not receive HSTS header
-2ss.jp: could not connect to host
+2ss.jp: did not receive HSTS header
300651.ru: did not receive HSTS header
300m.com: did not receive HSTS header
300mbmovie24.com: did not receive HSTS header
300mbmovies4u.cc: could not connect to host
301.website: could not connect to host
302.nyc: could not connect to host
314166.com: could not connect to host
32ph.com: could not connect to host
@@ -1015,16 +1057,17 @@ 4cclothing.com: could not connect to hos
4elements.com: did not receive HSTS header
4eyes.ch: did not receive HSTS header
4miners.net: could not connect to host
4mybaby.ch: did not receive HSTS header
4ourty2.org: did not receive HSTS header
4sqsu.eu: could not connect to host
4w-performers.link: could not connect to host
50millionablaze.org: could not connect to host
+513vpn.net: did not receive HSTS header
517vpn.cn: could not connect to host
518maicai.com: did not receive HSTS header
540.co: did not receive HSTS header
54bf.com: could not connect to host
56ct.com: could not connect to host
5piecesofadvice.com: could not connect to host
5w5.la: could not connect to host
60ych.net: did not receive HSTS header
@@ -1226,17 +1269,17 @@ aka.my: did not receive HSTS header
akboy.pw: could not connect to host
akclinics.org: did not receive HSTS header
akerek.hu: could not connect to host
akgundemirbas.com: could not connect to host
akhilindurti.com: could not connect to host
akkadia.cc: could not connect to host
akombakom.net: could not connect to host
akselimedia.fi: did not receive HSTS header
-akstudentsfirst.org: could not connect to host
+akstudentsfirst.org: did not receive HSTS header
aktivist.in: did not receive HSTS header
al-shami.net: could not connect to host
aladdin.ie: did not receive HSTS header
alanlee.net: could not connect to host
alanrickmanflipstable.com: could not connect to host
alariel.de: did not receive HSTS header
alarme-gps.ch: could not connect to host
alarmegps.ch: could not connect to host
@@ -1446,17 +1489,16 @@ arbu.eu: max-age too low: 2419200
ardao.me: could not connect to host
ardorlabs.se: could not connect to host
arewedubstepyet.com: did not receive HSTS header
areyouever.me: did not receive HSTS header
argennon.xyz: could not connect to host
arguggi.co.uk: could not connect to host
ariacreations.net: did not receive HSTS header
arislight.com: did not receive HSTS header
-aristilabs.com: did not receive HSTS header
arlen.io: could not connect to host
arlen.se: could not connect to host
armingrodon.de: max-age too low: 0
armor.com: did not receive HSTS header
armored.ninja: could not connect to host
armory.consulting: could not connect to host
armory.supplies: could not connect to host
armsday.com: could not connect to host
@@ -1473,22 +1515,21 @@ ars-design.net: could not connect to hos
art2web.net: could not connect to host
artartefatos.com.br: could not connect to host
artesupra.com: did not receive HSTS header
arthan.me: could not connect to host
artifex21.com: could not connect to host
artifex21.fr: could not connect to host
artiming.com: could not connect to host
artisavotins.com: could not connect to host
-artisphere.ch: did not receive HSTS header
artistnetwork.nl: did not receive HSTS header
arto.bg: did not receive HSTS header
arturkohut.com: could not connect to host
arvamus.eu: could not connect to host
-arzaroth.com: did not receive HSTS header
+arzaroth.com: could not connect to host
as.se: could not connect to host
as9178.net: could not connect to host
asahikoji.net: could not connect to host
asasuou.pw: could not connect to host
asc16.com: could not connect to host
ascamso.com: could not connect to host
aschaefer.net: could not connect to host
asdpress.cn: could not connect to host
@@ -1632,17 +1673,17 @@ bandb.xyz: could not connect to host
bandrcrafts.com: did not receive HSTS header
bangzafran.com: max-age too low: 36000
banksaround.com: did not receive HSTS header
banqingdiao.com: could not connect to host
baobaobooks.net: did not receive HSTS header
barely.sexy: did not receive HSTS header
bariller.fr: could not connect to host
barrelhead.org: could not connect to host
-barrut.me: did not receive HSTS header
+barrut.me: could not connect to host
barshout.co.uk: could not connect to host
barss.io: could not connect to host
bartbania.com: did not receive HSTS header
barunisystems.com: could not connect to host
bashcode.ninja: could not connect to host
basicsolutionsus.com: did not receive HSTS header
basilisk.io: could not connect to host
bassh.net: did not receive HSTS header
@@ -1718,16 +1759,17 @@ berlatih.com: did not receive HSTS heade
berlinleaks.com: could not connect to host
bernieware.de: could not connect to host
berrymark.be: max-age too low: 0
besixdouze.world: could not connect to host
besola.de: did not receive HSTS header
bestbeards.ca: could not connect to host
bestcellular.com: did not receive HSTS header
besthost.cz: did not receive HSTS header
+bestmodels.su: did not receive HSTS header
bestof1001.de: did not receive HSTS header
bestorangeseo.com: could not connect to host
betaclean.fr: did not receive HSTS header
betafive.net: could not connect to host
betakah.net: could not connect to host
betcafearena.ro: did not receive HSTS header
bethanyduke.com: max-age too low: 7776000
bethditto.com: did not receive HSTS header
@@ -1783,17 +1825,16 @@ bimbo.com: did not receive HSTS header
binaryfigments.com: max-age too low: 86400
binderapp.net: could not connect to host
bioespuna.eu: did not receive HSTS header
biofam.ru: did not receive HSTS header
bioknowme.com: did not receive HSTS header
bionicspirit.com: could not connect to host
biophysik-ssl.de: did not receive HSTS header
birkman.com: did not receive HSTS header
-biscoint.io: did not receive HSTS header
bismarck.moe: did not receive HSTS header
bisterfeldt.com: could not connect to host
bitbit.org: did not receive HSTS header
bitchan.it: could not connect to host
bitcoinprivacy.net: did not receive HSTS header
bitcoinworld.me: could not connect to host
bitconcepts.co.uk: could not connect to host
biteoftech.com: did not receive HSTS header
@@ -1932,19 +1973,17 @@ brix.ninja: did not receive HSTS header
brks.xyz: could not connect to host
broken-oak.com: could not connect to host
brookechase.com: did not receive HSTS header
browserid.org: could not connect to host
brrd.io: did not receive HSTS header
brunix.net: did not receive HSTS header
brunohenc.from.hr: did not receive HSTS header
brunoonline.co.uk: could not connect to host
-bryanquigley.com: did not receive HSTS header
bryn.xyz: could not connect to host
-bsagan.fr: could not connect to host
bsdtips.com: could not connect to host
bsociabl.com: could not connect to host
btc-e.com: did not receive HSTS header
btcdlc.com: could not connect to host
buben.tech: did not receive HSTS header
bubulazi.com: did not receive HSTS header
bubulazy.com: did not receive HSTS header
buch-cuber.de: max-age too low: 0
@@ -1982,16 +2021,17 @@ burian-server.cz: could not connect to h
burningcrash.de: max-age too low: 600000
burpsuite.site: could not connect to host
burrow.ovh: could not connect to host
burrowingsec.com: could not connect to host
burtrum.me: could not connect to host
burtrum.top: could not connect to host
buryat-mongol.cf: could not connect to host
business.lookout.com: could not connect to host
+businessadviceperth.com.au: did not receive HSTS header
businesshosting.nl: did not receive HSTS header
businessloanconnection.org: did not receive HSTS header
busold.ws: could not connect to host
bustimes.org: could not connect to host
butchersworkshop.com: did not receive HSTS header
butian518.com: did not receive HSTS header
buttercoin.com: could not connect to host
butterfieldstraining.com: did not receive HSTS header
@@ -2018,19 +2058,19 @@ bypassed.host: could not connect to host
bypassed.me: could not connect to host
bypassed.online: could not connect to host
bypassed.org: did not receive HSTS header
bypassed.party: could not connect to host
bypassed.press: could not connect to host
bypassed.pw: could not connect to host
bypassed.rocks: could not connect to host
bypassed.site: could not connect to host
-bypassed.today: did not receive HSTS header
-bypassed.works: did not receive HSTS header
-bypassed.world: did not receive HSTS header
+bypassed.today: could not connect to host
+bypassed.works: could not connect to host
+bypassed.world: could not connect to host
bypro.xyz: could not connect to host
bysymphony.com: max-age too low: 0
byte-time.com: did not receive HSTS header
byte.chat: could not connect to host
byte.wtf: did not receive HSTS header
bytepark.de: did not receive HSTS header
bytesatwork.eu: could not connect to host
bytesund.biz: could not connect to host
@@ -2162,16 +2202,17 @@ cfcnexus.org: 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
cganx.org: could not connect to host
cgerstner.eu: could not connect to host
cgsshelper.tk: could not connect to host
chahub.com: could not connect to host
chainmonitor.com: could not connect to host
+champ.dog: did not receive HSTS header
championsofregnum.com: did not receive HSTS header
chancat.blog: max-age too low: 2592000
chandlerredding.com: did not receive HSTS header
changetip.com: did not receive HSTS header
chanshiyu.com: did not receive HSTS header
chaos.fail: did not receive HSTS header
chaoswebs.net: did not receive HSTS header
charityclear.com: did not receive HSTS header
@@ -2193,16 +2234,17 @@ chebedara.com: could not connect to host
checkout.google.com: did not receive HSTS header (error ignored - included regardless)
cheerflow.com: could not connect to host
cheesetart.my: could not connect to host
cheetah85.de: could not connect to host
chefgalles.com.br: could not connect to host
chejianer.cn: could not connect to host
chenfengyi.com: could not connect to host
chensir.net: could not connect to host
+chentianyi.cn: did not receive HSTS header
chepaofen.com: did not receive HSTS header
cherekerry.com: could not connect to host
cherysunzhang.com: did not receive HSTS header
chestnut.cf: did not receive HSTS header
chiamata-aiuto.ch: could not connect to host
chib.chat: could not connect to host
chihiro.xyz: did not receive HSTS header
chijiokeindustries.co.uk: could not connect to host
@@ -2251,16 +2293,17 @@ cimalando.eu: could not connect to host
cinartelorgu.com: did not receive HSTS header
cintdirect.com: could not connect to host
cioconference.co.nz: could not connect to host
ciplanutrition.com: did not receive HSTS header
cirrohost.com: did not receive HSTS header
ciscohomeanalytics.com: could not connect to host
ciscommerce.net: [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 119" data: no]
citiagent.cz: could not connect to host
+citizenspact.eu: did not receive HSTS header
cityoflaurel.org: did not receive HSTS header
cium.ru: could not connect to host
cjcaron.org: could not connect to host
cktennis.com: did not receive HSTS header
claimit.ml: could not connect to host
clan-ww.com: did not receive HSTS header
clara-baumert.de: could not connect to host
claralabs.com: did not receive HSTS header
@@ -2358,36 +2401,35 @@ cohesive.io: did not receive HSTS header
coinbit.trade: did not receive HSTS header
coindam.com: could not connect to host
coldlostsick.net: could not connect to host
colearnr.com: could not connect to host
collabra.email: did not receive HSTS header
collard.tk: did not receive HSTS header
collectosaurus.com: did not receive HSTS header
collegepulse.org: could not connect to host
-collies.eu: max-age too low: 3
+collies.eu: could not connect to host
collins.press: did not receive HSTS header
collinsartworks.com: did not receive HSTS header
collision.fyi: could not connect to host
colmexpro.com: did not receive HSTS header
colognegaming.net: could not connect to host
coloradocomputernetworking.net: could not connect to host
-colorectalcompounding.com: did not receive HSTS header
colorlib.com: did not receive HSTS header
colorunhas.com.br: could not connect to host
-cometonovascotia.ca: did not receive HSTS header
comfortdom.ua: did not receive HSTS header
comfortticket.de: did not receive HSTS header
comfy.cafe: did not receive HSTS header
comfy.moe: did not receive HSTS header
comicspines.com: could not connect to host
comitesaustria.at: could not connect to host
comiteshopping.com: could not connect to host
commercialplanet.eu: could not connect to host
commune-preuilly.fr: did not receive HSTS header
+comocurarlashemorroidesya.com: did not receive HSTS header
comotalk.com: could not connect to host
compalytics.com: could not connect to host
comparamejor.com: did not receive HSTS header
compareinsurance.com.au: did not receive HSTS header
comparejewelleryprices.co.uk: could not connect to host
comparetravelinsurance.com.au: did not receive HSTS header
compassionate-biology.com: could not connect to host
compiledworks.com: could not connect to host
@@ -2416,17 +2458,17 @@ console.support: did not receive HSTS he
contactbig.com: did not receive HSTS header
contactsingapore.sg: did not receive HSTS header
contaimo.com: did not receive HSTS header
container-lion.com: did not receive HSTS header
containerstatistics.com: could not connect to host
contarkos.xyz: could not connect to host
continuumgaming.com: could not connect to host
controlcenter.gigahost.dk: did not receive HSTS header
-convert.zone: did not receive HSTS header
+convert.zone: could not connect to host
cooink.net: could not connect to host
coolaj86.com: did not receive HSTS header
coolchevy.org.ua: did not receive HSTS header
coole-meister.de: could not connect to host
coolrc.me: could not connect to host
cooxa.com: did not receive HSTS header
copshop.com.br: could not connect to host
cor-ser.es: could not connect to host
@@ -2452,17 +2494,16 @@ corruption-rsps.net: could not connect t
corruption-server.net: could not connect to host
costow.club: could not connect to host
count.sh: could not connect to host
couponcodeq.com: could not connect to host
couragewhispers.ca: could not connect to host
coursdeprogrammation.com: could not connect to host
coursella.com: did not receive HSTS header
covenantbank.net: could not connect to host
-coverdat.com: did not receive HSTS header
coverduck.ru: could not connect to host
cpuvinf.eu.org: could not connect to host
cracking.org: did not receive HSTS header
craftbeerbarn.co.uk: could not connect to host
craftedge.xyz: could not connect to host
craftmain.eu: could not connect to host
cranems.com.ua: did not receive HSTS header
cranioschule.com: did not receive HSTS header
@@ -2727,26 +2768,26 @@ detector.exposed: could not connect to h
detest.org: could not connect to host
detutorial.com: did not receive HSTS header
deuxvia.com: could not connect to host
dev: could not connect to host
dev-aegon.azurewebsites.net: did not receive HSTS header
dev-bluep.pantheonsite.io: did not receive HSTS header
devcu.com: could not connect to host
devcu.net: could not connect to host
-develop.cool: did not receive HSTS header
develop.fitness: could not connect to host
devh.net: could not connect to host
devincrow.me: could not connect to host
devisonline.ch: could not connect to host
devmsg.com: did not receive HSTS header
devnsec.com: could not connect to host
devnull.team: could not connect to host
devopps.me: did not receive HSTS header
devopsconnected.com: could not connect to host
+devstaff.gr: did not receive HSTS header
devtub.com: did not receive HSTS header
devuan.org: did not receive HSTS header
dewebwerf.nl: did not receive HSTS header
dewin.io: could not connect to host
dfrance.com.br: could not connect to host
dfviana.com.br: max-age too low: 2592000
dhaynes.xyz: could not connect to host
dhpcs.com: did not receive HSTS header
@@ -2883,17 +2924,17 @@ doujin.nagoya: could not connect to host
dovecotadmin.org: could not connect to host
doveholesband.co.uk: did not receive HSTS header
dovetailnow.com: could not connect to host
download.jitsi.org: did not receive HSTS header
downsouthweddings.com.au: could not connect to host
doxcelerate.com: max-age too low: 69
drach.xyz: did not receive HSTS header
dragonisles.net: could not connect to host
-dragons-of-highlands.cz: could not connect to host
+dragons-of-highlands.cz: did not receive HSTS header
dragonsmoke.cloud: could not connect to host
dragonstower.net: could not connect to host
dragonteam.ninja: could not connect to host
drakefortreasurer.sexy: could not connect to host
drakenson.de: did not receive HSTS header
dralexjimenez.com: did not receive HSTS header
drastosasports.com.br: could not connect to host
draw.uy: could not connect to host
@@ -2903,16 +2944,17 @@ dreamcatcherblog.de: could not connect t
dreamlighteyeserum.com: could not connect to host
dreamsforabetterworld.com.au: did not receive HSTS header
drewgle.net: could not connect to host
drhopeson.com: could not connect to host
drinknaturespower.com: could not connect to host
drinkvabeer.com: could not connect to host
drishti.guru: could not connect to host
drivercopilot.com: could not connect to host
+drogueriaelbarco.com: did not receive HSTS header
droidboss.com: did not receive HSTS header
droncentrum.pl: could not connect to host
droomhuis-in-brielle-kopen.nl: could not connect to host
droomhuis-in-de-friese-meren-kopen.nl: could not connect to host
droomhuis-in-delfzijl-kopen.nl: could not connect to host
droomhuis-in-friesland-kopen.nl: could not connect to host
droomhuis-in-laren-kopen.nl: could not connect to host
droomhuis-in-pekela-kopen.nl: could not connect to host
@@ -2933,16 +2975,17 @@ dshiv.io: could not connect to host
dtub.co: could not connect to host
dualias.xyz: did not receive HSTS header
dubik.su: did not receive HSTS header
dudesunderwear.com.br: could not connect to host
duelysthub.com: could not connect to host
duerls.de: did not receive HSTS header
dukec.me: could not connect to host
dullsir.com: did not receive HSTS header
+dune.io: did not receive HSTS header
dungi.org: could not connect to host
duongpho.com: did not receive HSTS header
duskopy.top: could not connect to host
dutchessuganda.com: did not receive HSTS header
dutchrank.com: did not receive HSTS header
duuu.ch: could not connect to host
dycontrol.de: could not connect to host
dylanscott.com.au: did not receive HSTS header
@@ -3010,16 +3053,17 @@ edelblack.ch: could not connect to host
edelsteincosmetic.com: did not receive HSTS header
eden-noel.at: could not connect to host
edenaya.com: did not receive HSTS header
edgereinvent.com: did not receive HSTS header
ediscomp.sk: did not receive HSTS header
edissecurity.sk: did not receive HSTS header
edix.ru: could not connect to host
edk.com.tr: did not receive HSTS header
+edlinus.cn: did not receive HSTS header
edmodo.com: did not receive HSTS header
edpubs.gov: did not receive HSTS header
eduardnikolenko.ru: could not connect to host
educatio.tech: could not connect to host
educourse.ga: could not connect to host
eduvance.in: did not receive HSTS header
eengezinswoning-in-alphen-aan-den-rijn-kopen.nl: could not connect to host
eengezinswoning-in-de-friese-meren-kopen.nl: could not connect to host
@@ -3084,22 +3128,22 @@ elpay.kz: did not receive HSTS header
elpo.xyz: could not connect to host
elsamakhin.com: could not connect to host
elsemanario.com: did not receive HSTS header
elsitar.com: could not connect to host
email.lookout.com: could not connect to host
email2rss.net: could not connect to host
emanatepixels.com: could not connect to host
emanga.su: did not receive HSTS header
+emanuelemazzotta.com: did not receive HSTS header
embroidered-stuff.com: could not connect to host
emeldi-commerce.com: max-age too low: 0
emesolutions.net: did not receive HSTS header
emiele.com.br: could not connect to host
emilyhorsman.com: did not receive HSTS header
-emilyjohnson.ga: did not receive HSTS header
eminovic.me: could not connect to host
emjainteractive.com: did not receive HSTS header
emjimadhu.com: could not connect to host
emmable.com: could not connect to host
emmaliddell.com: could not connect to host
emnitech.com: could not connect to host
empleosentorreon.mx: could not connect to host
empleostampico.com: did not receive HSTS header
@@ -3275,17 +3319,16 @@ eztv.ch: did not receive HSTS header
f-rickroll-g.pw: could not connect to host
f-s-u.co.uk: could not connect to host
f00.ca: did not receive HSTS header
f2f.cash: could not connect to host
faber.io: could not connect to host
fabhub.io: could not connect to host
fabianfischer.de: did not receive HSTS header
fabriko.fr: did not receive HSTS header
-fabrysociety.org: did not receive HSTS header
factorable.net: did not receive HSTS header
factorygw.com: did not receive HSTS header
fadilus.com: did not receive HSTS header
faesser.com: did not receive HSTS header
fahmed.de: did not receive HSTS header
fail4free.de: did not receive HSTS header
failproof.be: max-age too low: 604800
fairkey.dk: did not receive HSTS header
@@ -3327,16 +3370,17 @@ fatlossguide.xyz: could not connect to h
fatwin.pw: could not connect to host
fatzebra.com.au: max-age too low: 0
fayolle.info: did not receive HSTS header
fbox.li: could not connect to host
fcsic.gov: did not receive HSTS header
fdj.im: could not connect to host
fdt.name: did not receive HSTS header
feard.space: could not connect to host
+featuredmen.com: did not receive HSTS header
fedn.it: could not connect to host
fedo.moe: could not connect to host
feedthebot.com: did not receive HSTS header
feedthefuture.gov: did not receive HSTS header
feezmodo.com: did not receive HSTS header
fefore.com: could not connect to host
fegans.org.uk: did not receive HSTS header
felisslovakia.sk: [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 119" data: no]
@@ -3495,35 +3539,36 @@ franzt.de: could not connect to host
frasesdeamizade.pt: could not connect to host
frasesytarjetas.com: did not receive HSTS header
frasys.io: did not receive HSTS header
frau-inge.de: could not connect to host
fraudempire.com: could not connect to host
freeflow.tv: could not connect to host
freelanced.co.za: could not connect to host
freelo.cz: did not receive HSTS header
-freematthale.net: did not receive HSTS header
+freematthale.net: could not connect to host
freesoftwaredriver.com: did not receive HSTS header
freethought.org.au: could not connect to host
freeutopia.org: did not receive HSTS header
freqlabs.com: did not receive HSTS header
freshfind.xyz: could not connect to host
freshlymind.com: did not receive HSTS header
frezbo.com: could not connect to host
frforms.com: did not receive HSTS header
fridaperfumaria.com.br: could not connect to host
fridolinka.cz: could not connect to host
friendica.ch: could not connect to host
friendlyfiregameshow.com: could not connect to host
frimons.com: could not connect to host
froggstack.de: could not connect to host
-fromix.de: did not receive HSTS header
+fromix.de: could not connect to host
fromthesoutherncross.com: could not connect to host
frontisme.nl: did not receive HSTS header
frontmin.com: did not receive HSTS header
+fropky.com: did not receive HSTS header
frost-ci.xyz: could not connect to host
froxlor.support: max-age too low: 0
frsis2017.com: could not connect to host
frugro.be: did not receive HSTS header
fruitusers.com: could not connect to host
frumious.fyi: could not connect to host
fsapubs.gov: did not receive HSTS header
fsinf.at: did not receive HSTS header
@@ -3542,33 +3587,34 @@ funkyweddingideas.com.au: could not conn
funnyang.com: could not connect to host
funrun.com: did not receive HSTS header
fuorifuocogenova.it: could not connect to host
furiffic.com: did not receive HSTS header
furnation.com: could not connect to host
furry.be: did not receive HSTS header
fusedrops.com: could not connect to host
fusionmate.com: could not connect to host
+fuskator.com: did not receive HSTS header
futbol11.com: did not receive HSTS header
futurestarsusa.org: did not receive HSTS header
futuretechnologi.es: could not connect to host
futureyouhealth.com: did not receive HSTS header
fuvpn.com: could not connect to host
fwest.ovh: did not receive HSTS header
fwest98.ovh: did not receive HSTS header
fws.gov: did not receive HSTS header
fx-rk.com: did not receive HSTS header
fysiohaenraets.nl: did not receive HSTS header
fzn.io: could not connect to host
fzslm.me: could not connect to host
g-i-s.vn: did not receive HSTS header
g-rickroll-o.pw: could not connect to host
g2a.co: did not receive HSTS header
g2g.com: did not receive HSTS header
-g4w.co: could not connect to host (error ignored - included regardless)
+g4w.co: did not receive HSTS header (error ignored - included regardless)
g5led.nl: could not connect to host
g77.ca: could not connect to host
gabber.scot: could not connect to host
gabi.com.es: could not connect to host
gabi.soy: did not receive HSTS header
gabi.uno: could not connect to host
gablaxian.com: max-age too low: 2592000
gaelleetarnaud.com: did not receive HSTS header
@@ -3766,16 +3812,17 @@ googleplex.com: did not receive HSTS hea
googley.fr: max-age too low: 0
goolok.com: could not connect to host
gootlijsten.nl: did not receive HSTS header
goozz.nl: did not receive HSTS header
gopay.cz: did not receive HSTS header
gopokego.cz: could not connect to host
gorilla-gym.site: could not connect to host
gorillow.com: could not connect to host
+gosharewood.com: did not receive HSTS header
goshop.cz: did not receive HSTS header
gostream.asia: did not receive HSTS header
gotgenes.com: could not connect to host
goto.google.com: did not receive HSTS header (error ignored - included regardless)
goto.msk.ru: did not receive HSTS header
gotocloud.ru: did not receive HSTS header
gotowned.org: max-age too low: 0
gotspot.com: could not connect to host
@@ -3790,17 +3837,17 @@ gpo.gov: did not receive HSTS header
gpsfix.cz: did not receive HSTS header
gpstuner.com: did not receive HSTS header
graavaapi.elasticbeanstalk.com: could not connect to host
gracesofgrief.com: could not connect to host
grachtenpandverkopen.nl: could not connect to host
grafitec.ru: did not receive HSTS header
grana.com: did not receive HSTS header
grandchamproofing.com: did not receive HSTS header
-grandlinecsk.ru: could not connect to host
+grandlinecsk.ru: did not receive HSTS header
grandmascookieblog.com: did not receive HSTS header
grantedby.me: max-age too low: 0
grantmorrison.net: did not receive HSTS header
graph.no: did not receive HSTS header
graphsearchengine.com: could not connect to host
gratis-app.com: did not receive HSTS header
gratis-lovecheck.de: could not connect to host
gravitation.pro: could not connect to host
@@ -3945,17 +3992,16 @@ handinhandfoundation.org.uk: could not c
handiworker.com: could not connect to host
handleidingkwijt.com: did not receive HSTS header
handsandall.com: did not receive HSTS header
hanfu.la: could not connect to host
hangar18-modelismo.com.br: could not connect to host
hanimalis.fr: could not connect to host
hans-natur.de: did not receive HSTS header
hao2taiwan.com: max-age too low: 0
-haogoodair.ca: did not receive HSTS header
haomwei.com: could not connect to host
haoyugao.com: could not connect to host
haozi.me: could not connect to host
happix.nl: did not receive HSTS header
happyandrelaxeddogs.eu: did not receive HSTS header
happycoder.net: did not receive HSTS header
happyfabric.me: did not receive HSTS header
happygastro.com: could not connect to host
@@ -3970,17 +4016,16 @@ harlentimberproducts.co.uk: did not rece
harmonycosmetic.com: max-age too low: 300
harristony.com: could not connect to host
hartlep.eu: could not connect to host
hartmancpa.com: did not receive HSTS header
harvestrenewal.org: did not receive HSTS header
harz.cloud: could not connect to host
has.vision: could not connect to host
hash-list.com: could not connect to host
-hashnode.com: did not receive HSTS header
hasilocke.de: did not receive HSTS header
hasinase.de: did not receive HSTS header
haste.ch: could not connect to host
hastherebeenamassshooting.today: could not connect to host
hatoko.net: could not connect to host
haufschild.de: could not connect to host
haurumcraft.net: could not connect to host
hausarzt-stader-str.de: did not receive HSTS header
@@ -4206,17 +4251,17 @@ icloud.net: could not connect to host
icntorrent.download: could not connect to host
icq-project.net: could not connect to host
icreative.nl: did not receive HSTS header
id-co.in: could not connect to host
id-conf.com: did not receive HSTS header
ideal-envelopes.co.uk: did not receive HSTS header
idealmoto.com: did not receive HSTS header
idealmykonos.com: did not receive HSTS header
-ideaman924.com: could not connect to host
+ideaman924.com: did not receive HSTS header
ideaplus.me: could not connect to host
ideasmeetingpoint.com: could not connect to host
ideation-inc.co.jp: could not connect to host
idedr.com: could not connect to host
identitylabs.uk: could not connect to host
identitysandbox.gov: could not connect to host
idgsupply.com: did not receive HSTS header
idisplay.es: did not receive HSTS header
@@ -4237,19 +4282,19 @@ ignatisd.gr: did not receive HSTS header
igule.net: could not connect to host
ihrlotto.de: could not connect to host
ihrnationalrat.ch: could not connect to host
ihsbsd.me: could not connect to host
ihsbsd.tk: could not connect to host
iispeed.com: did not receive HSTS header
ijn-dd.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 119" data: no]
ijoda.com: did not receive HSTS header
-ikon.name: did not receive HSTS header
+ikon.name: could not connect to host
ikwilguidobellen.nl: could not connect to host
-ilbuongiorno.it: did not receive HSTS header
+ilbuongiorno.it: could not connect to host
ilgi.work: could not connect to host
ilikerainbows.co: could not connect to host
ilikerainbows.co.uk: could not connect to host
ilikfreshweedstores.com: did not receive HSTS header
ilmconpm.de: did not receive HSTS header
ilona.graphics: did not receive HSTS header
iluvscotland.co.uk: max-age too low: 7889238
imakepoems.net: could not connect to host
@@ -4263,21 +4308,21 @@ immoverkauf24.de: did not receive HSTS h
immunicity.cc: could not connect to host
immunicity.date: did not receive HSTS header
immunicity.eu: did not receive HSTS header
immunicity.host: could not connect to host
immunicity.info: could not connect to host
immunicity.online: could not connect to host
immunicity.press: could not connect to host
immunicity.rocks: could not connect to host
-immunicity.today: did not receive HSTS header
+immunicity.today: could not connect to host
immunicity.top: could not connect to host
immunicity.win: could not connect to host
-immunicity.works: did not receive HSTS header
-immunicity.world: did not receive HSTS header
+immunicity.works: could not connect to host
+immunicity.world: could not connect to host
imolug.org: did not receive HSTS header
imoni-blog.net: could not connect to host
imoto.me: could not connect to host
imouto.my: max-age too low: 5184000
imperialwebsolutions.com: did not receive HSTS header
imu.li: did not receive HSTS header
imusic.dk: did not receive HSTS header
inb4.us: could not connect to host
@@ -4359,16 +4404,17 @@ interserved.com: did not receive HSTS he
intervisteperstrada.com: could not connect to host
intexplore.org: could not connect to host
intim-uslugi-kazan.net: could not connect to host
intimateperrierjouet.com: could not connect to host
intimici.com.br: could not connect to host
intimtoy.com.ua: could not connect to host
intranetsec.fr: could not connect to host
intrp.net: did not receive HSTS header
+intune.life: did not receive HSTS header
inverselink-user-content.com: could not connect to host
inverselink.com: could not connect to host
investnext.com: max-age too low: 43200
investor.gov: did not receive HSTS header
invictusmc.uk: could not connect to host
inviosolutions.com: max-age too low: 0
invite24.pro: could not connect to host
iolife.dk: could not connect to host
@@ -4421,17 +4467,16 @@ ishangirdhar.com: could not connect to h
ishillaryclintoninprisonyet.com: could not connect to host
isitamor.pm: could not connect to host
iskaz.rs: did not receive HSTS header
islandzero.net: did not receive HSTS header
islief.com: did not receive HSTS header
ismetroonfiretoday.com: could not connect to host
isogen5.com: could not connect to host
isogram.nl: could not connect to host
-isreedyintheuk.com: did not receive HSTS header
istanbultravelguide.info: could not connect to host
istaspirtslietas.lv: did not receive HSTS header
it-cave.com: could not connect to host
it-go.net: did not receive HSTS header
it-schwerin.de: could not connect to host
itechgeek.com: max-age too low: 0
items.lv: did not receive HSTS header
itemton.com: could not connect to host
@@ -4495,17 +4540,17 @@ jameshale.me: did not receive HSTS heade
jamesmaurer.com: did not receive HSTS header
jamourtney.com: could not connect to host
jan-daniels.de: did not receive HSTS header
jan-roenspies.de: could not connect to host
jan27.org: did not receive HSTS header
janario.me: could not connect to host
janbrodda.de: max-age too low: 2592000
jangho.me: could not connect to host
-janking.de: did not receive HSTS header
+janking.de: could not connect to host
jannyrijneveld.nl: did not receive HSTS header
janus-engineering.de: did not receive HSTS header
japaripark.com: could not connect to host
japlex.com: could not connect to host
jaqen.ch: 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
@@ -4514,17 +4559,17 @@ jasoncosper.com: did not receive HSTS he
jasonroe.me: could not connect to host
jasperespejo.com: did not receive HSTS header
jastoria.pl: could not connect to host
jav-collective.com: could not connect to host
java-board.com: could not connect to host
javachip.win: could not connect to host
javan.ga: could not connect to host
javelinsms.com: could not connect to host
-javilacat.info: could not connect to host
+javilacat.info: did not receive HSTS header
jayblock.com: did not receive HSTS header
jaylen.com.ar: did not receive HSTS header
jayschulman.com: did not receive HSTS header
jayscoaching.com: did not receive HSTS header
jayshao.com: did not receive HSTS header
jbelien.be: did not receive HSTS header
jbelien.photography: did not receive HSTS header
jbfp.dk: could not connect to host
@@ -4554,17 +4599,16 @@ jet-code.com: could not connect to host
jetaprices.com: max-age too low: 0
jetflex.de: did not receive HSTS header
jetlagphotography.com: could not connect to host
jetsetcharge.com: could not connect to host
jetsetpay.com: could not connect to host
jettshome.org: could not connect to host
jewellerydesignstore.com: could not connect to host
jfmel.com: did not receive HSTS header
-jfnllc.com: did not receive HSTS header
jfx.space: did not receive HSTS header
jh-media.eu: could not connect to host
jhburton.uk: could not connect to host
jhejderup.me: could not connect to host
jia1hao.com: could not connect to host
jiaidu.com: could not connect to host
jichi.me: could not connect to host
jief.me: did not receive HSTS header
@@ -4577,17 +4621,17 @@ jimmycai.org: could not connect to host
jingyuesi.com: could not connect to host
jinmaguoji.com: could not connect to host
jinshavip.com: could not connect to host
jirav.io: could not connect to host
jitsi.org: did not receive HSTS header
jiyue.com: did not receive HSTS header
jkb.pics: could not connect to host
jkbuster.com: could not connect to host
-jkng.eu: did not receive HSTS header
+jkng.eu: could not connect to host
jko.works: could not connect to host
jm06.com: did not receive HSTS header
jm22.com: could not connect to host
jmdekker.it: could not connect to host
jn1.me: did not receive HSTS header
joakimalgroy.com: could not connect to host
jobflyapp.com: could not connect to host
jobshq.com: did not receive HSTS header
@@ -4742,27 +4786,26 @@ kernl.us: did not receive HSTS header
keskeces.com: did not receive HSTS header
keymaster.lookout.com: did not receive HSTS header
kfbrussels.be: could not connect to host
kg-rating.com: could not connect to host
kgxtech.com: max-age too low: 2592000
khaganat.net: did not receive HSTS header
ki-on.net: did not receive HSTS header
kialo.com: did not receive HSTS header
-kibriscicek.net: did not receive HSTS header
kickass-proxies.org: could not connect to host
kickass.al: could not connect to host
kickasstorrents.gq: did not receive HSTS header
kickstart.com.pk: did not receive HSTS header
kid-dachau.de: did not receive HSTS header
kidkat.cn: could not connect to host
kiel-media.de: did not receive HSTS header
kieranjones.uk: did not receive HSTS header
killerit.in: could not connect to host
-kimana.pe: could not connect to host
+kimana.pe: did not receive HSTS header
kimberg.co.uk: could not connect to host
kimpost.org: could not connect to host
kina.guide: could not connect to host
kinderly.co.uk: did not receive HSTS header
kinderwagen-test24.de: could not connect to host
kindlyfire.com: could not connect to host
kindof.ninja: could not connect to host
kingmanhall.org: could not connect to host
@@ -4790,32 +4833,30 @@ kitatec.com.br: could not connect to hos
kitchenchaos.de: could not connect to host
kitestar.co.uk: did not receive HSTS header
kitk.at: could not connect to host
kitsostech.com: could not connect to host
kitsta.com: could not connect to host
kiwiirc.com: max-age too low: 5256000
kiyo.space: could not connect to host
kizil.net: could not connect to host
-kj1391.com: did not receive HSTS header
-kj1397.com: did not receive HSTS header
kjaermaxi.me: did not receive HSTS header
kjg-bachrain.de: could not connect to host
klas.or.id: did not receive HSTS header
klauwd.com: could not connect to host
klaxn.org: could not connect to host
klean-ritekc.com: did not receive HSTS header
kleertjesvoordelig.nl: could not connect to host
kleinerarchitekturfuehrer.de: could not connect to host
kleppe.co: could not connect to host
kletterkater.com: did not receive HSTS header
klicktojob.de: could not connect to host
klunkergarten.org: could not connect to host
knapen.io: max-age too low: 604800
-knccloud.com: did not receive HSTS header
+knccloud.com: could not connect to host
kngk-transavto.ru: could not connect to host
knigadel.com: did not receive HSTS header
knightsbridgegroup.org: could not connect to host
knowdebt.org: did not receive HSTS header
knowledgesnap.com: could not connect to host
knowledgesnapsites.com: could not connect to host
koddsson.com: did not receive HSTS header
kode-it.de: could not connect to host
@@ -4952,17 +4993,16 @@ laquack.com: could not connect to host
laredsemanario.com: could not connect to host
lasercloud.ml: could not connect to host
laserfuchs.de: did not receive HSTS header
lashstuff.com: did not receive HSTS header
latelierdekathy.com: could not connect to host
latemodern.com: could not connect to host
latinred.com: could not connect to host
latus.xyz: could not connect to host
-laufpix.de: max-age too low: 0
launchkey.com: did not receive HSTS header
laurel4th.org: did not receive HSTS header
laureltv.org: did not receive HSTS header
lausitzer-widerstand.de: did not receive HSTS header
laventainnhotel-mailing.com: did not receive HSTS header
lavine.ch: did not receive HSTS header
lavito.cz: did not receive HSTS header
lavoiepharmd.com: could not connect to host
@@ -5009,17 +5049,16 @@ lepont.pl: could not connect to host
lerasenglish.com: max-age too low: 0
lerner.moscow: did not receive HSTS header
les-corsaires.net: could not connect to host
les-voitures-electriques.com: did not receive HSTS header
lesecuadors.com: did not receive HSTS header
lesliekearney.com: did not receive HSTS header
lesperlesdunet.fr: could not connect to host
lesquerda.cat: did not receive HSTS header
-letitfly.me: did not receive HSTS header
letras.mus.br: did not receive HSTS header
letsmultiplayerplay.com: did not receive HSTS header
letstox.com: could not connect to host
letustravel.tk: could not connect to host
levatc.tk: did not receive HSTS header
level-10.net: did not receive HSTS header
levelum.com: did not receive HSTS header
levert.ch: could not connect to host
@@ -5100,17 +5139,16 @@ litespeed.io: could not connect to host
little.pw: could not connect to host
littlefreelibrary.org: did not receive HSTS header
littleqiu.net: could not connect to host
liujunyang.com: could not connect to host
livecards.co.uk: did not receive HSTS header
livedemo.io: could not connect to host
livej.am: could not connect to host
liverewrite.com: could not connect to host
-livi.co: could not connect to host
liviababynet.com.br: could not connect to host
lixiang.one: could not connect to host
lixingcong.com: could not connect to host
lkp111138.me: could not connect to host
llamasweet.tech: could not connect to host
loacg.com: did not receive HSTS header
loadingdeck.com: did not receive HSTS header
loadso.me: could not connect to host
@@ -5181,16 +5219,17 @@ lpgram.ga: could not connect to host
lrhsclubs.com: could not connect to host
lrhstsa.com: could not connect to host
ls-a.org: did not receive HSTS header
lsky.cn: could not connect to host
lsp-sports.de: did not receive HSTS header
ltbytes.com: could not connect to host
ltechnologygroup.com: did not receive HSTS header
ltu.social: could not connect to host
+lubomirkazakov.com: did not receive HSTS header
lucas-garte.com: did not receive HSTS header
lucaterzini.com: could not connect to host
luclu7.pw: did not receive HSTS header
ludwig.click: did not receive HSTS header
ludwiggrill.de: did not receive HSTS header
lufthansaexperts.com: max-age too low: 2592000
luis-checa.com: could not connect to host
lukeng.me: could not connect to host
@@ -5379,16 +5418,17 @@ matlabjo.ir: did not receive HSTS header
matomeplus.co: could not connect to host
matrict.com: could not connect to host
matrip.de: could not connect to host
matrix.ac: could not connect to host
matrixcheats.net: could not connect to host
matsuz.com: could not connect to host
matt.tf: did not receive HSTS header
mattandreko.com: did not receive HSTS header
+mattberryman.com: max-age too low: 43200
matterconcern.com: could not connect to host
mattfin.ch: could not connect to host
matthewprenger.com: could not connect to host
matthiassteen.be: max-age too low: 0
mattressinsider.com: max-age too low: 3153600
mattsvensson.com: max-age too low: 0
matty.digital: did not receive HSTS header
maultrom.ml: could not connect to host
@@ -5399,32 +5439,32 @@ mausi.co: did not receive HSTS header
mavisang.cf: could not connect to host
mawe.red: could not connect to host
maximov.space: could not connect to host
maxr1998.de: did not receive HSTS header
maxserver.com: did not receive HSTS header
maya.mg: could not connect to host
mazyun.com: max-age too low: 3600
mazz-tech.com: could not connect to host
+mazzotta.me: did not receive HSTS header
mbconsultancy.nu: did not receive HSTS header
mc81.com: could not connect to host
mca2017.org: did not receive HSTS header
mcard.vn: did not receive HSTS header
mcc.re: could not connect to host
mccarty.io: could not connect to host
mcdonalds.ru: did not receive HSTS header
mcga.media: could not connect to host
mclab.su: could not connect to host
mclist.it: could not connect to host
mclyr.com: max-age too low: 7776000
mcmillansedationdentistry.com: did not receive HSTS header
mcooperlaw.com: did not receive HSTS header
mcuexchange.com: did not receive HSTS header
mdfnet.se: did not receive HSTS header
-mdkr.nl: did not receive HSTS header
mdscomp.net: did not receive HSTS header
meadowfen.farm: could not connect to host
meadowfenfarm.com: could not connect to host
mealz.com: did not receive HSTS header
meamod.com: max-age too low: 0
meat-education.com: could not connect to host
mebio.us: did not receive HSTS header
mecenat-cassous.com: did not receive HSTS header
@@ -5451,17 +5491,16 @@ meghudson.com: could not connect to host
meifrench.com: could not connect to host
meillard-auto-ecole.ch: could not connect to host
mein-gesundheitsmanager.com: max-age too low: 0
meincloudspeicher.de: could not connect to host
meinebo.it: could not connect to host
mekatrotekno.com: did not receive HSTS header
melangebrasil.com: could not connect to host
melcher.it: did not receive HSTS header
-meledia.com: could not connect to host
melhoresdominios.net: could not connect to host
melted.pw: could not connect to host
memberpress.com: did not receive HSTS header
members.mayfirst.org: did not receive HSTS header
memeblast.ninja: could not connect to host
memory-plus-180.com: could not connect to host
memorytrace.space: could not connect to host
menkyo-blog.com: did not receive HSTS header
@@ -5506,17 +5545,17 @@ mhict.nl: could not connect to host
mht-travel.com: could not connect to host
mhx.pw: could not connect to host
mi80.com: could not connect to host
mia.to: could not connect to host
mianfei-vpn.com: did not receive HSTS header
michaeldemuth.com: could not connect to host
michaelfitzpatrickruth.com: could not connect to host
michaelmorpurgo.com: did not receive HSTS header
-michaeln.net: did not receive HSTS header
+michaeln.net: could not connect to host
michaelscrivo.com: did not receive HSTS header
michaelwaite.org: could not connect to host
michal-kral.cz: could not connect to host
michalborka.cz: could not connect to host
miconware.de: could not connect to host
micro-dv.ru: could not connect to host
micro-rain-systems.com: did not receive HSTS header
microme.ga: could not connect to host
@@ -5533,17 +5572,16 @@ mightydicks.tech: could not connect to h
mightysounds.cz: max-age too low: 0
migrator.co: could not connect to host
miguksaram.com: could not connect to host
mijcorijneveld.nl: did not receive HSTS header
mijn-email.org: could not connect to host
mijnetickets.nl: did not receive HSTS header
mijnkredietpaspoort.nl: could not connect to host
mijnsite.ovh: did not receive HSTS header
-mijnstembureau.nl: did not receive HSTS header
mikadesign.se: did not receive HSTS header
mikaelemilsson.net: did not receive HSTS header
mikeburns.com: could not connect to host
mikeg.de: did not receive HSTS header
mikeology.org: could not connect to host
mikepair.net: could not connect to host
mikeybot.com: could not connect to host
mikii.club: could not connect to host
@@ -5592,16 +5630,17 @@ missrain.tw: could not connect to host
mist.ink: could not connect to host
mister.hosting: could not connect to host
misterl.net: did not receive HSTS header
mitarbeiter-pc.de: did not receive HSTS header
mitchellrenouf.ca: could not connect to host
mitm-software.badssl.com: could not connect to host
mittenhacks.com: could not connect to host
mivcon.net: could not connect to host
+miweb.cr: did not receive HSTS header
mizd.at: could not connect to host
mizi.name: could not connect to host
mjcaffarattilaw.com: did not receive HSTS header
mk-dizajn.com: did not receive HSTS header
mkasu.org: did not receive HSTS header
mkfs.be: could not connect to host
mkw.st: could not connect to host
mlcdn.co: could not connect to host
@@ -5840,17 +5879,17 @@ nansay.cn: could not connect to host
nanto.eu: could not connect to host
narodniki.com: did not receive HSTS header
narviz.com: did not receive HSTS header
nashira.cz: did not receive HSTS header
nasralmabrooka.com: did not receive HSTS header
natalia-fadeeva.ru: could not connect to host
natalia.io: could not connect to host
natalieandjoshua.com: could not connect to host
-natalt.org: did not receive HSTS header
+natalt.org: could not connect to host
nathanmfarrugia.com: did not receive HSTS header
nationwidevehiclecontracts.co.uk: did not receive HSTS header
natural-progesterone.net: could not connect to host
naturecoaster.com: did not receive HSTS header
natuurbehangnederland.nl: could not connect to host
naudles.me: could not connect to host
nav.jobs: could not connect to host
naval.tf: could not connect to host
@@ -5933,16 +5972,17 @@ ng-security.com: could not connect to ho
ngine.ch: did not receive HSTS header
nginxnudes.com: could not connect to host
nglr.org: could not connect to host
ngt-service.ru: did not receive HSTS header
niagarafalls.ca: did not receive HSTS header
nibiisclaim.com: could not connect to host
nicestresser.fr: could not connect to host
nicky.io: did not receive HSTS header
+nico.one: did not receive HSTS header
nicoborghuis.nl: could not connect to host
nicolasbettag.me: did not receive HSTS header
niconiconi.xyz: could not connect to host
niconode.com: could not connect to host
nidux.com: did not receive HSTS header
niduxcomercial.com: could not connect to host
nien.chat: could not connect to host
nifpnet.nl: did not receive HSTS header
@@ -5980,17 +6020,16 @@ nodi.at: did not receive HSTS header
noexpect.org: could not connect to host
noima.com: did not receive HSTS header
noisebridge.social: could not connect to host
nolberg.net: did not receive HSTS header
nolimitsbook.de: did not receive HSTS header
nolte.work: could not connect to host
nomorebytes.de: could not connect to host
noodlesandwich.com: did not receive HSTS header
-nootropicsource.com: did not receive HSTS header
nope.website: could not connect to host
nopex.no: could not connect to host
nopol.de: could not connect to host
norandom.com: could not connect to host
norb.at: could not connect to host
nordlicht.photography: did not receive HSTS header
norge.guide: could not connect to host
northcutt.com: did not receive HSTS header
@@ -6086,17 +6125,17 @@ ocrami.us: did not receive HSTS header
octocat.ninja: could not connect to host
oddmouse.com: could not connect to host
odin.xxx: could not connect to host
odinoffice.no: did not receive HSTS header
odysseyandco.com: could not connect to host
oe8.bet: could not connect to host
oestepaulista.net: did not receive HSTS header
ofcourselanguages.com: could not connect to host
-offenedialoge.de: max-age too low: 2592000
+offenedialoge.de: could not connect to host
officeclub.com.mx: did not receive HSTS header
offshore-firma.org: could not connect to host
offshore-unternehmen.com: could not connect to host
offshorefirma-gruenden.com: could not connect to host
offshoremarineparts.com: did not receive HSTS header
oficinadocelular.com.br: could not connect to host
oganek.ie: could not connect to host
oganime.com: could not connect to host
@@ -6151,17 +6190,17 @@ online-casino.eu: did not receive HSTS h
online-wetten.de: did not receive HSTS header
onlinebiller.com: did not receive HSTS header
onlinecompliance.org: did not receive HSTS header
onlinedemo.hu: could not connect to host
onlinedeposit.us: could not connect to host
onlinekasino.de: did not receive HSTS header
onlinepollsph.com: could not connect to host
onlineschadestaat.nl: did not receive HSTS header
-onlinespielothek.com: could not connect to host
+onlinespielothek.com: did not receive HSTS header
onlinewetten.de: could not connect to host
only-roses.co.uk: did not receive HSTS header
only-roses.com: did not receive HSTS header
onlyshopstation.com: did not receive HSTS header
onlyzero.net: could not connect to host
onmuvo.com: did not receive HSTS header
onovlena.dn.ua: could not connect to host
onpatient.com: did not receive HSTS header
@@ -6562,17 +6601,16 @@ poris.web.id: could not connect to host
porno-gif.ru: did not receive HSTS header
pornstars.me: did not receive HSTS header
portalm.tk: could not connect to host
portalplatform.net: could not connect to host
portaluniversalista.org: did not receive HSTS header
poshpak.com: max-age too low: 86400
postback.io: could not connect to host
postcodewise.co.uk: could not connect to host
-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
potbar.com: could not connect to host
potlytics.com: could not connect to host
potsky.com: did not receive HSTS header
pourmesloisirs.com: did not receive HSTS header
poussinooz.fr: could not connect to host
@@ -6597,16 +6635,17 @@ praxis-research.info: could not connect
precisionaeroimaging.com: did not receive HSTS header
prediksisydney.com: could not connect to host
preezzie.com: could not connect to host
prefis.com: did not receive HSTS header
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
+prelogica.com.br: did not receive HSTS header
prepaid-voip.nl: did not receive HSTS header
prepandgo-euro.com: could not connect to host
presidentials2016.com: could not connect to host
press-anime-nenkan.com: did not receive HSTS header
press-presse.ca: did not receive HSTS header
pressenews.net: did not receive HSTS header
pressfreedomfoundation.org: did not receive HSTS header
prettygrouse.com: did not receive HSTS header
@@ -6648,17 +6687,16 @@ projectdp.net: could not connect to host
projectherogames.xyz: did not receive HSTS header
projectmercury.space: could not connect to host
projetoresecia.com: could not connect to host
promecon-gmbh.de: did not receive HSTS header
prontocleaners.co.uk: could not connect to host
prontolight.com: did not receive HSTS header
prontomovers.co.uk: could not connect to host
propactrading.com: could not connect to host
-prosocialmachines.com: could not connect to host
prosoft.sk: did not receive HSTS header
prosperident.com: did not receive HSTS header
protoyou.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 119" data: no]
providerlijst.com: did not receive HSTS header
providerlijst.nl: did not receive HSTS header
prowhisky.de: did not receive HSTS header
proximato.com: could not connect to host
proxybay.al: could not connect to host
@@ -6891,16 +6929,17 @@ renrenss.com: could not connect to host
rentacarcluj.xyz: did not receive HSTS header
rentbrowsertrain.me: could not connect to host
rentcarassist.com: could not connect to host
renteater.com: could not connect to host
rentex.com: did not receive HSTS header
renyiyou.com: could not connect to host
replacemychina.com: could not connect to host
report-to.com: did not receive HSTS header
+report-uri.io: did not receive HSTS header
reprolife.co.uk: could not connect to host
res-rheingau.de: did not receive HSTS header
res42.com: could not connect to host
reserve-online.net: did not receive HSTS header
residentsinsurance.co.uk: did not receive HSTS header
resl20.servehttp.com: could not connect to host
respice.xyz: could not connect to host
respostas.com.br: did not receive HSTS header
@@ -7007,17 +7046,16 @@ rough.nu: could not connect to host
roundtheme.com: did not receive HSTS header
rous.se: could not connect to host
rouvray.org: could not connect to host
royal-forest.org: max-age too low: 0
royalhop.co: could not connect to host
royalpub.net: did not receive HSTS header
royalsignaturecruise.com: could not connect to host
roychan.org: max-age too low: 0
-rozalynne-dawn.ga: did not receive HSTS header
rozeapp.nl: could not connect to host
rr.in.th: could not connect to host
rrke.cc: did not receive HSTS header
rsajeey.info: could not connect to host
rsampaio.info: did not receive HSTS header
rsblake.net: could not connect to host
rsf.io: could not connect to host
rsmaps.org: could not connect to host
@@ -7065,17 +7103,16 @@ safematix.com: could not connect to host
safemovescheme.co.uk: could not connect to host
safersurfing.eu: did not receive HSTS header
safewings-nh.nl: could not connect to host
sagarhandicraft.com: could not connect to host
sageth.com: max-age too low: 0
sah3.net: could not connect to host
saharalondon.com: max-age too low: 0
saharmassachi.com: could not connect to host
-saifoundation.in: did not receive HSTS header
sail-nyc.com: did not receive HSTS header
saint-astier-triathlon.com: did not receive HSTS header
saintjohnlutheran.church: did not receive HSTS header
sairai.bid: did not receive HSTS header
sakaki.anime.my: max-age too low: 5184000
sakaserver.com: did not receive HSTS header
sakib.ninja: did not receive HSTS header
sakurabuff.com: could not connect to host
@@ -7174,33 +7211,33 @@ scrambler.in: could not connect to host
scrapings.net: could not connect to host
screencaster.io: did not receive HSTS header
screenresolution.space: could not connect to host
screensaversplanet.com: did not receive HSTS header
scribbleserver.com: could not connect to host
scribe.systems: could not connect to host
scrion.com: could not connect to host
script.google.com: did not receive HSTS header (error ignored - included regardless)
-scriptenforcer.net: did not receive HSTS header
+scriptenforcer.net: could not connect to host
scriptict.nl: could not connect to host
scrollstory.com: did not receive HSTS header
sdhmanagementgroup.com: could not connect to host
sdia.ru: could not connect to host
sdmoscow.ru: could not connect to host
sdrobs.com: did not receive HSTS header
sdsl-speedtest.de: could not connect to host
seans.cc: did not receive HSTS header
search-one.de: did not receive HSTS header
seavancouver.com: could not connect to host
sebastian-bair.de: could not connect to host
sebastianhampl.de: could not connect to host
sebastiensenechal.com: did not receive HSTS header
sebster.com: did not receive HSTS header
secandtech.com: could not connect to host
-seccom.ch: did not receive HSTS header
+seccom.ch: could not connect to host
secnet.ga: could not connect to host
secondary-survivor.com: could not connect to host
secondary-survivor.help: could not connect to host
secondary-survivor.net: could not connect to host
secondarysurvivor.help: could not connect to host
secondarysurvivorportal.com: could not connect to host
secondarysurvivorportal.help: could not connect to host
secondbyte.nl: could not connect to host
@@ -7365,45 +7402,45 @@ shv25.se: could not connect to host
shwongacc.com: could not connect to host
shypp.it: could not connect to host
shyrydan.es: could not connect to host
siammedia.co: could not connect to host
sianimacion.com: could not connect to host
sichere-kartenakzeptanz.de: could not connect to host
siciliadigitale.pro: could not connect to host
siddhant.me: max-age too low: 0
+sidpod.ru: did not receive HSTS header
siebens.net: could not connect to host
sifls.com: could not connect to host
sifreuret.com: could not connect to host
signoracle.com: could not connect to host
sijimi.cn: could not connect to host
sikayetvar.com: did not receive HSTS header
silent.live: could not connect to host
silentcircle.com: did not receive HSTS header
silentcircle.org: could not connect to host
silentlink.io: could not connect to host
silentundo.org: did not receive HSTS header
silicagelpackets.ca: did not receive HSTS header
silver-drachenkrieger.de: did not receive HSTS header
silverhome.ninja: could not connect to host
silverpvp.com: could not connect to host
simbast.com: could not connect to host
-simbeton.nl: did not receive HSTS header
simbihaiti.com: did not receive HSTS header
simccorp.com: did not receive HSTS header
simeon.us: max-age too low: 2592000
simfri.com: did not receive HSTS header
simnovo.net: did not receive HSTS header
simobilklub.si: could not connect to host
simod.org: could not connect to host
simon-pokorny.com: did not receive HSTS header
simon.butcher.name: max-age too low: 2629743
simongong.net: did not receive HSTS header
simonsaxon.com: did not receive HSTS header
-simpan.id: did not receive HSTS header
+simpan.id: could not connect to host
simpleai.net: max-age too low: 600
simplelearner.com: could not connect to host
simplepractice.com: did not receive HSTS header
simplixos.org: could not connect to host
simplyenak.com: did not receive HSTS header
sin30.net: could not connect to host
sincai666.com: could not connect to host
sincron.org: could not connect to host
@@ -7584,17 +7621,17 @@ spiegels.nl: could not connect to host
spielcasinos.com: did not receive HSTS header
spikeykc.me: did not receive HSTS header
spillmaker.no: did not receive HSTS header
spilsbury.io: could not connect to host
spirit-dev.net: max-age too low: 0
spisoggrin.dk: did not receive HSTS header
spitefultowel.com: did not receive HSTS header
spititout.it: could not connect to host
-spittersberger.recipes: did not receive HSTS header
+spittersberger.recipes: could not connect to host
spokonline.com: could not connect to host
sponsortobias.com: could not connect to host
sportchirp-internal.azurewebsites.net: did not receive HSTS header
sporthit.ru: did not receive HSTS header
sportifik.com: did not receive HSTS header
sportingoods.com.br: could not connect to host
sportscollection.com.br: could not connect to host
sportwette.eu: did not receive HSTS header
@@ -7607,16 +7644,17 @@ spresso.me: did not receive HSTS header
sprk.fitness: did not receive HSTS header
sproutconnections.com: could not connect to host
sprutech.de: did not receive HSTS header
spyroszarzonis.com: did not receive HSTS header
square.gs: could not connect to host
squatldf.org: did not receive HSTS header
srcc.fr: could not connect to host
srevilak.net: did not receive HSTS header
+sritest.io: did not receive HSTS header
srmaximo.com: could not connect to host
srna.sk: could not connect to host
srpdb.com: did not receive HSTS header
srrr.ca: could not connect to host
ss-free.net: could not connect to host
ss.wtf: could not connect to host
ssdax.com: did not receive HSTS header
ssl.panoramio.com: did not receive HSTS header
@@ -7664,16 +7702,17 @@ stefanweiser.de: did not receive HSTS he
stepbystep3d.com: did not receive HSTS header
stephanierxo.com: did not receive HSTS header
stephanos.me: could not connect to host
stephenandburns.com: did not receive HSTS header
stevechekblain.win: could not connect to host
stevensononthe.net: did not receive HSTS header
stevenz.science: could not connect to host
stewartremodelingadvantage.com: could not connect to host
+steyaert.be: did not receive HSTS header
stforex.com: did not receive HSTS header
sticklerjs.org: could not connect to host
stigroom.com: could not connect to host
stillblackhat.id: could not connect to host
stinkytrashhound.com: could not connect to host
stirlingpoon.net: could not connect to host
stirlingpoon.xyz: could not connect to host
stitthappens.com: could not connect to host
@@ -7684,33 +7723,33 @@ stn.me.uk: did not receive HSTS header
stockseyeserum.com: could not connect to host
stocktrade.de: could not connect to host
stoffe-monster.de: did not receive HSTS header
stoick.me: could not connect to host
stole-my.bike: could not connect to host
stole-my.tv: could not connect to host
stolkschepen.nl: did not receive HSTS header
stonecutterscommunity.com: could not connect to host
-stopbreakupnow.org: did not receive HSTS header
stopwoodfin.org: could not connect to host
storbritannien.guide: could not connect to host
storecove.com: did not receive HSTS header
storeden.com: did not receive HSTS header
storefrontify.com: did not receive HSTS header
storiesofhealth.org: could not connect to host
storillo.com: did not receive HSTS header
stormhub.org: could not connect to host
stqry.com: did not receive HSTS header
str0.at: did not receive HSTS header
strasweb.fr: could not connect to host
strbt.de: could not connect to host
strchr.com: did not receive HSTS header
stream.pub: could not connect to host
streamingeverywhere.com: could not connect to host
streamingmagazin.de: could not connect to host
+streampanel.net: did not receive HSTS header
strictlysudo.com: could not connect to host
strife.tk: could not connect to host
strila.me: could not connect to host
strivephysmed.com: did not receive HSTS header
stroeercrm.de: could not connect to host
strongest-privacy.com: could not connect to host
stuartbaxter.co: could not connect to host
student-scientist.org: did not receive HSTS header
@@ -7998,17 +8037,17 @@ thecharlestonwaldorf.com: did not receiv
thechunk.net: could not connect to host
theclementinebutchers.com: could not connect to host
theclubjersey.com: did not receive HSTS header
thecoffeehouse.xyz: could not connect to host
thecrochetcottage.net: could not connect to host
thedrop.pw: did not receive HSTS header
thedystance.com: could not connect to host
theelitebuzz.com: did not receive HSTS header
-theendofzion.com: did not receive HSTS header
+theendofzion.com: could not connect to host
theescapistswiki.com: could not connect to host
theeyeopener.com: did not receive HSTS header
thefarbeyond.com: could not connect to host
theflowerbasketonline.com: could not connect to host
thefootballanalyst.com: did not receive HSTS header
thefreebirds.in: could not connect to host
thefrozenfire.com: did not receive HSTS header
thefutureharrills.com: could not connect to host
@@ -8101,17 +8140,16 @@ tictactux.de: could not connect to host
tidmore.us: could not connect to host
tiendschuurstraat.nl: could not connect to host
tiensnet.com: could not connect to host
tierrarp.com: could not connect to host
tightlineproductions.com: did not receive HSTS header
tikutiku.pl: could not connect to host
tildebot.com: could not connect to host
tiliaze.be: could not connect to host
-tiliaze.biz: could not connect to host
tiliaze.eu: did not receive HSTS header
tilient.eu: [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 119" data: no]
tilikum.io: did not receive HSTS header
tilkah.com.au: did not receive HSTS header
tillcraft.com: could not connect to host
timbeilby.com: could not connect to host
timbuktutimber.com: did not receive HSTS header
timcamara.com: could not connect to host
@@ -8125,18 +8163,16 @@ timeserver3.de: could not connect to hos
timestamp.io: did not receive HSTS header
timhjalpen.se: could not connect to host
timnash.co.uk: did not receive HSTS header
timotrans.de: did not receive HSTS header
timotrans.eu: did not receive HSTS header
timowi.de: could not connect to host
timowi.net: could not connect to host
timschubert.net: max-age too low: 172800
-timtj.ca: did not receive HSTS header
-timweb.ca: did not receive HSTS header
timwittenberg.com: could not connect to host
tinchbear.xyz: could not connect to host
tindewen.net: could not connect to host
tipsyk.ru: could not connect to host
tiredofeating.com: could not connect to host
tiremoni.ch: did not receive HSTS header
tirex.media: did not receive HSTS header
titanlab.de: could not connect to host
@@ -8223,23 +8259,23 @@ totalworkout.fitness: did not receive HS
totem-eshop.cz: could not connect to host
toucedo.de: could not connect to host
touchbasemail.com: did not receive HSTS header
touchpointidg.us: could not connect to host
touchscreen-handy.de: did not receive HSTS header
touchstonefms.co.uk: did not receive HSTS header
touchtable.nl: did not receive HSTS header
tourpeer.com: did not receive HSTS header
-townofbridgewater.ca: did not receive HSTS header
toxme.se: could not connect to host
toyotamotala.se: could not connect to host
tpbcdn.com: could not connect to host
tpe-edu.com: could not connect to host
tpms4u.at: did not receive HSTS header
tracker-gps.ch: could not connect to host
+trackmeet.io: did not receive HSTS header
tracktivity.com.au: did not receive HSTS header
trade-smart.ru: could not connect to host
tradingcentre.com.au: did not receive HSTS header
tradinghope.com: could not connect to host
traditional-knowledge.tk: did not receive HSTS header
trafficquality.org: could not connect to host
traindb.nl: did not receive HSTS header
training4girls.ru: could not connect to host
@@ -8394,29 +8430,29 @@ ultimate-garcinia-plus.com: could not co
ultimate-glow-skin.com: could not connect to host
ultimate-memoryplus.com: could not connect to host
ultimate-neuroplus.com: could not connect to host
ultros.io: did not receive HSTS header
umaimise.info: did not receive HSTS header
umgardi.ca: could not connect to host
umidev.com: did not receive HSTS header
umie.cc: did not receive HSTS header
-umwandeln-online.de: did not receive HSTS header
+umwandeln-online.de: could not connect to host
unart.info: could not connect to host
unbanthe.net: could not connect to host
unblockat.tk: could not connect to host
unblocked-networks.org: could not connect to host
unblocked.date: could not connect to host
unblocked.faith: could not connect to host
unblocked.host: could not connect to host
unblocked.party: could not connect to host
-unblocked.today: did not receive HSTS header
+unblocked.today: could not connect to host
unblocked.win: did not receive HSTS header
-unblocked.works: did not receive HSTS header
-unblocked.world: did not receive HSTS header
+unblocked.works: could not connect to host
+unblocked.world: could not connect to host
unblockedall.site: could not connect to host
unblockerproxy.site: could not connect to host
unblockerproxy.top: could not connect to host
unblockmy.party: could not connect to host
unblockmy.tech: did not receive HSTS header
unblockmy.xyz: did not receive HSTS header
unblockmyproxy.site: could not connect to host
unblockthe.site: did not receive HSTS header
@@ -8460,17 +8496,16 @@ upldr.pw: could not connect to host
uporoops.com: could not connect to host
uprotect.it: could not connect to host
upstats.eu: could not connect to host
uptic.net: did not receive HSTS header
ur-lauber.de: did not receive HSTS header
urandom.eu.org: did not receive HSTS header
urban-garden.lt: could not connect to host
urban-garden.lv: could not connect to host
-urbanstylestaging.com: did not receive HSTS header
urbpic.com: could not connect to host
urlchomp.com: did not receive HSTS header
urphp.com: could not connect to host
us-immigration.com: did not receive HSTS header
usaab.org: did not receive HSTS header
usafuelservice.com: did not receive HSTS header
usbirthcertificate.com: did not receive HSTS header
usbtypeccompliant.com: could not connect to host
@@ -8556,16 +8591,17 @@ veggiefasting.com: could not connect to
veggiesbourg.fr: did not receive HSTS header
vegis.ro: did not receive HSTS header
vehent.org: did not receive HSTS header
vehicleuplift.co.uk: did not receive HSTS header
vemokin.net: could not connect to host
venicecomputerrepair.com: did not receive HSTS header
venixplays-stream.ml: could not connect to host
vennet.fr: did not receive HSTS header
+venoom.eu: did not receive HSTS header
venturepro.com: did not receive HSTS header
ventzke.com: did not receive HSTS header
venzocrm.com: did not receive HSTS header
vergeaccessories.com: did not receive HSTS header
verifikatorindonesia.com: could not connect to host
veristor.com: did not receive HSTS header
vermontcareergateway.org: could not connect to host
veryhax.de: could not connect to host
@@ -8724,17 +8760,16 @@ warped.com: did not receive HSTS header
warrencreative.com: did not receive HSTS header
warsentech.com: could not connect to host
warsh.moe: did not receive HSTS header
watchium.com: did not receive HSTS header
waterforlife.net.au: did not receive HSTS header
waterpoint.com.br: could not connect to host
watersportmarkt.net: did not receive HSTS header
watsonhall.uk: could not connect to host
-wattechweb.com: did not receive HSTS header
wave.is: could not connect to host
wavefloatrooms.com: did not receive HSTS header
wavefrontsystemstech.com: could not connect to host
we-bb.com: could not connect to host
wear2work.nl: did not receive HSTS header
wearesouthafricans.com: did not receive HSTS header
weaverhairextensions.nl: could not connect to host
web-industry.fr: could not connect to host
@@ -8810,17 +8845,17 @@ wettbuero.de: did not receive HSTS heade
wetten.eu: did not receive HSTS header
wettertoertchen.com: could not connect to host
wetttipps.com: could not connect to host
wetttipps.de: could not connect to host
wevahoo.com: could not connect to host
wevolver.com: did not receive HSTS header
wewillgo.com: did not receive HSTS header
wewillgo.org: did not receive HSTS header
-wewlad.me: could not connect to host
+wewlad.me: did not receive HSTS header
wftda.com: did not receive HSTS header
wg3k.us: did not receive HSTS header
whatnext.limited: did not receive HSTS header
whats.io: could not connect to host
whatsstalk.me: could not connect to host
whatsyouroffer.co.uk: did not receive HSTS header
wheresben.today: could not connect to host
whisker.network: could not connect to host
@@ -8928,17 +8963,16 @@ writeapp.me: did not receive HSTS header
wrldevelopment.com: did not receive HSTS header
wrwg.ca: could not connect to host
wscbiolo.id: could not connect to host
wsscompany.com.ve: could not connect to host
wsup.social: could not connect to host
wubocong.com: could not connect to host
wubthecaptain.eu: could not connect to host
wuetix.de: max-age too low: 0
-wufu.org: did not receive HSTS header
wuhengmin.com: could not connect to host
wundtherapie-schulung.de: could not connect to host
wurzelzwerg.net: could not connect to host
wusx.club: could not connect to host
wvr-law.de: did not receive HSTS header
ww2onlineshop.com: did not receive HSTS header
www-001133.com: could not connect to host
www-0385.com: could not connect to host
@@ -8969,16 +9003,17 @@ www.jitsi.org: did not receive HSTS head
www.ledgerscope.net: could not connect to host
www.logentries.com: did not receive HSTS header
www.moneybookers.com: did not receive HSTS header
www.neonisi.com: could not connect to host
www.paycheckrecords.com: did not receive HSTS header
www.rme.li: did not receive HSTS header
www.sandbox.mydigipass.com: could not connect to host
www.surfeasy.com: did not receive HSTS header
+www.tumblr.com: max-age too low: 300
www.viasinc.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
wybmabiity.com: could not connect to host
wygluszanie.eu: did not receive HSTS header
wyzphoto.nl: did not receive HSTS header
x-power-detox.com: could not connect to host
@@ -9172,16 +9207,17 @@ zaoshanghao-dajia.rhcloud.com: could not
zap.yt: did not receive HSTS header
zarmarket.org: did not receive HSTS header
zarooba.com: could not connect to host
zavca.com: did not receive HSTS header
zbigniewgalucki.eu: did not receive HSTS header
zcon.nl: could not connect to host
zdravotnickasluzba.eu: could not connect to host
zdrowiepaleo.pl: did not receive HSTS header
+zdx.ch: did not receive HSTS header
zebrababy.cn: could not connect to host
zebry.nl: could not connect to host
zecrypto.com: could not connect to host
zeedroom.be: did not receive HSTS header
zefiris.org: did not receive HSTS header
zefu.ca: could not connect to host
zehntner.ch: could not connect to host
zelfmoord.ga: could not connect to host
@@ -9190,17 +9226,17 @@ zenhaiku.com: did not receive HSTS heade
zenpayroll.com: did not receive HSTS header
zentience.dk: did not receive HSTS header
zentience.net: did not receive HSTS header
zentience.org: did not receive HSTS header
zentraler-kreditausschuss.de: did not receive HSTS header
zentralwolke.de: did not receive HSTS header
zenwears.com: did not receive HSTS header
zera.com.au: could not connect to host
-zerekin.net: did not receive HSTS header
+zerekin.net: could not connect to host
zeroday.sk: did not receive HSTS header
zerofox.gq: could not connect to host
zeroml.ml: could not connect to host
zerudi.com: did not receive HSTS header
zeto365.pl: did not receive HSTS header
zett4.me: could not connect to host
zeytin.pro: could not connect to host
zh1.li: could not connect to host
@@ -9211,17 +9247,17 @@ zhaojin97.cn: could not connect to host
zhendingresources.com: did not receive HSTS header
zhh.in: could not connect to host
zhihua-lai.com: did not receive HSTS header
zhuji.com.cn: could not connect to host
zi0r.com: did not receive HSTS header
zian.online: could not connect to host
zicklam.com: could not connect to host
zigcore.com.br: could not connect to host
-zihao.me: did not receive HSTS header
+zihao.me: could not connect to host
zinc-x.com: did not receive HSTS header
zinenapse.info: could not connect to host
zippy-download.com: could not connect to host
zippy-download.de: could not connect to host
zirtue.io: did not receive HSTS header
zixo.sk: could not connect to host
ziyuanabc.xyz: could not connect to host
zizoo.com: did not receive HSTS header
@@ -9249,15 +9285,16 @@ zorasvobodova.cz: did not receive HSTS h
zortium.report: could not connect to host
zoznamrealit.sk: did not receive HSTS header
zqhong.com: could not connect to host
zqjs.tk: could not connect to host
ztan.tk: could not connect to host
ztcaoll222.cn: did not receive HSTS header
zubel.it: did not receive HSTS header
zuram.net: could not connect to host
+zurret.de: did not receive HSTS header
zvncloud.com: did not receive HSTS header
zwollemagazine.nl: did not receive HSTS header
zyf.pw: could not connect to host
zymbit.com: did not receive HSTS header
zync.ca: did not receive HSTS header
zypgr.com: did not receive HSTS header
zyso.org: could not connect to host
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*****************************************************************************/
/* This is an automatically generated file. If you're not */
/* nsSiteSecurityService.cpp, you shouldn't be #including it. */
/*****************************************************************************/
#include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1521056747051000);
+const PRTime gPreloadListExpirationTime = INT64_C(1521143078420000);
%%
0-1.party, 1
0.me.uk, 1
00001.am, 1
00002.am, 1
0005pay.com, 1
0010100.net, 1
00220022.net, 1
@@ -121,17 +121,19 @@ 123test.com, 1
123test.nl, 1
125m125.de, 1
12vpn.net, 1
130.ua, 1
132kv.ch, 1
13318522.com, 1
1359826938.rsc.cdn77.org, 1
13826145000.com, 1
+1391kj.com, 1
1395kj.com, 1
+1396.cc, 1
1453914078.rsc.cdn77.org, 1
1464424382.rsc.cdn77.org, 1
14it.de, 1
14x3.de, 1
15-10.com, 1
1511774230.rsc.cdn77.org, 1
1590284872.rsc.cdn77.org, 1
1600esplanade.com, 1
@@ -363,17 +365,16 @@ 4winds.pt, 1
4x.fi, 1
4x4.lk, 1
4xlabs.co, 1
500k.nl, 1
500p.xyz, 1
50lakeshore.com, 1
50north.de, 1
50plusnet.nl, 1
-513vpn.net, 1
525.info, 1
52neptune.com, 1
5432.cc, 1
54below.com, 1
5533445.com, 1
555fl.com, 1
555xl.com, 1
55scc.com, 1
@@ -1970,16 +1971,17 @@ ariba.info, 1
ariege-pyrenees.net, 1
arieswdd.com, 1
arifp.me, 1
arigato-java.download, 1
arijitdg.net, 1
arikar.eu, 1
arima.co.ke, 1
arinflatablefun.co.uk, 1
+aristilabs.com, 0
aristocrates.co, 1
aristocratps.com, 1
aritec-la.com, 1
arithxu.com, 1
arivo.com.br, 1
arizonaautomobileclub.com, 1
arjandejong.eu, 1
arjanvaartjes.net, 1
@@ -2057,16 +2059,17 @@ arthurmelo.com, 0
articaexports.com, 1
artik.cloud, 1
artimpact.ch, 1
artioml.net, 1
artionet.ch, 1
artisanhd.com, 1
artisans-libres.com, 1
artisense.de, 1
+artisphere.ch, 1
artisticedgegranite.net, 1
artlantis.nl, 1
artleading.ru, 1
artlego.com, 1
artlifeisgood.com, 1
artlogo.biz, 1
artlogo.cz, 1
artlogo.sk, 1
@@ -3097,17 +3100,16 @@ bestessaycheap.com, 1
bestessayhelp.com, 1
bestfitnesswatchreview.info, 1
bestgiftever.ca, 1
bestgifts4you.com, 1
besthotsales.com, 1
bestlashesandbrows.com, 1
bestlashesandbrows.hu, 1
bestleftwild.com, 1
-bestmodels.su, 1
bestmotherfucking.website, 1
bestoliveoils.com, 1
bestpartyhire.com, 1
bestperfumebrands.com, 1
bestschools.top, 1
bestseries.tv, 1
bestwarezone.com, 1
bestwebsite.gallery, 1
@@ -3362,16 +3364,17 @@ birdymanbestreviews.com, 1
birgit-rydlewski.de, 1
birkengarten.ch, 1
birkhoff.me, 1
birminghamcastlehire.co.uk, 1
birminghamsunset.com, 1
birthdaytip.com, 1
birthmatters.us, 1
birzan.org, 1
+biscoint.io, 1
biscuits-rec.com, 1
biscuits-shop.com, 1
bismarck-tb.de, 1
bison.co, 1
bissalama.org, 1
bistrocean.com, 1
biswas.me, 1
bit-cloud.de, 1
@@ -4209,21 +4212,23 @@ bruckner.li, 1
bruna-cdn.nl, 1
brunn.email, 1
brunner.ninja, 1
brunoramos.com, 1
brunoramos.org, 1
brunosouza.org, 1
bruun.co, 1
bryankaplan.com, 1
+bryanquigley.com, 1
bs-network.net, 1
bs-security.com, 1
bs.sb, 1
bs.to, 1
bs12v.ru, 1
+bsagan.fr, 1
bsalyzer.com, 1
bsc-rietz.at, 1
bsc01.dyndns.org, 1
bsdfreak.dk, 1
bsdracing.ca, 1
bsdug.org, 1
bsg-aok-muenchen.de, 1
bsidesf.com, 1
@@ -4369,17 +4374,16 @@ burzmali.com, 1
buserror.cn, 1
bush41.org, 1
bushbaby.com, 1
bushcraftfriends.com, 1
busindre.com, 1
business-garden.com, 1
business.facebook.com, 0
business.medbank.com.mt, 1
-businessadviceperth.com.au, 0
businessamongus.com, 1
businesscentermarin.ch, 1
businessesdirectory.eu, 1
businessfurs.info, 1
businesshub.cz, 1
businessimmigration-eu.com, 1
businessimmigration-eu.ru, 1
businessmodeler.se, 1
@@ -4526,17 +4530,17 @@ caferagazzi.de, 1
cafesg.net, 1
caffeinatedcode.com, 1
cainhosting.com, 0
caipai.fm, 1
cairnterrier.com.br, 1
cais.de, 1
caitcs.com, 1
caja-pdf.es, 1
-cajio.ru, 1
+cajio.ru, 0
cajunuk.co.uk, 1
cake-time.co.uk, 1
cakestart.net, 1
caketoindia.com, 1
cakingandbaking.com, 1
cal.goip.de, 1
calaad.net, 1
calabasaselectrical.com, 1
@@ -5045,17 +5049,16 @@ chalker.io, 1
chalkfestival.org, 0
challengeblog.org, 1
challengeskins.com, 1
chamathellawala.com, 1
chambion.ch, 1
chameleon-ents.co.uk, 1
chameth.com, 1
chamilo.org, 1
-champ.dog, 1
champdogs.co.uk, 1
champdogs.com, 1
champicreuse.fr, 1
championcastles.ie, 1
championnat-romand-cuisiniers-amateurs.ch, 1
champions.co, 1
championweb.com.au, 1
champonthis.de, 1
@@ -5201,17 +5204,16 @@ cheltenhambounce.co.uk, 1
cheltenhambouncycastles.co.uk, 1
cheltik.ru, 1
chemicalguys-ruhrpott.de, 1
chenapartment.com, 1
chengl.com, 1
chengtongled.com, 1
chenky.com, 1
chennien.com, 1
-chentianyi.cn, 1
chenzhekl.me, 1
cherevoiture.com, 1
cherrett.digital, 1
cherrydropscandycarts.co.uk, 1
cherryonit.com, 1
cherrywoodtech.com, 1
chertseybouncycastles.co.uk, 1
chesspoint.ch, 1
@@ -5467,17 +5469,16 @@ ciss.ltd, 1
cisy.me, 1
citationgurus.com, 1
citcuit.in, 1
citimarinestore.com, 1
citizen-cam.de, 1
citizensbankal.com, 1
citizenscience.gov, 1
citizensleague.org, 1
-citizenspact.eu, 1
citizing.org, 1
citra-emu.org, 1
citrusui.me, 1
cittadesign.com, 0
citton.com.br, 1
citya.com, 1
citybusexpress.com, 1
citylights.eu, 1
@@ -5879,16 +5880,17 @@ colo-tech.com, 1
colombian.dating, 1
coloppe.com, 1
coloradolottery.com, 1
coloraid.net, 1
colorblindprogramming.com, 1
colorbrush.ru, 1
colorcentertoner.com.br, 1
colorcodedlyrics.com, 1
+colorectalcompounding.com, 1
coloringnotebook.com, 1
coloristcafe.com, 1
colorsbycarin.com, 1
colossal-events.co.uk, 1
colourfulcastles.co.uk, 1
colson-occasions.be, 1
columbuswines.com, 1
colyakootees.com, 1
@@ -5904,16 +5906,17 @@ comdurav.com, 1
comefollowme2016.com, 1
comeoncolleen.com, 1
comercialtrading.eu, 1
comerford.net, 1
comeseetv.com, 1
comestoarra.com, 1
cometbot.cf, 1
cometcache.com, 1
+cometonovascotia.ca, 1
comff.net, 1
comfintouch.com, 1
comflores.com.br, 1
comfypc.com, 1
comhack.com, 1
comico.info, 1
comicrelief.com, 1
comicspornos.com, 1
@@ -5931,17 +5934,16 @@ commoncode.com.au, 1
commoncode.io, 1
commoncore4kids.com, 1
community-cupboard.org, 1
communityblog.fedoraproject.org, 1
communitycodeofconduct.com, 1
communityflow.info, 1
communote.net, 1
comocurarlashemorroides.org, 1
-comocurarlashemorroidesya.com, 1
comodesinflamarlashemorroides.org, 1
comodo.nl, 1
comodormirmasrapido.com, 1
comogene.com, 1
comopuededejardefumar.net, 1
comoquitarlasestriasrapidamente.com, 1
comorecuperaratumujerpdf.com, 1
comp2go.com.au, 1
@@ -6237,16 +6239,17 @@ course.pp.ua, 1
coursera.org, 1
courses.nl, 1
courseworkbank.info, 1
courtlistener.com, 1
cousincouples.com, 1
covbounce.co.uk, 1
cove.sh, 1
covenantoftheriver.org, 1
+coverdat.com, 1
covermytrip.com.au, 1
covershousing.nl, 1
covoiturage.fr, 0
covve.com, 1
covybrat.cz, 1
cowbird.org, 1
cowboyim.com, 1
coweo.cz, 1
@@ -7373,16 +7376,17 @@ devafterdark.com, 1
devalps.eu, 1
devb.nl, 1
devcast.io, 1
devct.cz, 0
devdesco.com, 1
devdom.io, 1
devdoodle.net, 1
devel.cz, 1
+develop.cool, 1
developer.mydigipass.com, 0
developerfair.com, 1
developermail.io, 1
developers.facebook.com, 0
developersclub.website, 1
developfx.com, 1
developmentaid.org, 1
developmentsites.melbourne, 1
@@ -7406,17 +7410,16 @@ devlatron.net, 1
devlogr.com, 1
devlux.ch, 1
devolution.ws, 1
devonsawatzky.ca, 1
devops-survey.com, 1
devops.moe, 1
devpgsv.com, 1
devpsy.info, 1
-devstaff.gr, 1
devyn.ca, 1
devzero.io, 1
dewalch.net, 1
dewapress.com, 1
dexalo.de, 1
dezeregio.nl, 1
dezet-ev.de, 1
dezintranet.com, 1
@@ -8113,17 +8116,16 @@ drjoe.ca, 1
drjuanitacollier.com, 1
drkhsh.at, 1
drkmtrx.xyz, 1
drlangsdon.com, 1
drlazarina.net, 1
drms.us, 1
drobniuch.pl, 0
drogoz.moe, 1
-drogueriaelbarco.com, 1
droidapp.nl, 1
droidgyan.com, 1
droidhere.com, 1
droidim.com, 1
droidwave.com, 1
droidwiki.de, 1
droithxn.com, 1
drone-it.net, 1
@@ -8194,21 +8196,21 @@ duckbase.com, 1
duckduckstart.com, 1
duckinc.net, 1
duckyubuntu.tk, 1
ducohosting.com, 1
duelsow.eu, 1
duernberg.at, 1
duesee.org, 1
dufrei.com, 1
-dugnet.com, 1
-dugnet.io, 1
-dugnet.net, 1
-dugnet.org, 1
-dugnet.tech, 1
+dugnet.com, 0
+dugnet.io, 0
+dugnet.net, 0
+dugnet.org, 0
+dugnet.tech, 0
dugunedavet.com, 1
duh.se, 1
duijf.info, 1
duijfathome.nl, 1
duitang.com, 1
dukan-recepty.ru, 1
dukegat.de, 1
dukesatqueens.com, 1
@@ -8221,17 +8223,16 @@ dumbeartech.com, 1
dumbomove.com.au, 1
dumino.bg, 1
dunableguitars.com, 0
dunashoes.com, 1
duncancmt.com, 1
duncanfamilytrust.org, 1
duncanwinfrey.com, 1
dundalkdonnie.com, 1
-dune.io, 1
dunea.nl, 1
dungeon-bbs.de, 1
dunmanelectric.com, 1
duo.com, 1
duo.money, 1
duole30.com, 1
duoluodeyu.com, 1
dupisces.com.tw, 1
@@ -8499,17 +8500,16 @@ edicct.com, 1
edisonchee.com, 1
edisonlee55.com, 1
edisonnissanparts.com, 1
edit.yahoo.com, 0
edited.de, 1
edition-bambou.com, 1
edition-sonblom.de, 1
editoraacademiacrista.com.br, 1
-edlinus.cn, 1
edmundcelis.com, 1
edoss.co.za, 1
edp-collaborative.com, 1
edsm.net, 1
edstep.com, 1
edtech-hub.com, 1
edtechwebb.com, 1
edu6.cloud, 1
@@ -8793,17 +8793,16 @@ elyisus.info, 1
elytronsecurity.com, 1
em-biotek.cz, 1
emailfuermich.de, 1
emailhunter.co, 1
emailprivacytester.com, 1
emailtools.io, 1
emaily.eu, 1
emanuelduss.ch, 1
-emanuelemazzotta.com, 1
emavok.eu, 1
embassycargo.eu, 1
embellir-aroma.com, 1
embellir-kyujin.com, 1
embox.net, 1
embraceni.org, 1
embracethedarkness.co.uk, 1
embroideryexpress.co.uk, 1
@@ -8818,16 +8817,17 @@ emergenzalavoro.com, 1
emero.de, 1
emi-air-comprime.com, 1
emi.im, 1
emielraaijmakers.nl, 1
emil.click, 1
emilong.com, 1
emilstahl.dk, 1
emilvarga.com, 1
+emilyjohnson.ga, 1
emilyshepherd.me, 1
eminhuseynov.com, 1
emirabiz.com, 0
emirichardson.com, 1
emivauthey.com, 1
emkanrecords.com, 1
emkei.cz, 1
emma-o.com, 1
@@ -9013,17 +9013,17 @@ epicwalnutcreek.com, 1
epilis.gr, 1
epiphyte.network, 1
epistas.com, 1
epistas.de, 1
epitesz.co, 1
epizentrum.work, 1
epizentrum.works, 1
epmcentroitalia.it, 1
-epoch.com, 0
+epoch.com, 1
epolitiker.com, 1
epos-distributor.co.uk, 1
eposbirmingham.co.uk, 1
eposbrighton.co.uk, 1
eposbristol.co.uk, 1
eposcardiff.co.uk, 1
eposcloud.net, 1
eposkent.co.uk, 1
@@ -9565,16 +9565,17 @@ fabianackle.ch, 1
fabianasantiago.com, 1
fabianfranke.de, 1
fabienbaker.com, 1
fabienne-roux.org, 1
fabled.com, 1
fableforge.nl, 1
fabriceleroux.com, 1
fabriziorocca.it, 1
+fabrysociety.org, 1
fabse.net, 1
fabulouslyyouthfulskin.com, 1
fabulouslyyouthfulskineyeserum.com, 1
facanabota.com, 1
facanabota.com.br, 1
facciadastile.it, 1
facealacrise.fr, 1
facebattle.com, 1
@@ -9787,17 +9788,16 @@ fdsys.gov, 0
feac.us, 1
feaden.me, 1
fearghus.org, 1
fearsomegaming.com, 1
feastr-dev.de, 1
feastr.de, 1
feastr.io, 1
featherweightlabs.com, 1
-featuredmen.com, 1
fecik.sk, 1
fed51.com, 1
federalinvestments.gov, 1
federaljobs.gov, 1
federalregister.gov, 0
federicomigliavacca.it, 1
fedinvest.gov, 1
fedjobs.gov, 1
@@ -10623,17 +10623,16 @@ frokenblomma.se, 1
frolov.net, 1
frolova.org, 1
fromlemaytoz.com, 1
fromscratch.rocks, 1
front-end.dog, 1
fronteers.nl, 0
frontline.cloud, 1
frontline6.com, 1
-fropky.com, 1
frostbytes.net, 1
frostwarning.com, 1
frosty-gaming.xyz, 1
frothy.coffee, 1
froufe.com, 1
frowin-stemmer.de, 0
frozen-geek.net, 1
frozen-solid.net, 1
@@ -10767,17 +10766,16 @@ furnfurs.com, 1
furnishedproperty.com.au, 1
furnitureconcept.co.uk, 1
furry.agency, 1
furry.dk, 1
furtivelook.com, 1
fusa-miyamoto.jp, 1
fuseos.net, 1
fushee.com, 1
-fuskator.com, 1
fussball-xxl.de, 1
fussell.io, 1
futbolvivo.tv, 1
futos.de, 1
futrou.com, 1
futurefire.de, 1
futurefundapp.com, 1
futurenda.com, 1
@@ -11355,17 +11353,17 @@ givingnexus.org, 0
gix.net.pl, 1
gixtools.co.uk, 1
gixtools.com, 1
gixtools.net, 1
gixtools.uk, 1
gizmo.ovh, 1
gj-bochum.de, 1
gjcampbell.co.uk, 1
-gjengset.com, 0
+gjengset.com, 1
gjspunk.de, 0
gjung.com, 0
gkralik.eu, 1
gl.search.yahoo.com, 0
gladwellentertainments.co.uk, 1
glahcks.com, 1
glamguru.co.il, 1
glamguru.world, 1
@@ -11544,17 +11542,16 @@ gorf.chat, 1
gorf.club, 1
gorgiaxx.com, 1
gorky.media, 1
gorn.ch, 1
gorod74.ru, 0
gorschenin.com, 1
gosccs.com, 1
gosciencegirls.com, 1
-gosharewood.com, 1
goshawkdb.io, 1
goshin-group.co.jp, 1
gospelfollower.com, 1
gospelofmark.ch, 1
gospelvestcination.de, 1
gostudy.net, 1
gosuland.org, 1
gotech.com.eg, 0
@@ -12065,16 +12062,17 @@ hansolrella.com, 1
hansvaneijsden.com, 1
hansvaneijsden.nl, 1
hantse.com, 1
hanu.la, 1
hanxv.pw, 1
hanys.xyz, 1
hanzubon.jp, 1
hao-zhang.com, 1
+haogoodair.ca, 1
haozhang.org, 1
hapijs.cn, 1
hapissl.com, 1
hapivm.com, 1
happist.com, 0
happyagain.de, 1
happyagain.se, 1
happybounce.co.uk, 1
@@ -12143,16 +12141,17 @@ hashi.dk, 1
hashiconf.com, 1
hashiconf.eu, 1
hashicorp.com, 1
hashidays.com, 1
hashimah.ca, 1
hashinteractive.com, 1
hashish.net, 1
hashiura.jp, 1
+hashnode.com, 1
hashplex.com, 1
hashru.nl, 1
hashworks.net, 1
haskovec.com, 1
hasselbach-dellwig.de, 1
hatarisecurity.co.ke, 1
hatcherlawgroupnm.com, 1
hatethe.uk, 1
@@ -13389,17 +13388,17 @@ immersionwealth.com, 1
immersivewebportal.com, 1
immigrationdirect.com.au, 1
immo-passion.net, 1
immo-vk.de, 1
immobilien-badlippspringe.de, 1
immobilien-wallat.de, 1
immobilier-nice.fr, 1
immobilier92.net, 1
-immobiza.com, 1
+immobiza.com, 0
immortal.run, 1
immunicity.st, 1
imokuri123.com, 1
imoner.com, 1
imoner.ga, 1
imouyang.com, 1
impact.health.nz, 1
impacter.eu, 1
@@ -13747,17 +13746,16 @@ intracom.com, 1
intradayseasonals.com, 1
intramanager.co.uk, 1
intramanager.dk, 1
intranetsec-regionra.fr, 1
intraobes.com, 1
intrasoft.com.au, 1
intraxia.com, 1
introvertedtravel.space, 1
-intune.life, 1
intux.be, 0
intvonline.com, 1
intxt.net, 1
inusasha.de, 1
inuyasha-petition.tk, 1
invasion.com, 1
invenio.software, 1
inventaire.ch, 1
@@ -13945,16 +13943,17 @@ isoroc-nidzica.pl, 1
isowosi.com, 1
ispo.com.tw, 1
ispringcloud.ru, 1
ispsoft.pro, 1
ispweb.es, 1
isqrl.de, 1
israelbizreg.com, 1
israkurort.com, 1
+isreedyintheuk.com, 1
issasfrissa.se, 1
issforum.org, 1
issio.net, 1
isslshop.com, 1
issue.watch, 1
issuesofconcern.in, 1
ist-intim.de, 1
istanbul.systems, 1
@@ -14435,16 +14434,17 @@ jettlarue.com, 1
jetwhiz.com, 1
jetzt-elektromobil.de, 1
jeugdkans.nl, 1
jeva.nl, 1
jevisite.ca, 1
jeweet.net, 1
jez.nl, 1
jf-projects.de, 0
+jfnllc.com, 1
jfr.im, 1
jfreitag.de, 1
jgid.de, 1
jgke.fi, 1
jgwb.de, 1
jgwb.eu, 1
jhalderm.com, 1
jhaveri.net, 1
@@ -15276,16 +15276,17 @@ khoury-dulla.ch, 1
khs1994.com, 1
kiadoapartman.hu, 1
kiahoriane.com, 1
kiano.net, 1
kiapartscenter.net, 1
kiapartsdepartment.com, 1
kiapps.ovh, 1
kibibit.net, 1
+kibriscicek.net, 1
kick-in.nl, 1
kickasscanadians.ca, 1
kickedmycat.com, 1
kickerplaza.nl, 1
kidbacker.com, 1
kiddyboom.ua, 1
kids-at-home.ch, 1
kids-castles.com, 1
@@ -15428,17 +15429,19 @@ kittmedia.com, 1
kittpress.com, 1
kittyhacker101.tk, 1
kiwi.digital, 1
kiwi.global, 1
kiwipayment.com, 1
kiwipayments.com, 1
kiwiplace.com, 1
kj-prince.com, 1
+kj1391.com, 1
kj1396.net, 1
+kj1397.com, 1
kjaer.io, 1
kjarni.cc, 1
kjarrval.is, 1
kjchernov.info, 1
kjellner.com, 1
kjellvn.net, 1
kjoglum.me, 1
kk-neudorf-duissern.de, 0
@@ -16100,16 +16103,17 @@ latour-managedcare.ch, 1
latremebunda.com, 1
latrine.cz, 1
latterdaybride.com, 1
lattyware.co.uk, 1
lattyware.com, 1
laubacher.io, 1
lauchundei.at, 1
laufcampus.com, 1
+laufpix.de, 1
laufseminare-laufreisen.com, 1
lauftrainer-ausbildung.com, 1
lauftreff-himmelgeist.de, 1
laughinggrapepublishing.com, 1
laukstein.com, 1
launchpad-app2.com, 1
lauraandwill.wedding, 1
laurakashiwase.com, 1
@@ -16127,17 +16131,17 @@ lavabit.no, 1
lavalite.de, 1
lavamob.com, 1
lavapot.com, 1
lavaux.lv, 1
lavenderx.org, 1
lavita.de, 1
lavitrine-une-collection.be, 1
lavolte.net, 1
-lavval.com, 1
+lavval.com, 0
law-peters.de, 1
lawformt.com, 1
lawn-seeds.com, 1
lawnuk.com, 1
lawrence-institute.com, 1
lawrencemurgatroyd.com, 1
laylo.nl, 1
laymans911.info, 1
@@ -16377,16 +16381,17 @@ lesscloud.com, 1
lessets-graphiques.com, 1
lessing.consulting, 1
lessis.moe, 1
lesterrassesdusoleil.ch, 1
lesyndicat.info, 1
let-go.cc, 1
letemps.ch, 1
leticiagomeztagle.com, 1
+letitfly.me, 1
lets-bounce.com, 1
lets-go-acoustic.de, 1
lets-ktai.jp, 1
lets.ninja, 1
lets.nu, 1
letsbounceuk.com, 1
letsencrypt-for-cpanel.com, 1
letsgame.nl, 1
@@ -16722,16 +16727,17 @@ livekort.no, 1
livekort.se, 1
livekortti.com, 1
livekortti.fi, 1
livelexi.com, 1
livepaperhelp.com, 1
liveperformersmeeting.net, 1
liveregistratie.nl, 1
livesure.com, 1
+livi.co, 1
living-space.co.nz, 1
living24.de, 1
livingforreal.com, 1
livingworduk.org, 1
livnev.me, 1
livnev.xyz, 1
livolett.de, 1
livrariacoad.com.br, 1
@@ -17001,17 +17007,16 @@ ltba.org, 1
ltecode.com, 1
ltls.org, 1
ltn-tom-morel.fr, 1
ltransferts.com, 1
lu.search.yahoo.com, 0
luav.org, 1
lubar.me, 1
lubbockyounglawyers.org, 1
-lubomirkazakov.com, 1
lubot.net, 0
luc-oberson.ch, 1
luca.swiss, 1
lucasantarella.com, 1
lucascantor.com, 1
lucascodes.com, 1
lucasem.com, 1
lucasgaland.com, 1
@@ -17698,17 +17703,16 @@ matildajaneclothing.com, 1
matjaz.it, 1
matlss.com, 1
matomeathena.com, 1
matriterie-sdv.ro, 1
matrixmedia.ro, 1
matrixreq.com, 1
matsu-semi.com, 1
mattandyana.com, 1
-mattberryman.com, 1
mattbsg.xyz, 1
mattcarr.net, 0
mattcoles.io, 1
matteomarescotti.it, 1
mattferderer.com, 1
mattforster.ca, 1
matthecat.com, 1
matthew-carson.info, 1
@@ -17788,17 +17792,16 @@ mayoristassexshop.com, 1
maypolevilla.co.uk, 1
mayrhofer.eu.org, 1
mazda-mps.de, 1
mazda-thermote.com, 1
mazda626.net, 1
maze.fr, 1
mazternet.ru, 1
mazurlabs.tk, 1
-mazzotta.me, 1
mb-is.info, 1
mbaestlein.de, 1
mbainflatables.co.uk, 1
mbardot.com, 1
mbasic.facebook.com, 0
mbcars.be, 1
mbdrogenbos-usedcars.be, 1
mbeo.ch, 1
@@ -17863,16 +17866,17 @@ mcyukon.com, 1
md5file.com, 1
md5hashing.net, 1
mdbouncycastlehirelondon.co.uk, 1
mdcloudpracticesolutions.com, 1
mdcloudps.com, 1
mdek.at, 1
mdewendt.de, 1
mdf-bis.com, 1
+mdkr.nl, 1
mdma.net, 1
mdmed.clinic, 1
mdoering.de, 1
mdosch.de, 1
mdpraha.cz, 1
mdsave.com, 1
mdwftw.com, 1
mdx.no, 1
@@ -18016,16 +18020,17 @@ melakaltenegger.at, 1
melaniebernhardt.com, 1
melaniebilodeau.com, 1
melaniegruber.de, 1
melbourne.dating, 1
melbourneapartments.website, 1
melchizedek-forum.de, 1
meldcode-assistent.nl, 1
melearning.university, 0
+meledia.com, 1
melenchatsmelenchiens.fr, 1
melerpaine.com, 1
melf.nl, 1
melhoresdominios.com, 1
melhoresmarcasdenotebook.com.br, 1
melhorproduto.com.br, 1
melikoff.es, 1
melina-schefczyk.de, 1
@@ -18280,16 +18285,17 @@ migueldominguez.ch, 1
miguelgfierro.com, 1
miguelmartinez.ch, 1
miguelmenendez.pro, 1
miguelmoura.com, 1
miguia.tv, 1
mihnea.net, 1
mijnkerstkaarten.be, 1
mijnreisoverzicht.nl, 1
+mijnstembureau.nl, 1
mijntransacties.nl, 1
mika.cat, 1
mika.moe, 1
mikadoe.nl, 1
mikaela.info, 1
mikakalevi.com, 1
mikalikes.men, 1
mike-bland.com, 1
@@ -18489,17 +18495,16 @@ mitsign.com, 1
mitsu-szene.de, 1
mitsukabose.com, 1
mittagonggardencentre.com.au, 1
mittelunsachlich.de, 1
mitzpettel.com, 1
miui-germany.de, 1
miukimodafeminina.com, 1
mivzakim.net, 1
-miweb.cr, 1
mixnshake.com, 1
mixposure.com, 1
mixtape.moe, 1
miya.io, 1
miyako-kyoto.jp, 1
miyatore.com, 1
miyoshi-kikaku.co.jp, 1
miyoshi-kikaku.com, 1
@@ -18877,17 +18882,17 @@ mpg.ovh, 1
mpi-sa.fr, 1
mpintaamalabanna.it, 1
mplanetphl.fr, 1
mplant.io, 1
mplicka.cz, 1
mplusm.eu, 1
mpn.poker, 1
mpnpokertour.com, 1
-mpreserver.com, 0
+mpreserver.com, 1
mpserver12.org, 1
mpsgarage.com.au, 1
mpsoundcraft.com, 1
mpy.ovh, 1
mr-anderson.org, 1
mr-labo.jp, 1
mr-nachhilfe.de, 1
mr-wolf.nl, 1
@@ -19913,17 +19918,16 @@ nickcleans.co.uk, 1
nickcraver.com, 1
nickdekruijk.nl, 1
nickguyver.com, 1
nickloose.de, 1
nickmorri.com, 1
nickrickard.co.uk, 1
nickstories.de, 1
niclasreich.de, 1
-nico.one, 1
nico.st, 1
nicocourts.com, 1
nicoknibbe.nl, 1
nicolaeiotcu.ro, 1
nicolaelmer.ch, 1
nicolajanedesigns.co.uk, 1
nicolas-dumermuth.com, 1
nicolas-hoffmann.net, 1
@@ -20123,16 +20127,17 @@ noodles.net.nz, 1
noodleyum.com, 1
noodplan.co.za, 1
noodweer.be, 1
noon-entertainments.com, 1
noop.ch, 1
noordsee.de, 1
noorsolidarity.com, 1
nootropic.com, 1
+nootropicsource.com, 1
nopaste.xyz, 1
nopaynocure.com, 1
nord-sud.be, 1
nordakademie.de, 1
nordic-survival.de, 1
nordiccasinocommunity.com, 1
nordinfo.fi, 1
nordmoregatebilklubb.com, 1
@@ -20336,17 +20341,17 @@ nvr.bz, 1
nwerc.party, 1
nwgh.org, 0
nwk1.com, 1
nwra.com, 1
nwwc.dk, 1
nwwnetwork.net, 1
nxinfo.ch, 1
nyan.it, 1
-nyanpasu.tv, 1
+nyanpasu.tv, 0
nyantec.com, 1
nycoyote.org, 1
nydnxs.com, 1
nyffo.com, 1
nyiad.edu, 1
nyip.co.uk, 1
nyip.edu, 1
nyloc.de, 1
@@ -22203,16 +22208,17 @@ postblue.info, 1
postbox.life, 1
postcardpayment.com, 1
postcode.nl, 1
postcodegarant.nl, 1
postdarwinian.com, 1
postdarwinism.com, 1
postdeck.de, 1
posteo.de, 0
+posterspy.com, 1
postfalls-naturopathic.com, 1
postfinance.ch, 1
postmatescode.com, 1
postn.eu, 1
postpot.co.kr, 1
posttigo.com, 1
potatiz.com, 1
potatofrom.space, 0
@@ -22297,17 +22303,16 @@ prefix.eu, 1
pregunteleakaren.gov, 1
preigu.de, 1
preis-alarm.info, 1
preis-alarm.org, 1
preisser-it.de, 1
preisser.it, 1
prekladysanca.cz, 1
preloaded-hsts.badssl.com, 1
-prelogica.com.br, 1
preludes.org, 1
prelved.com, 1
prelved.es, 1
prelved.fi, 1
prelved.fr, 1
prelved.it, 1
prelved.nl, 1
prelved.pl, 1
@@ -22536,16 +22541,17 @@ propertygroup.pl, 1
propertyone.mk, 1
propipesystem.com, 1
proplan.co.il, 1
propmag.co, 1
proposalonline.com, 1
propr.no, 1
propseller.com, 1
proslimdiets.com, 1
+prosocialmachines.com, 1
prospanek.cz, 1
prospo.co, 1
prostohobby.ru, 1
prostye-recepty.com, 1
prot.ch, 1
proteapower.co.za, 1
protecciondelconsumidor.gov, 1
protegetudescanso.com, 1
@@ -22558,17 +22564,17 @@ protonmail.ch, 1
protonmail.com, 1
protonvpn.com, 1
prototypefund.de, 1
protoxin.net, 0
proust.ch, 0
proust.media, 0
proustmedia.de, 0
provectus.de, 1
-proveits.me, 1
+proveits.me, 0
provence-appartements.com, 1
provision-isr.nl, 1
provisionaldriving.com, 1
provitacare.com, 1
provitec.com, 1
provitec.de, 1
provokator.co.il, 1
proweser.de, 1
@@ -23422,17 +23428,16 @@ repaper.org, 1
repaxan.com, 1
repex.co.il, 1
replaceits.me, 1
replicagunsswords.com, 0
replicaswiss.nl, 1
report-incident.de, 1
report-to.io, 1
report-uri.com, 1
-report-uri.io, 1
report-url.com, 1
report-url.io, 1
reported.ly, 1
reporting.gov, 0
reporturi.com, 1
reporturi.io, 1
reporturl.com, 1
reporturl.io, 1
@@ -23927,16 +23932,17 @@ royalcitytaxi.com, 1
royalmarinesassociation.org.uk, 1
royalnissanparts.com, 1
royalpalacenogent.fr, 1
royalrangers.fi, 1
royalty-market.com, 1
royalvisiongroup.com, 1
royzez.com, 1
rozalisbengal.ro, 1
+rozalynne-dawn.ga, 1
rozhodce.cz, 1
rpadovani.com, 1
rpasafrica.com, 1
rpgmaker.es, 1
rpherbig.com, 1
rpine.net, 1
rpy.xyz, 1
rq-labo.jp, 1
@@ -24179,16 +24185,17 @@ sagemontchurch.org, 1
sagerus.com, 1
sagsmarseille.com, 1
sahar.io, 1
sahb.dk, 1
sahkotyot.eu, 1
said.id, 1
said.my.id, 1
saier.me, 1
+saifoundation.in, 1
saigonflowers.com, 1
saigonstar.de, 1
saikarra.com, 1
saikou.moe, 1
saikouji.tokushima.jp, 1
sailormoonevents.org, 0
saimoe.moe, 1
saimoe.org, 1
@@ -25285,17 +25292,16 @@ sidelka-tver.ru, 1
sidepodcast.com, 1
sidepodcastdaily.com, 1
sidepodcastextra.com, 1
sideshowbarker.net, 1
sidium.de, 1
sidnicio.us, 1
sidonge.com, 1
sidongkim.com, 1
-sidpod.ru, 1
siebeve.be, 1
siegemund-frankfurt.de, 1
sieh.es, 1
sientemendoza.com.ar, 1
sieulog.com, 1
siewert-kau.de, 1
sift-tool.org, 1
sig6.org, 1
@@ -25402,16 +25408,17 @@ silverstartup.sk, 1
silverwind.io, 1
silviamacallister.com, 1
silvine.xyz, 1
silvistefi.com, 1
sim-karten.net, 1
sim-sim.appspot.com, 1
sim4seed.org, 1
simam.de, 1
+simbeton.nl, 1
simbolo.co.uk, 0
simeonoff.ninja, 1
simetal.ch, 1
simfed.org, 1
simlau.net, 1
simmis.fr, 1
simoesgoulart.com.br, 1
simon-hofmann.org, 1
@@ -26275,17 +26282,16 @@ squirex2.com, 1
squirtlesbians.net, 1
sqzryang.com, 1
sr-cs.net, 1
srandom.com, 1
srbija-nekretnine.org, 1
src.fedoraproject.org, 1
srchub.org, 1
srinivasan.io, 1
-sritest.io, 1
sro.center, 1
srolim.com, 1
srrdb.com, 1
srroddy.com, 1
srv.so, 1
srvc.io, 1
srvonfire.com, 1
ss-x.ru, 1
@@ -26465,17 +26471,17 @@ stedb.eu, 1
stedbg.net, 1
steef389.eu, 1
steelephys.com.au, 1
steemit.com, 1
steenackers.be, 1
stefan-bayer.eu, 1
stefan-schlueter.de, 1
stefanbayer.de, 1
-stefanovski.io, 0
+stefanovski.io, 1
stefany.eu, 1
steffi-in-australien.com, 1
steidlewirt.de, 1
steigerplank.com, 0
steinbergmedia.de, 1
steinibox.de, 1
steklein.de, 1
stella-artis-ensemble.at, 1
@@ -26540,17 +26546,16 @@ stevens.se, 1
stevensheffey.me, 1
stevenski.com, 0
steventress.com, 1
stevenwooding.com, 1
stevenz.xyz, 1
stevesdrivingschooltyneside.com, 1
stewartswines.com, 1
stewonet.nl, 1
-steyaert.be, 1
stfw.info, 1
stichtingliab.nl, 1
stichtingscholierenvervoerzeeland.nl, 1
stichtingsticky.nl, 1
stick2bike.de, 1
stickergiant.com, 1
stickies.io, 1
stickmanventures.com, 1
@@ -26601,16 +26606,17 @@ stomt.com, 1
stonedworms.de, 1
stonefusion.org.uk, 1
stonehammerhead.org, 1
stonemain.eu, 1
stonemanbrasil.com.br, 1
stony.com, 1
stonystratford.org, 1
stopakwardhandshakes.org, 1
+stopbreakupnow.org, 1
stopbullying.gov, 1
stopfraud.gov, 1
stopthethyroidmadness.com, 1
stordbatlag.no, 1
store-host.com, 1
store10.de, 1
storedsafe.com, 1
storgom.ua, 0
@@ -26639,17 +26645,16 @@ stratmann-b.de, 1
straubis.org, 1
strauser.com, 1
stravers.shoes, 1
stream-ing.xyz, 1
streamchan.org, 1
streamdesk.ca, 1
streamer.tips, 1
streamlineautogroup.com, 1
-streampanel.net, 1
streams.dyndns.org, 1
streamthemeeting.com, 1
streamzilla.com, 1
street-smart-home.de, 1
streetdancecenter.com, 1
streets.mn, 1
streetspotr.com, 1
streetview.wien, 1
@@ -28012,16 +28017,17 @@ tiggeriffic.com, 1
tiihosen.fi, 1
tijden.nu, 1
tijo.ch, 1
tik.edu.ee, 1
tik.help, 1
tiki-god.co.uk, 1
tiledailyshop.com, 1
tileyourvisit.pt, 1
+tiliaze.biz, 1
tiliaze.info, 1
tiliaze.net, 1
till.im, 1
tillberg.us, 1
tilleysbouncycastles.co.uk, 1
tillseasyscore.com, 1
tiltedwindmillcrafts.com, 1
timbarlotta.com, 1
@@ -28048,18 +28054,20 @@ timmersgems.com, 1
timmy.im, 1
timmy.ws, 1
timmyrs.de, 1
timoxbrow.com, 1
timroes.de, 1
timstoffel.net, 0
timtaubert.de, 1
timtelfer.com, 1
+timtj.ca, 1
timvandekamp.nl, 1
timvivian.ca, 1
+timweb.ca, 1
timysewyn.be, 1
tinastahlschmidt.de, 1
tinf15b4.de, 1
tinfoilsecurity.com, 0
tinfoleak.com, 1
tink.network, 1
tinker.career, 1
tinkerboard.org, 1
@@ -28438,16 +28446,17 @@ toutenmusic.fr, 1
toutmonexam.fr, 1
tovare.com, 1
toverland-tickets.nl, 1
towandalibrary.org, 1
towaway.ru, 1
townandcountryus.com, 1
townhousedevelopments.com.au, 1
townhouseregister.com.au, 1
+townofbridgewater.ca, 1
towywebdesigns.uk, 1
tox.im, 1
toxicip.com, 1
toymania.de, 1
toysperiod.com, 1
tp-iryuubun.com, 1
tp-kabushiki.com, 1
tp-kyouyufudousan.com, 1
@@ -28478,17 +28487,16 @@ traces.ml, 1
tracetracker.com, 1
tracetracker.no, 1
track.plus, 1
trackchair.com, 1
trackdays4fun.com, 1
trackdomains.com, 1
trackersimulator.org, 1
trackeye.dk, 1
-trackmeet.io, 1
trackrecordpro.co.uk, 1
tractorpumps.com, 1
trade.gov.uk, 1
tradedesk.co.za, 1
tradeinvent.co.uk, 1
trademan.ky, 1
traderjoe-cloud.de, 1
tradietrove.com.au, 1
@@ -29216,16 +29224,17 @@ urban-culture.fr, 1
urban.melbourne, 1
urbanesecurity.com, 1
urbanfi.sh, 1
urbanguerillas.de, 1
urbanietz-immobilien.de, 1
urbanmelbourne.info, 1
urbannewsservice.com, 1
urbansparrow.in, 1
+urbanstylestaging.com, 1
urbanwildlifealliance.org, 1
urbexdk.nl, 1
urcentral.com, 1
urcentral.org, 1
ureka.org, 1
urgences-valais.ch, 1
uripura.de, 1
urist1011.ru, 1
@@ -29506,17 +29515,16 @@ vekenz.com, 1
velasense.com, 1
velen.io, 1
velotyretz.fr, 1
venalytics.com, 1
vendigital.com, 1
vendorconnect.nyc, 1
venicerealdeal.com, 1
venmos.com, 1
-venoom.eu, 1
ventesprivees-fr.com, 1
ventizo.com, 1
venturavwparts.com, 1
venturum.com, 1
venturum.de, 1
venturum.eu, 1
venturum.net, 1
vera.bg, 1
@@ -29971,17 +29979,17 @@ wabatam.com, 1
wabifoggynuts.com, 1
wachter.biz, 1
wadidi.com, 1
wadsworth.gallery, 1
wadvisor.com, 1
waelisch.de, 1
waelti.xxx, 1
wafa4hw.com, 1
-wafairhaven.com.au, 0
+wafairhaven.com.au, 1
waffle.at, 1
wafni.com, 1
wahhoi.net, 0
wahidhasan.com, 1
wahlman.org, 1
wahrnehmungswelt.de, 1
wahrnehmungswelten.de, 1
wai-in.com, 1
@@ -30075,16 +30083,17 @@ watchparts-and-tools-okayama.co.jp, 1
watchstyle.com, 1
watchtv-online.pw, 1
watchweasel.com, 1
waterfedpole.com, 1
watermonitor.gov, 1
watersb.org, 1
watertrails.io, 1
watsonwork.me, 1
+wattechweb.com, 1
wave-ola.es, 1
wavesboardshop.com, 1
wavesoftime.com, 1
wawak.pl, 1
waxdramatic.com, 1
waylaydesign.com, 1
wayne.cloud, 0
wayohoo.com, 1
@@ -30904,16 +30913,17 @@ wt-server3.de, 1
wtf.ninja, 1
wtfismyip.com, 1
wth.in, 1
wtpmj.com, 1
wubify.com, 1
wuchipc.com, 1
wuerfel.wf, 1
wuerfelmail.de, 1
+wufu.org, 0
wug.jp, 1
wug.news, 1
wuji.cz, 1
wukongmusic.us, 0
wulpi.it, 1
wumbo.cf, 1
wumbo.co.nz, 1
wumbo.ga, 1
@@ -30993,17 +31003,16 @@ www.re, 1
www.rememberthemilk.com, 1
www.sb, 1
www.simbolo.co.uk, 0
www.simple.com, 0
www.theguardian.com, 1
www.therapynotes.com, 1
www.tinfoilsecurity.com, 0
www.torproject.org, 0
-www.tumblr.com, 0
www.twitter.com, 0
www.united.com, 1
www.usaa.com, 0
www.vino75.com, 0
www.wepay.com, 0
www.wordpress.com, 0
www68277.com, 1
wxcafe.net, 1
@@ -31648,19 +31657,19 @@ z33.ch, 1
z4k.de, 1
z99944x.xyz, 1
za.search.yahoo.com, 0
zaalleatherwear.nl, 0
zabszk.net, 1
zacarias.com.ar, 1
zacavi.com.br, 1
zach.codes, 1
-zacharopoulos.eu, 1
-zacharopoulos.me, 1
-zacharopoulos.org, 1
+zacharopoulos.eu, 0
+zacharopoulos.me, 0
+zacharopoulos.org, 0
zachborboa.com, 1
zachgibbens.org, 1
zachpeters.org, 1
zaclys.com, 1
zadarkside.ro, 1
zadroweb.com, 1
zafirus.name, 1
zahe.me, 1
@@ -31704,17 +31713,16 @@ zbyte.it, 1
zcarot.com, 1
zcarrot.com, 1
zcgram.com, 1
zcr.ca, 1
zdbl.de, 1
zdenekspacek.cz, 1
zdorovayasimya.com, 1
zdrojak.cz, 1
-zdx.ch, 1
ze3kr.com, 1
zebbra.ro, 1
zebedeescastles.co.uk, 1
zeds-official.com, 1
zeebrieshoekvanholland.nl, 1
zeel.com, 1
zeguigui.com, 1
zehdenick-bleibt-bunt.de, 1
@@ -31920,17 +31928,16 @@ zunftmarke.de, 1
zuolan.me, 1
zup.me, 1
zupago.com, 1
zupago.pe, 1
zuppy.pm, 1
zuralski.net, 1
zurgl.com, 1
zurickrelogios.com.br, 1
-zurret.de, 1
zusjesvandenbos.nl, 1
zutsu-raku.com, 1
zuviel.space, 1
zuzumba.es, 1
zvps.uk, 1
zvxr.net, 1
zvz.im, 1
zwalcz-cellulit.com, 1
--- a/servo/components/selectors/attr.rs
+++ b/servo/components/selectors/attr.rs
@@ -1,15 +1,15 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
use cssparser::ToCss;
use parser::SelectorImpl;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
#[derive(Clone, Eq, PartialEq)]
pub struct AttrSelectorWithNamespace<Impl: SelectorImpl> {
pub namespace: NamespaceConstraint<(Impl::NamespacePrefix, Impl::NamespaceUrl)>,
pub local_name: Impl::LocalName,
pub local_name_lower: Impl::LocalName,
pub operation: ParsedAttrSelectorOperation<Impl::AttrValue>,
--- a/servo/components/selectors/parser.rs
+++ b/servo/components/selectors/parser.rs
@@ -9,17 +9,17 @@ use builder::{SelectorBuilder, Specifici
use context::QuirksMode;
use cssparser::{ParseError, ParseErrorKind, BasicParseError, BasicParseErrorKind};
use cssparser::{SourceLocation, CowRcStr, Delimiter};
use cssparser::{Token, Parser as CssParser, parse_nth, ToCss, serialize_identifier, CssStringWriter};
use precomputed_hash::PrecomputedHash;
use servo_arc::ThinArc;
use sink::Push;
use smallvec::SmallVec;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::borrow::{Borrow, Cow};
use std::fmt::{self, Display, Debug, Write};
use std::iter::Rev;
use std::slice;
use visitor::SelectorVisitor;
/// A trait that represents a pseudo-element.
pub trait PseudoElement : Sized + ToCss {
--- a/servo/components/style/attr.rs
+++ b/servo/components/style/attr.rs
@@ -11,17 +11,17 @@ use app_units::Au;
use cssparser::{self, Color, RGBA};
use euclid::num::Zero;
use num_traits::ToPrimitive;
use properties::PropertyDeclarationBlock;
use selectors::attr::AttrSelectorOperation;
use servo_arc::Arc;
use servo_url::ServoUrl;
use shared_lock::Locked;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::str::FromStr;
use str::{HTML_SPACE_CHARACTERS, read_exponent, read_fraction};
use str::{read_numbers, split_commas, split_html_space_chars};
use str::str_join;
use values::specified::Length;
// Duplicated from script::dom::values.
const UNSIGNED_LONG_MAX: u32 = 2147483647;
--- a/servo/components/style/counter_style/mod.rs
+++ b/servo/components/style/counter_style/mod.rs
@@ -10,17 +10,17 @@ use Atom;
use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser};
use cssparser::{Parser, Token, serialize_identifier, CowRcStr};
use error_reporting::{ContextualParseError, ParseErrorReporter};
#[cfg(feature = "gecko")] use gecko::rules::CounterStyleDescriptors;
#[cfg(feature = "gecko")] use gecko_bindings::structs::nsCSSCounterDesc;
use parser::{ParserContext, ParserErrorContext, Parse};
use selectors::parser::SelectorParseErrorKind;
use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::borrow::Cow;
use std::fmt;
use std::ops::Range;
use style_traits::{Comma, OneOrMoreSeparated, ParseError, StyleParseErrorKind, ToCss};
use values::CustomIdent;
/// Parse the prelude of an @counter-style rule
pub fn parse_counter_style_name<'i, 't>(input: &mut Parser<'i, 't>) -> Result<CustomIdent, ParseError<'i>> {
--- a/servo/components/style/custom_properties.rs
+++ b/servo/components/style/custom_properties.rs
@@ -9,17 +9,17 @@
use Atom;
use cssparser::{Delimiter, Parser, ParserInput, SourcePosition, Token, TokenSerializationType};
use precomputed_hash::PrecomputedHash;
use properties::{CSSWideKeyword, DeclaredValue};
use selector_map::{PrecomputedHashSet, PrecomputedHashMap};
use selectors::parser::SelectorParseErrorKind;
use servo_arc::Arc;
use smallvec::SmallVec;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::borrow::{Borrow, Cow};
use std::cmp;
use std::fmt;
use std::hash::Hash;
use style_traits::{ToCss, StyleParseErrorKind, ParseError};
/// A custom property name is just an `Atom`.
///
--- a/servo/components/style/data.rs
+++ b/servo/components/style/data.rs
@@ -461,30 +461,16 @@ impl ElementData {
}
/// Returns whether this element has been part of a restyle.
#[inline]
pub fn contains_restyle_data(&self) -> bool {
self.is_restyle() || !self.hint.is_empty() || !self.damage.is_empty()
}
- /// If an ancestor is already getting reconstructed by Gecko's top-down
- /// frame constructor, no need to apply damage. Similarly if we already
- /// have an explicitly stored ReconstructFrame hint.
- ///
- /// See https://bugzilla.mozilla.org/show_bug.cgi?id=1301258#c12
- /// for followup work to make the optimization here more optimal by considering
- /// each bit individually.
- #[cfg(feature = "gecko")]
- pub fn skip_applying_damage(&self) -> bool { self.reconstructed_self_or_ancestor() }
-
- /// N/A in Servo.
- #[cfg(feature = "servo")]
- pub fn skip_applying_damage(&self) -> bool { false }
-
/// Returns whether it is safe to perform cousin sharing based on the ComputedValues
/// identity of the primary style in this ElementData. There are a few subtle things
/// to check.
///
/// First, if a parent element was already styled and we traversed past it without
/// restyling it, that may be because our clever invalidation logic was able to prove
/// that the styles of that element would remain unchanged despite changes to the id
/// or class attributes. However, style sharing relies on the strong guarantee that all
--- a/servo/components/style/gecko/generated/pseudo_element_definition.rs
+++ b/servo/components/style/gecko/generated/pseudo_element_definition.rs
@@ -1372,17 +1372,17 @@ impl PseudoElement {
/// user-agent stylesheet.
///
/// If we're not in a user-agent stylesheet, we will never parse anonymous
/// box pseudo-elements.
///
/// Returns `None` if the pseudo-element is not recognised.
#[inline]
pub fn from_slice(s: &str, in_ua_stylesheet: bool) -> Option<Self> {
- use std::ascii::AsciiExt;
+ #[allow(unused_imports)] use std::ascii::AsciiExt;
// We don't need to support tree pseudos because functional
// pseudo-elements needs arguments, and thus should be created
// via other methods.
if in_ua_stylesheet || PseudoElement::After.exposed_in_non_ua_sheets() {
if s.eq_ignore_ascii_case("after") {
return Some(PseudoElement::After);
}
@@ -1742,17 +1742,17 @@ impl PseudoElement {
}
/// Constructs a tree pseudo-element from the given name and arguments.
/// "name" must start with "-moz-tree-".
///
/// Returns `None` if the pseudo-element is not recognized.
#[inline]
pub fn tree_pseudo_element(name: &str, args: Box<[Atom]>) -> Option<Self> {
- use std::ascii::AsciiExt;
+ #[allow(unused_imports)] use std::ascii::AsciiExt;
debug_assert!(name.starts_with("-moz-tree-"));
let tree_part = &name[10..];
if tree_part.eq_ignore_ascii_case("column") {
return Some(PseudoElement::MozTreeColumn(args));
}
if tree_part.eq_ignore_ascii_case("row") {
return Some(PseudoElement::MozTreeRow(args));
}
--- a/servo/components/style/gecko/pseudo_element_definition.mako.rs
+++ b/servo/components/style/gecko/pseudo_element_definition.mako.rs
@@ -220,17 +220,17 @@ impl PseudoElement {
/// user-agent stylesheet.
///
/// If we're not in a user-agent stylesheet, we will never parse anonymous
/// box pseudo-elements.
///
/// Returns `None` if the pseudo-element is not recognised.
#[inline]
pub fn from_slice(s: &str, in_ua_stylesheet: bool) -> Option<Self> {
- use std::ascii::AsciiExt;
+ #[allow(unused_imports)] use std::ascii::AsciiExt;
// We don't need to support tree pseudos because functional
// pseudo-elements needs arguments, and thus should be created
// via other methods.
% for pseudo in SIMPLE_PSEUDOS:
if in_ua_stylesheet || ${pseudo_element_variant(pseudo)}.exposed_in_non_ua_sheets() {
if s.eq_ignore_ascii_case("${pseudo.value[1:]}") {
return Some(${pseudo_element_variant(pseudo)});
@@ -242,17 +242,17 @@ impl PseudoElement {
}
/// Constructs a tree pseudo-element from the given name and arguments.
/// "name" must start with "-moz-tree-".
///
/// Returns `None` if the pseudo-element is not recognized.
#[inline]
pub fn tree_pseudo_element(name: &str, args: Box<[Atom]>) -> Option<Self> {
- use std::ascii::AsciiExt;
+ #[allow(unused_imports)] use std::ascii::AsciiExt;
debug_assert!(name.starts_with("-moz-tree-"));
let tree_part = &name[10..];
% for pseudo in TREE_PSEUDOS:
if tree_part.eq_ignore_ascii_case("${pseudo.value[11:]}") {
return Some(${pseudo_element_variant(pseudo, "args")});
}
% endfor
None
--- a/servo/components/style/gecko_string_cache/mod.rs
+++ b/servo/components/style/gecko_string_cache/mod.rs
@@ -8,17 +8,17 @@
use gecko_bindings::bindings::Gecko_AddRefAtom;
use gecko_bindings::bindings::Gecko_Atomize;
use gecko_bindings::bindings::Gecko_Atomize16;
use gecko_bindings::bindings::Gecko_ReleaseAtom;
use gecko_bindings::structs::{nsAtom, nsAtom_AtomKind, nsStaticAtom};
use nsstring::{nsAString, nsStr};
use precomputed_hash::PrecomputedHash;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::borrow::{Cow, Borrow};
use std::char::{self, DecodeUtf16};
use std::fmt::{self, Write};
use std::hash::{Hash, Hasher};
use std::iter::Cloned;
use std::mem;
use std::ops::Deref;
use std::slice;
--- a/servo/components/style/matching.rs
+++ b/servo/components/style/matching.rs
@@ -328,31 +328,28 @@ trait PrivateMatchMethods: TElement {
}
}
/// Computes and applies non-redundant damage.
fn accumulate_damage_for(
&self,
shared_context: &SharedStyleContext,
- skip_applying_damage: bool,
damage: &mut RestyleDamage,
old_values: &ComputedValues,
new_values: &ComputedValues,
pseudo: Option<&PseudoElement>,
) -> ChildCascadeRequirement {
debug!("accumulate_damage_for: {:?}", self);
debug_assert!(!shared_context.traversal_flags.contains(TraversalFlags::Forgetful));
let difference =
self.compute_style_difference(old_values, new_values, pseudo);
- if !skip_applying_damage {
- *damage |= difference.damage;
- }
+ *damage |= difference.damage;
debug!(" > style difference: {:?}", difference);
// We need to cascade the children in order to ensure the correct
// propagation of inherited computed value flags.
if old_values.flags.inherited() != new_values.flags.inherited() {
debug!(" > flags changed: {:?} != {:?}", old_values.flags, new_values.flags);
return ChildCascadeRequirement::MustCascadeChildren;
@@ -585,17 +582,16 @@ pub trait MatchMethods : TElement {
Some(s) => s,
None => return ChildCascadeRequirement::MustCascadeChildren,
};
cascade_requirement = cmp::max(
cascade_requirement,
self.accumulate_damage_for(
context.shared,
- data.skip_applying_damage(),
&mut data.damage,
&old_primary_style,
new_primary_style,
None,
)
);
if data.styles.pseudos.is_empty() && old_styles.pseudos.is_empty() {
@@ -607,17 +603,16 @@ pub trait MatchMethods : TElement {
old_styles.pseudos.as_array().iter().zip(
data.styles.pseudos.as_array().iter());
for (i, (old, new)) in pseudo_styles.enumerate() {
match (old, new) {
(&Some(ref old), &Some(ref new)) => {
self.accumulate_damage_for(
context.shared,
- data.skip_applying_damage(),
&mut data.damage,
old,
new,
Some(&PseudoElement::from_eager_index(i)),
);
}
(&None, &None) => {},
_ => {
--- a/servo/components/style/properties/longhand/font.mako.rs
+++ b/servo/components/style/properties/longhand/font.mako.rs
@@ -1572,17 +1572,17 @@ https://drafts.csswg.org/css-fonts-4/#lo
SpecifiedValue::Normal
}
impl ToComputedValue for SpecifiedValue {
type ComputedValue = computed_value::T;
#[inline]
fn to_computed_value(&self, _context: &Context) -> computed_value::T {
- use std::ascii::AsciiExt;
+ #[allow(unused_imports)] use std::ascii::AsciiExt;
match *self {
SpecifiedValue::Normal => computed_value::T(0),
SpecifiedValue::Override(ref lang) => {
if lang.is_empty() || lang.len() > 4 || !lang.is_ascii() {
return computed_value::T(0)
}
let mut computed_lang = lang.clone();
while computed_lang.len() < 4 {
--- a/servo/components/style/properties/longhand/pointing.mako.rs
+++ b/servo/components/style/properties/longhand/pointing.mako.rs
@@ -83,17 +83,17 @@
images: vec![],
keyword: computed_value::Keyword::Auto
}
}
impl Parse for computed_value::Keyword {
fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>)
-> Result<computed_value::Keyword, ParseError<'i>> {
- use std::ascii::AsciiExt;
+ #[allow(unused_imports)] use std::ascii::AsciiExt;
use style_traits::cursor::Cursor;
let location = input.current_source_location();
let ident = input.expect_ident()?;
if ident.eq_ignore_ascii_case("auto") {
Ok(computed_value::Keyword::Auto)
} else {
Cursor::from_css_keyword(&ident)
.map(computed_value::Keyword::Cursor)
--- a/servo/components/style/str.rs
+++ b/servo/components/style/str.rs
@@ -2,17 +2,17 @@
* 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/. */
//! String utils for attributes and similar stuff.
#![deny(missing_docs)]
use num_traits::ToPrimitive;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::borrow::Cow;
use std::convert::AsRef;
use std::iter::{Filter, Peekable};
use std::str::Split;
/// A static slice of characters.
pub type StaticCharVec = &'static [char];
--- a/servo/components/style/stylesheets/viewport_rule.rs
+++ b/servo/components/style/stylesheets/viewport_rule.rs
@@ -15,17 +15,17 @@ use error_reporting::{ContextualParseErr
use euclid::TypedSize2D;
use font_metrics::get_metrics_provider_for_product;
use media_queries::Device;
use parser::{ParserContext, ParserErrorContext};
use properties::StyleBuilder;
use rule_cache::RuleCacheConditions;
use selectors::parser::SelectorParseErrorKind;
use shared_lock::{SharedRwLockReadGuard, StylesheetGuards, ToCssWithGuard};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::borrow::Cow;
use std::cell::RefCell;
use std::fmt;
use std::iter::Enumerate;
use std::str::Chars;
use style_traits::{PinchZoomFactor, ToCss, ParseError, StyleParseErrorKind};
use style_traits::viewport::{Orientation, UserZoom, ViewportConstraints, Zoom};
use stylesheets::{StylesheetInDocument, Origin};
--- a/servo/components/style/values/mod.rs
+++ b/servo/components/style/values/mod.rs
@@ -7,17 +7,17 @@
//! [values]: https://drafts.csswg.org/css-values/
#![deny(missing_docs)]
use Atom;
pub use cssparser::{RGBA, Token, Parser, serialize_identifier, CowRcStr, SourceLocation};
use parser::{Parse, ParserContext};
use selectors::parser::SelectorParseErrorKind;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt::{self, Debug};
use std::hash;
use style_traits::{ToCss, ParseError, StyleParseErrorKind};
pub mod animated;
pub mod computed;
pub mod distance;
pub mod generics;
--- a/servo/components/style/values/specified/align.rs
+++ b/servo/components/style/values/specified/align.rs
@@ -5,17 +5,17 @@
//! Values for CSS Box Alignment properties
//!
//! https://drafts.csswg.org/css-align/
use cssparser::Parser;
use gecko_bindings::structs;
use parser::{Parse, ParserContext};
use selectors::parser::SelectorParseErrorKind;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
use style_traits::{ToCss, ParseError, StyleParseErrorKind};
bitflags! {
/// Constants shared by multiple CSS Box Alignment properties
///
/// These constants match Gecko's `NS_STYLE_ALIGN_*` constants.
#[cfg_attr(feature = "gecko", derive(MallocSizeOf))]
--- a/servo/components/style/values/specified/angle.rs
+++ b/servo/components/style/values/specified/angle.rs
@@ -1,17 +1,17 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
//! Specified angles.
use cssparser::{Parser, Token};
use parser::{ParserContext, Parse};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
use style_traits::{ToCss, ParseError};
use values::CSSFloat;
use values::computed::{Context, ToComputedValue};
use values::computed::angle::Angle as ComputedAngle;
use values::specified::calc::CalcNode;
/// A specified angle.
--- a/servo/components/style/values/specified/calc.rs
+++ b/servo/components/style/values/specified/calc.rs
@@ -3,17 +3,17 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//! [Calc expressions][calc].
//!
//! [calc]: https://drafts.csswg.org/css-values/#calc-notation
use cssparser::{Parser, Token};
use parser::ParserContext;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
use style_traits::{ToCss, ParseError, StyleParseErrorKind};
use style_traits::values::specified::AllowedNumericType;
use values::{CSSInteger, CSSFloat};
use values::computed;
use values::specified::{Angle, Time};
use values::specified::length::{AbsoluteLength, FontRelativeLength, NoCalcLength};
use values::specified::length::ViewportPercentageLength;
--- a/servo/components/style/values/specified/grid.rs
+++ b/servo/components/style/values/specified/grid.rs
@@ -2,17 +2,17 @@
* 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/. */
//! CSS handling for the computed value of
//! [grids](https://drafts.csswg.org/css-grid/)
use cssparser::{Parser, Token, ParseError as CssParseError};
use parser::{Parse, ParserContext};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::mem;
use style_traits::{ParseError, StyleParseErrorKind};
use values::{CSSFloat, CustomIdent};
use values::computed::{self, Context, ToComputedValue};
use values::generics::grid::{GridTemplateComponent, RepeatCount, TrackBreadth, TrackKeyword, TrackRepeat};
use values::generics::grid::{LineNameList, TrackSize, TrackList, TrackListType, TrackListValue};
use values::specified::{LengthOrPercentage, Integer};
--- a/servo/components/style/values/specified/length.rs
+++ b/servo/components/style/values/specified/length.rs
@@ -7,17 +7,17 @@
//! [length]: https://drafts.csswg.org/css-values/#lengths
use app_units::Au;
use cssparser::{Parser, Token};
use euclid::Size2D;
use font_metrics::FontMetricsQueryResult;
use parser::{Parse, ParserContext};
use std::{cmp, fmt, mem};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::ops::{Add, Mul};
use style_traits::{ToCss, ParseError, StyleParseErrorKind};
use style_traits::values::specified::AllowedNumericType;
use stylesheets::CssRuleType;
use super::{AllowQuirks, Number, ToComputedValue, Percentage};
use values::{Auto, CSSFloat, Either, None_, Normal};
use values::{ExtremumLength, serialize_dimension};
use values::computed::{self, CSSPixelLength, Context};
--- a/servo/components/style/values/specified/mod.rs
+++ b/servo/components/style/values/specified/mod.rs
@@ -6,17 +6,17 @@
//!
//! TODO(emilio): Enhance docs.
use Namespace;
use context::QuirksMode;
use cssparser::{Parser, Token, serialize_identifier};
use parser::{ParserContext, Parse};
use self::url::SpecifiedUrl;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::f32;
use std::fmt;
use style_traits::{ToCss, ParseError, StyleParseErrorKind};
use style_traits::values::specified::AllowedNumericType;
use super::{Auto, CSSFloat, CSSInteger, Either, None_};
use super::computed::{Context, ToComputedValue};
use super::generics::{GreaterThanOrEqualToOne, NonNegative};
use super::generics::grid::{GridLine as GenericGridLine, TrackBreadth as GenericTrackBreadth};
--- a/servo/components/style/values/specified/percentage.rs
+++ b/servo/components/style/values/specified/percentage.rs
@@ -1,17 +1,17 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
//! Specified percentages.
use cssparser::{Parser, Token};
use parser::{Parse, ParserContext};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
use style_traits::{ParseError, ToCss};
use style_traits::values::specified::AllowedNumericType;
use values::{CSSFloat, serialize_percentage};
use values::computed::{Context, ToComputedValue};
use values::computed::percentage::Percentage as ComputedPercentage;
use values::specified::calc::CalcNode;
--- a/servo/components/style/values/specified/text.rs
+++ b/servo/components/style/values/specified/text.rs
@@ -2,17 +2,17 @@
* 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/. */
//! Specified types for text properties.
use cssparser::{Parser, Token};
use parser::{Parse, ParserContext};
use selectors::parser::SelectorParseErrorKind;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use style_traits::ParseError;
use values::computed::{Context, ToComputedValue};
use values::computed::text::LineHeight as ComputedLineHeight;
use values::computed::text::TextOverflow as ComputedTextOverflow;
use values::generics::text::InitialLetter as GenericInitialLetter;
use values::generics::text::LineHeight as GenericLineHeight;
use values::generics::text::Spacing;
use values::specified::{AllowQuirks, Integer, NonNegativeNumber, Number};
--- a/servo/components/style/values/specified/time.rs
+++ b/servo/components/style/values/specified/time.rs
@@ -1,17 +1,17 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
//! Specified time values.
use cssparser::{Parser, Token};
use parser::{ParserContext, Parse};
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
use style_traits::{ToCss, ParseError, StyleParseErrorKind};
use style_traits::values::specified::AllowedNumericType;
use values::CSSFloat;
use values::computed::{Context, ToComputedValue};
use values::computed::time::Time as ComputedTime;
use values::specified::calc::CalcNode;
--- a/servo/components/style_traits/viewport.rs
+++ b/servo/components/style_traits/viewport.rs
@@ -2,17 +2,17 @@
* 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/. */
//! Helper types for the `@viewport` rule.
use {CSSPixel, PinchZoomFactor, ParseError, ToCss};
use cssparser::Parser;
use euclid::TypedSize2D;
-use std::ascii::AsciiExt;
+#[allow(unused_imports)] use std::ascii::AsciiExt;
use std::fmt;
define_css_keyword_enum!(UserZoom:
"zoom" => Zoom,
"fixed" => Fixed);
define_css_keyword_enum!(Orientation:
"auto" => Auto,
--- a/servo/python/servo/build_commands.py
+++ b/servo/python/servo/build_commands.py
@@ -260,17 +260,16 @@ class MachCommands(CommandBase):
android_dir = self.android_build_dir(dev)
openssl_dir = path.join(android_dir, "native", "openssl")
if not path.exists(openssl_dir):
os.makedirs(openssl_dir)
shutil.copy(path.join(self.android_support_dir(), "openssl.makefile"), openssl_dir)
shutil.copy(path.join(self.android_support_dir(), "openssl.sh"), openssl_dir)
# Check if the NDK version is 12
- env["ANDROID_NDK_ROOT"] = env["ANDROID_NDK"]
with open(path.join(env["ANDROID_NDK"], 'source.properties')) as ndk_properties:
lines = ndk_properties.readlines()
if lines[1].split(' = ')[1].split('.')[0] != '12':
print("Currently only support NDK 12.")
sys.exit(1)
env["RUST_TARGET"] = target
with cd(openssl_dir):
--- a/storage/mozStorageService.cpp
+++ b/storage/mozStorageService.cpp
@@ -226,36 +226,16 @@ Service::getSingleton()
if (NS_FAILED(service->initialize())) {
gService = nullptr;
return nullptr;
}
return service.forget();
}
-nsIXPConnect *Service::sXPConnect = nullptr;
-
-// static
-already_AddRefed<nsIXPConnect>
-Service::getXPConnect()
-{
- NS_PRECONDITION(NS_IsMainThread(),
- "Must only get XPConnect on the main thread!");
- NS_PRECONDITION(gService,
- "Can not get XPConnect without an instance of our service!");
-
- // If we've been shutdown, sXPConnect will be null. To prevent leaks, we do
- // not cache the service after this point.
- nsCOMPtr<nsIXPConnect> xpc(sXPConnect);
- if (!xpc)
- xpc = do_GetService(nsIXPConnect::GetCID());
- NS_ASSERTION(xpc, "Could not get XPConnect!");
- return xpc.forget();
-}
-
int32_t Service::sSynchronousPref;
// static
int32_t
Service::getSynchronousPref()
{
return sSynchronousPref;
}
@@ -274,18 +254,16 @@ Service::~Service()
{
mozilla::UnregisterWeakMemoryReporter(this);
mozilla::UnregisterStorageSQLiteDistinguishedAmount();
int rc = sqlite3_vfs_unregister(mSqliteVFS);
if (rc != SQLITE_OK)
NS_WARNING("Failed to unregister sqlite vfs wrapper.");
- shutdown(); // To release sXPConnect.
-
gService = nullptr;
delete mSqliteVFS;
mSqliteVFS = nullptr;
}
void
Service::registerConnection(Connection *aConnection)
{
@@ -390,28 +368,21 @@ Service::minimizeMemory()
NewRunnableMethod<const nsCString>(
"Connection::ExecuteSimpleSQL",
conn, &Connection::ExecuteSimpleSQL, shrinkPragma);
Unused << conn->threadOpenedOn->Dispatch(event, NS_DISPATCH_NORMAL);
}
}
}
-void
-Service::shutdown()
-{
- NS_IF_RELEASE(sXPConnect);
-}
-
sqlite3_vfs *ConstructTelemetryVFS();
const char *GetVFSName();
static const char* sObserverTopics[] = {
"memory-pressure",
- "xpcom-shutdown",
"xpcom-shutdown-threads"
};
nsresult
Service::initialize()
{
MOZ_ASSERT(NS_IsMainThread(), "Must be initialized on the main thread");
@@ -423,32 +394,26 @@ Service::initialize()
if (mSqliteVFS) {
rc = sqlite3_vfs_register(mSqliteVFS, 0);
if (rc != SQLITE_OK)
return convertResultCode(rc);
} else {
NS_WARNING("Failed to register telemetry VFS");
}
- // Register for xpcom-shutdown so we can cleanup after ourselves. The
- // observer service can only be used on the main thread.
nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
NS_ENSURE_TRUE(os, NS_ERROR_FAILURE);
for (size_t i = 0; i < ArrayLength(sObserverTopics); ++i) {
nsresult rv = os->AddObserver(this, sObserverTopics[i], false);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
}
- // We cache XPConnect for our language helpers. XPConnect can only be
- // used on the main thread.
- (void)CallGetService(nsIXPConnect::GetCID(), &sXPConnect);
-
// We need to obtain the toolkit.storage.synchronous preferences on the main
// thread because the preference service can only be accessed there. This
// is cached in the service for all future Open[Unshared]Database calls.
sSynchronousPref =
Preferences::GetInt(PREF_TS_SYNCHRONOUS, PREF_TS_SYNCHRONOUS_DEFAULT);
// We need to obtain the toolkit.storage.pageSize preferences on the main
// thread because the preference service can only be accessed there. This
@@ -799,18 +764,16 @@ Service::BackupDatabaseFile(nsIFile *aDB
////////////////////////////////////////////////////////////////////////////////
//// nsIObserver
NS_IMETHODIMP
Service::Observe(nsISupports *, const char *aTopic, const char16_t *)
{
if (strcmp(aTopic, "memory-pressure") == 0) {
minimizeMemory();
- } else if (strcmp(aTopic, "xpcom-shutdown") == 0) {
- shutdown();
} else if (strcmp(aTopic, "xpcom-shutdown-threads") == 0) {
// The Service is kept alive by our strong observer references and
// references held by Connection instances. Since we're about to remove the
// former and then wait for the latter ones to go away, it behooves us to
// hold a strong reference to ourselves so our calls to getConnections() do
// not happen on a deleted object.
RefPtr<Service> kungFuDeathGrip = this;
--- a/storage/mozStorageService.h
+++ b/storage/mozStorageService.h
@@ -13,17 +13,16 @@
#include "nsIMemoryReporter.h"
#include "nsIObserver.h"
#include "nsTArray.h"
#include "mozilla/Mutex.h"
#include "mozIStorageService.h"
class nsIMemoryReporter;
-class nsIXPConnect;
struct sqlite3_vfs;
namespace mozilla {
namespace storage {
class Connection;
class Service : public mozIStorageService
, public nsIObserver
@@ -55,22 +54,16 @@ public:
static already_AddRefed<Service> getSingleton();
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_MOZISTORAGESERVICE
NS_DECL_NSIOBSERVER
NS_DECL_NSIMEMORYREPORTER
/**
- * Obtains an already AddRefed pointer to XPConnect. This is used by
- * language helpers.
- */
- static already_AddRefed<nsIXPConnect> getXPConnect();
-
- /**
* Obtains the cached data for the toolkit.storage.synchronous preference.
*/
static int32_t getSynchronousPref();
/**
* Obtains the default page size for this platform. The default value is
* specified in the SQLite makefile (SQLITE_DEFAULT_PAGE_SIZE) but it may be
* overriden with the PREF_TS_PAGESIZE hidden preference.
@@ -152,21 +145,16 @@ private:
/**
* Frees as much heap memory as possible from all of the known open
* connections.
*/
void minimizeMemory();
/**
- * Shuts down the storage service, freeing all of the acquired resources.
- */
- void shutdown();
-
- /**
* Lazily creates and returns a collation created from the application's
* locale that all statements of all Connections of this Service may use.
* Since the collation's lifetime is that of the Service and no statement may
* execute outside the lifetime of the Service, this method returns a raw
* pointer.
*/
nsICollation *getLocaleCollation();
@@ -180,18 +168,16 @@ private:
nsCOMPtr<nsICollation> mLocaleCollation;
nsCOMPtr<nsIFile> mProfileStorageFile;
nsCOMPtr<nsIMemoryReporter> mStorageSQLiteReporter;
static Service *gService;
- static nsIXPConnect *sXPConnect;
-
static int32_t sSynchronousPref;
static int32_t sDefaultPageSize;
};
} // namespace storage
} // namespace mozilla
#endif /* MOZSTORAGESERVICE_H */
--- a/storage/mozStorageStatementJSHelper.cpp
+++ b/storage/mozStorageStatementJSHelper.cpp
@@ -16,29 +16,31 @@
#include "mozStorageStatementRow.h"
#include "mozStorageStatementParams.h"
#include "jsapi.h"
#include "xpc_make_class.h"
+#include "mozilla/Services.h"
+
namespace mozilla {
namespace storage {
////////////////////////////////////////////////////////////////////////////////
//// Global Functions
static
bool
stepFunc(JSContext *aCtx,
uint32_t,
JS::Value *_vp)
{
- nsCOMPtr<nsIXPConnect> xpc(Service::getXPConnect());
+ nsCOMPtr<nsIXPConnect> xpc(mozilla::services::GetXPConnect());
nsCOMPtr<nsIXPConnectWrappedNative> wrapper;
JSObject *obj = JS_THIS_OBJECT(aCtx, _vp);
if (!obj) {
return false;
}
nsresult rv =
xpc->GetWrappedNativeOfJSObject(aCtx, obj, getter_AddRefs(wrapper));
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -384302,16 +384302,22 @@
},
"wdspec": {
"webdriver/tests/actions/key.py": [
[
"/webdriver/tests/actions/key.py",
{}
]
],
+ "webdriver/tests/actions/key_shortcuts.py": [
+ [
+ "/webdriver/tests/actions/key_shortcuts.py",
+ {}
+ ]
+ ],
"webdriver/tests/actions/modifier_click.py": [
[
"/webdriver/tests/actions/modifier_click.py",
{
"timeout": "long"
}
]
],
@@ -541906,17 +541912,17 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
"html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html": [
"604c6ee2bd78187a600dd28e03b60caf89580cfe",
"testharness"
],
"html/browsers/origin/cross-origin-objects/cross-origin-objects.html": [
- "9202ebf4d640ffccec49451bae23526c24a1053b",
+ "ce27e8e729f434ce3e908a49a1ffd733bcdcd06a",
"testharness"
],
"html/browsers/origin/cross-origin-objects/frame.html": [
"7f982fe347ac7fbc14e853d14a2535685a970395",
"support"
],
"html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html": [
"37d2be417bbc3b8473c2d4bfaa3b7a9973140ce9",
@@ -586525,16 +586531,20 @@
"webdriver/tests/actions/conftest.py": [
"ebdbe326fd2fc53a3522b846505808496407b5b8",
"support"
],
"webdriver/tests/actions/key.py": [
"69542dc107d881bf18dfff3203bfd7a9ec31b4ad",
"wdspec"
],
+ "webdriver/tests/actions/key_shortcuts.py": [
+ "dbe27dd0b1625169fc8cc2055f8fb49d5a4a78d2",
+ "wdspec"
+ ],
"webdriver/tests/actions/modifier_click.py": [
"2ec22f44973e6da3b9506ad7cc9fd0949f3ef8b5",
"wdspec"
],
"webdriver/tests/actions/mouse.py": [
"d7af66e45c8e306b4258b92c54ed86073fd21c8d",
"wdspec"
],
@@ -586546,17 +586556,17 @@
"3b10143dea60567f30b4ab6c544e005d02f31fc3",
"wdspec"
],
"webdriver/tests/actions/support/__init__.py": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
"webdriver/tests/actions/support/keys.py": [
- "636991372c21e52b623ed4ada9dfb675dd7f7e14",
+ "61fc98ac2abeeb82486e6689c9cc16d0aa444b69",
"support"
],
"webdriver/tests/actions/support/refine.py": [
"0d244bffe67ef57be68aad99f1cbc7440ff80e27",
"support"
],
"webdriver/tests/actions/support/test_actions_wdspec.html": [
"94b6f474bb4417cf2c06cb5fc6042c01bde98aa2",
@@ -596618,17 +596628,17 @@
"f95cceffe7485aac7b53d3f891ad87d50ccc8b1d",
"testharness"
],
"webrtc/RTCConfiguration-rtcpMuxPolicy.html": [
"a9beda60053916185106aedac98014123d6f7105",
"testharness"
],
"webrtc/RTCDTMFSender-helper.js": [
- "54456b1c74d55552fdad0405f55dcd728205b561",
+ "0c2e8862deffeec71ac925642647bb9ee4ad70ff",
"support"
],
"webrtc/RTCDTMFSender-insertDTMF.https.html": [
"50ef787a77512dc7eea7731b9766fda4d1456694",
"testharness"
],
"webrtc/RTCDTMFSender-ontonechange-long.https.html": [
"d89602fd655bf032cadfc538291ccea858eb2446",
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/webdriver/tests/actions/key_shortcuts.py
@@ -0,0 +1,49 @@
+from tests.actions.support.keys import Keys, MODIFIER_KEY
+from tests.actions.support.refine import get_keys
+
+
+def test_mod_a_and_backspace_deletes_all_text(session, key_reporter, key_chain):
+ key_chain.send_keys("abc d") \
+ .key_down(MODIFIER_KEY) \
+ .key_down("a") \
+ .key_up(MODIFIER_KEY) \
+ .key_up("a") \
+ .key_down(Keys.BACKSPACE) \
+ .perform()
+ assert get_keys(key_reporter) == ""
+
+
+def test_mod_a_mod_c_right_mod_v_pastes_text(session, key_reporter, key_chain):
+ initial = "abc d"
+ key_chain.send_keys(initial) \
+ .key_down(MODIFIER_KEY) \
+ .key_down("a") \
+ .key_up(MODIFIER_KEY) \
+ .key_up("a") \
+ .key_down(MODIFIER_KEY) \
+ .key_down("c") \
+ .key_up(MODIFIER_KEY) \
+ .key_up("c") \
+ .send_keys([Keys.RIGHT]) \
+ .key_down(MODIFIER_KEY) \
+ .key_down("v") \
+ .key_up(MODIFIER_KEY) \
+ .key_up("v") \
+ .perform()
+ assert get_keys(key_reporter) == initial * 2
+
+
+def test_mod_a_mod_x_deletes_all_text(session, key_reporter, key_chain):
+ key_chain.send_keys("abc d") \
+ .key_down(MODIFIER_KEY) \
+ .key_down("a") \
+ .key_up(MODIFIER_KEY) \
+ .key_up("a") \
+ .key_down(MODIFIER_KEY) \
+ .key_down("x") \
+ .key_up(MODIFIER_KEY) \
+ .key_up("x") \
+ .perform()
+ assert get_keys(key_reporter) == ""
+
+
--- a/testing/web-platform/tests/webdriver/tests/actions/support/keys.py
+++ b/testing/web-platform/tests/webdriver/tests/actions/support/keys.py
@@ -15,16 +15,17 @@
# specific language governing permissions and limitations
# under the License.
"""
The Keys implementation.
"""
from inspect import getmembers
+import sys
class Keys(object):
"""
Set of special keys codes.
See also https://w3c.github.io/webdriver/webdriver-spec.html#h-keyboard-actions
"""
@@ -735,8 +736,13 @@ ALL_EVENTS = {
"ctrl": False,
"key": "ZenkakuHankaku",
"location": 0,
"meta": False,
"shift": False,
"value": u"\ue040",
}
}
+
+if sys.platform == 'darwin':
+ MODIFIER_KEY = Keys.META
+else:
+ MODIFIER_KEY = Keys.CONTROL
--- a/toolkit/components/places/UnifiedComplete.js
+++ b/toolkit/components/places/UnifiedComplete.js
@@ -77,29 +77,32 @@ const FRECENCY_DEFAULT = 1000;
// Extensions are allowed to add suggestions if they have registered a keyword
// with the omnibox API. This is the maximum number of suggestions an extension
// is allowed to add for a given search string.
// This value includes the heuristic result.
const MAXIMUM_ALLOWED_EXTENSION_MATCHES = 6;
// After this time, we'll give up waiting for the extension to return matches.
-const MAXIMUM_ALLOWED_EXTENSION_TIME_MS = 5000;
+const MAXIMUM_ALLOWED_EXTENSION_TIME_MS = 3000;
// A regex that matches "single word" hostnames for whitelisting purposes.
// The hostname will already have been checked for general validity, so we
// don't need to be exhaustive here, so allow dashes anywhere.
const REGEXP_SINGLEWORD_HOST = new RegExp("^[a-z0-9-]+$", "i");
// Regex used to match userContextId.
const REGEXP_USER_CONTEXT_ID = /(?:^| )user-context-id:(\d+)/;
// Regex used to match one or more whitespace.
const REGEXP_SPACES = /\s+/;
+// The result is notified on a delay, to avoid rebuilding the panel at every match.
+const NOTIFYRESULT_DELAY_MS = 16;
+
// Sqlite result row index constants.
const QUERYINDEX_QUERYTYPE = 0;
const QUERYINDEX_URL = 1;
const QUERYINDEX_TITLE = 2;
const QUERYINDEX_BOOKMARKED = 3;
const QUERYINDEX_BOOKMARKTITLE = 4;
const QUERYINDEX_TAGS = 5;
const QUERYINDEX_VISITCOUNT = 6;
@@ -325,16 +328,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
XPCOMUtils.defineLazyServiceGetter(this, "textURIService",
"@mozilla.org/intl/texttosuburi;1",
"nsITextToSubURI");
function setTimeout(callback, ms) {
let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
timer.initWithCallback(callback, ms, timer.TYPE_ONE_SHOT);
+ return timer;
}
function convertBucketsCharPrefToArray(str) {
return str.split(",")
.map(v => {
let bucket = v.split(":");
return [ bucket[0].trim().toLowerCase(), Number(bucket[1]) ];
});
@@ -987,16 +991,19 @@ Search.prototype = {
* Stop this search.
* After invoking this method, we won't run any more searches or heuristics,
* and no new matches may be added to the current result.
*/
stop() {
// Avoid multiple calls or re-entrance.
if (!this.pending)
return;
+ if (this._notifyTimer)
+ this._notifyTimer.cancel();
+ this._notifyDelaysCount = 0;
if (this._sleepTimer)
this._sleepTimer.cancel();
if (this._sleepResolve) {
this._sleepResolve();
this._sleepResolve = null;
}
if (this._searchSuggestionController) {
this._searchSuggestionController.stop();
@@ -1122,17 +1129,16 @@ Search.prototype = {
searchSuggestionsCompletePromise = this._matchSearchSuggestions(searchString);
if (this.hasBehavior("restrict")) {
// Wait for the suggestions to be added.
await searchSuggestionsCompletePromise;
this._cleanUpNonCurrentMatches(MATCHTYPE.SUGGESTION);
// We're done if we're restricting to search suggestions.
// Notify the result completion then stop the search.
this._autocompleteSearch.finishSearch(true);
- this.stop();
return;
}
}
}
// In any case, clear previous suggestions.
searchSuggestionsCompletePromise.then(() => {
this._cleanUpNonCurrentMatches(MATCHTYPE.SUGGESTION);
});
@@ -1662,19 +1668,18 @@ Search.prototype = {
// Remove previous search matches sooner than the maximum timeout, otherwise
// matches may appear stale for a long time.
// This is necessary because WebExtensions don't have a method to notify
// that they are done providing results, so they could be pending forever.
setTimeout(() => this._cleanUpNonCurrentMatches(MATCHTYPE.EXTENSION), 100);
// Since the extension has no way to signale when it's done pushing
// results, we add a timeout racing with the addition.
- let timeoutPromise = new Promise((resolve, reject) => {
- setTimeout(() => reject(new Error("timeout waiting for the extension to add its results to the location bar")),
- MAXIMUM_ALLOWED_EXTENSION_TIME_MS);
+ let timeoutPromise = new Promise(resolve => {
+ setTimeout(resolve, MAXIMUM_ALLOWED_EXTENSION_TIME_MS);
});
return Promise.race([timeoutPromise, promise]).catch(Cu.reportError);
},
async _matchRemoteTabs() {
let matches = await PlacesRemoteTabsAutocompleteProvider.getMatches(this._originalSearchString);
for (let {url, title, icon, deviceName} of matches) {
// It's rare that Sync supplies the icon for the page (but if it does, it
@@ -1904,17 +1909,17 @@ Search.prototype = {
match.finalCompleteValue);
this._currentMatchCount++;
this._counts[match.type]++;
if (this._currentMatchCount == 1)
TelemetryStopwatch.finish(TELEMETRY_1ST_RESULT, this);
if (this._currentMatchCount == 6)
TelemetryStopwatch.finish(TELEMETRY_6_FIRST_RESULTS, this);
- this.notifyResults(true);
+ this.notifyResult(true, match.type == MATCHTYPE.HEURISTIC);
},
_getInsertIndexForMatch(match) {
let index = 0;
// The buckets change depending on the context, that is currently decided by
// the first added match (the heuristic one).
if (!this._buckets) {
// Convert the buckets to readable objects with a count property.
@@ -2004,17 +2009,17 @@ Search.prototype = {
while (bucket.count > bucket.insertIndex) {
this._result.removeMatchAt(index);
changed = true;
bucket.count--;
}
}
}
if (changed && notify) {
- this.notifyResults(true);
+ this.notifyResult(true);
}
},
/**
* If in restrict mode, cleanups non current matches for all the empty types.
*/
cleanUpRestrictNonCurrentMatches() {
if (this.hasBehavior("restrict") && this._previousSearchMatchTypes.length > 0) {
@@ -2359,34 +2364,57 @@ Search.prototype = {
query_type: QUERYTYPE_AUTOFILL_URL,
searchString,
revHost
});
return query;
},
- /**
- * Notifies the listener about results.
+ // The result is notified to the search listener on a timer, to chunk multiple
+ // match updates together and avoid rebuilding the popup at every new match.
+ _notifyTimer: null,
+
+ /**
+ * Notifies the current result to the listener.
*
* @param searchOngoing
- * Indicates whether the search is ongoing.
+ * Indicates whether the search result should be marked as ongoing.
+ * @param skipDelay
+ * Whether to notify immediately.
*/
- notifyResults(searchOngoing) {
- let result = this._result;
- let resultCode = this._currentMatchCount ? "RESULT_SUCCESS" : "RESULT_NOMATCH";
- if (searchOngoing) {
- resultCode += "_ONGOING";
+ _notifyDelaysCount: 0,
+ notifyResult(searchOngoing, skipDelay = false) {
+ let notify = () => {
+ this._notifyDelaysCount = 0;
+ let resultCode = this._currentMatchCount ? "RESULT_SUCCESS" : "RESULT_NOMATCH";
+ if (searchOngoing) {
+ resultCode += "_ONGOING";
+ }
+ let result = this._result;
+ result.setSearchResult(Ci.nsIAutoCompleteResult[resultCode]);
+ this._listener.onSearchResult(this._autocompleteSearch, result);
+ if (!searchOngoing) {
+ // Break possible cycles.
+ this._listener = null;
+ this._autocompleteSearch = null;
+ this.stop();
+ }
+ };
+ if (this._notifyTimer) {
+ this._notifyTimer.cancel();
}
- result.setSearchResult(Ci.nsIAutoCompleteResult[resultCode]);
- this._listener.onSearchResult(this._autocompleteSearch, result);
- if (!searchOngoing) {
- // Break possible cycles.
- this._listener = null;
- this._autocompleteSearch = null;
+ // In the worst case, we may get evenly spaced matches that would end up
+ // delaying the UI by N_MATCHES * NOTIFYRESULT_DELAY_MS. Thus, we clamp the
+ // number of times we may delay matches.
+ if (skipDelay || this._notifyDelaysCount > 3) {
+ notify();
+ } else {
+ this._notifyDelaysCount++;
+ this._notifyTimer = setTimeout(notify, NOTIFYRESULT_DELAY_MS);
}
},
};
// UnifiedComplete class
// component @mozilla.org/autocomplete/search;1?name=unifiedcomplete
function UnifiedComplete() {
@@ -2574,32 +2602,31 @@ UnifiedComplete.prototype = {
let search = this._currentSearch;
if (!search)
return;
this._lastLowResultsSearchSuggestion = search._lastLowResultsSearchSuggestion;
if (!notify || !search.pending)
return;
-
// If we are in restrict mode and we reused the previous search results,
// it's possible we didn't go through all the cleanup methods due to early
// bailouts. Thus we could still have nonmatching results to remove.
search.cleanUpRestrictNonCurrentMatches();
// There is a possible race condition here.
// When a search completes it calls finishSearch that notifies results
// here. When the controller gets the last result it fires
// onSearchComplete.
// If onSearchComplete immediately starts a new search it will set a new
// _currentSearch, and on return the execution will continue here, after
- // notifyResults.
- // Thus, ensure that notifyResults is the last call in this method,
+ // notifyResult.
+ // Thus, ensure that notifyResult is the last call in this method,
// otherwise you might be touching the wrong search.
- search.notifyResults(false);
+ search.notifyResult(false);
},
// nsIAutoCompleteSearchDescriptor
get searchType() {
return Ci.nsIAutoCompleteSearchDescriptor.SEARCH_TYPE_IMMEDIATE;
},
--- a/toolkit/components/places/tests/bookmarks/test_395593.js
+++ b/toolkit/components/places/tests/bookmarks/test_395593.js
@@ -1,69 +1,76 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
-var bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
- getService(Ci.nsINavBookmarksService);
-var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
- getService(Ci.nsINavHistoryService);
-
-function check_queries_results(aQueries, aOptions, aExpectedItemIds) {
- var result = hs.executeQueries(aQueries, aQueries.length, aOptions);
+function check_queries_results(aQueries, aOptions, aExpectedBookmarks) {
+ var result = PlacesUtils.history.executeQueries(aQueries, aQueries.length, aOptions);
var root = result.root;
root.containerOpen = true;
// Dump found nodes.
for (let i = 0; i < root.childCount; i++) {
dump("nodes[" + i + "]: " + root.getChild(0).title + "\n");
}
- do_check_eq(root.childCount, aExpectedItemIds.length);
+ do_check_eq(root.childCount, aExpectedBookmarks.length);
for (let i = 0; i < root.childCount; i++) {
- do_check_eq(root.getChild(i).itemId, aExpectedItemIds[i]);
+ do_check_eq(root.getChild(i).bookmarkGuid, aExpectedBookmarks[i].guid);
}
root.containerOpen = false;
}
// main
-function run_test() {
- var id1 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"),
- bs.DEFAULT_INDEX, "123 0");
- var id2 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"),
- bs.DEFAULT_INDEX, "456");
- var id3 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"),
- bs.DEFAULT_INDEX, "123 456");
- var id4 = bs.insertBookmark(bs.bookmarksMenuFolder, uri("http://foo.tld"),
- bs.DEFAULT_INDEX, "789 456");
+add_task(async function run_test() {
+ let bookmarks = await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.menuGuid,
+ children: [{
+ title: "123 0",
+ url: "http://foo.tld",
+ }, {
+ title: "456",
+ url: "http://foo.tld",
+ }, {
+ title: "123 456",
+ url: "http://foo.tld",
+ }, {
+ title: "789 456",
+ url: "http://foo.tld",
+ }]
+ });
/**
* All of the query objects are ORed together. Within a query, all the terms
* are ANDed together. See nsINavHistory.idl.
*/
var queries = [];
- queries.push(hs.getNewQuery());
- queries.push(hs.getNewQuery());
- var options = hs.getNewQueryOptions();
+ queries.push(PlacesUtils.history.getNewQuery());
+ queries.push(PlacesUtils.history.getNewQuery());
+ var options = PlacesUtils.history.getNewQueryOptions();
options.queryType = Ci.nsINavHistoryQueryOptions.QUERY_TYPE_BOOKMARKS;
// Test 1
dump("Test searching for 123 OR 789\n");
queries[0].searchTerms = "123";
queries[1].searchTerms = "789";
- check_queries_results(queries, options, [id1, id3, id4]);
+ check_queries_results(queries, options, [
+ bookmarks[0],
+ bookmarks[2],
+ bookmarks[3]
+ ]);
// Test 2
dump("Test searching for 123 OR 456\n");
queries[0].searchTerms = "123";
queries[1].searchTerms = "456";
- check_queries_results(queries, options, [id1, id2, id3, id4]);
+ check_queries_results(queries, options, bookmarks);
// Test 3
dump("Test searching for 00 OR 789\n");
queries[0].searchTerms = "00";
queries[1].searchTerms = "789";
- check_queries_results(queries, options, [id4]);
-}
+ check_queries_results(queries, options, [bookmarks[3]]);
+});
--- a/toolkit/components/places/tests/bookmarks/test_448584.js
+++ b/toolkit/components/places/tests/bookmarks/test_448584.js
@@ -1,108 +1,89 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
-var tests = [];
-
// Get database connection
try {
var mDBConn = PlacesUtils.history.QueryInterface(Ci.nsPIPlacesDatabase)
.DBConnection;
} catch (ex) {
do_throw("Could not get database connection\n");
}
/*
This test is:
- don't try to add invalid uri nodes to a JSON backup
*/
-var invalidURITest = {
- _itemTitle: "invalid uri",
- _itemUrl: "http://test.mozilla.org/",
- _itemId: null,
+const ITEM_TITLE = "invalid uri";
+const ITEM_URL = "http://test.mozilla.org";
- populate() {
- // add a valid bookmark
- PlacesUtils.bookmarks.insertBookmark(PlacesUtils.toolbarFolderId,
- PlacesUtils._uri(this._itemUrl),
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- this._itemTitle);
- // this bookmark will go corrupt
- this._itemId =
- PlacesUtils.bookmarks.insertBookmark(PlacesUtils.toolbarFolderId,
- PlacesUtils._uri(this._itemUrl),
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- this._itemTitle);
- },
+function validateResults(expectedValidItemsCount) {
+ var query = PlacesUtils.history.getNewQuery();
+ query.setFolders([PlacesUtils.bookmarks.toolbarFolder], 1);
+ var options = PlacesUtils.history.getNewQueryOptions();
+ var result = PlacesUtils.history.executeQuery(query, options);
- clean() {
- PlacesUtils.bookmarks.removeItem(this._itemId);
- },
+ var toolbar = result.root;
+ toolbar.containerOpen = true;
- validate(aExpectValidItemsCount) {
- var query = PlacesUtils.history.getNewQuery();
- query.setFolders([PlacesUtils.bookmarks.toolbarFolder], 1);
- var options = PlacesUtils.history.getNewQueryOptions();
- var result = PlacesUtils.history.executeQuery(query, options);
-
- var toolbar = result.root;
- toolbar.containerOpen = true;
+ // test for our bookmark
+ do_check_eq(toolbar.childCount, expectedValidItemsCount);
+ for (var i = 0; i < toolbar.childCount; i++) {
+ var folderNode = toolbar.getChild(0);
+ do_check_eq(folderNode.type, folderNode.RESULT_TYPE_URI);
+ do_check_eq(folderNode.title, ITEM_TITLE);
+ }
- // test for our bookmark
- do_check_eq(toolbar.childCount, aExpectValidItemsCount);
- for (var i = 0; i < toolbar.childCount; i++) {
- var folderNode = toolbar.getChild(0);
- do_check_eq(folderNode.type, folderNode.RESULT_TYPE_URI);
- do_check_eq(folderNode.title, this._itemTitle);
- }
-
- // clean up
- toolbar.containerOpen = false;
- }
-};
-tests.push(invalidURITest);
+ // clean up
+ toolbar.containerOpen = false;
+}
add_task(async function() {
// make json file
let jsonFile = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.json");
// populate db
- tests.forEach(function(aTest) {
- aTest.populate();
- // sanity
- aTest.validate(2);
- // Something in the code went wrong and we finish up losing the place, so
- // the bookmark uri becomes null.
- var sql = "UPDATE moz_bookmarks SET fk = 1337 WHERE id = ?1";
- var stmt = mDBConn.createStatement(sql);
- stmt.bindByIndex(0, aTest._itemId);
- try {
- stmt.execute();
- } finally {
- stmt.finalize();
- }
+ // add a valid bookmark
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ title: ITEM_TITLE,
+ url: ITEM_URL,
+ });
+
+ let badBookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ title: ITEM_TITLE,
+ url: ITEM_URL,
});
+ // sanity
+ validateResults(2);
+ // Something in the code went wrong and we finish up losing the place, so
+ // the bookmark uri becomes null.
+ var sql = "UPDATE moz_bookmarks SET fk = 1337 WHERE guid = ?1";
+ var stmt = mDBConn.createStatement(sql);
+ stmt.bindByIndex(0, badBookmark.guid);
+ try {
+ stmt.execute();
+ } finally {
+ stmt.finalize();
+ }
await BookmarkJSONUtils.exportToFile(jsonFile);
// clean
- tests.forEach(function(aTest) {
- aTest.clean();
- });
+ await PlacesUtils.bookmarks.remove(badBookmark);
// restore json file
try {
await BookmarkJSONUtils.importFromFile(jsonFile, true);
} catch (ex) { do_throw("couldn't import the exported file: " + ex); }
// validate
- tests.forEach(function(aTest) {
- aTest.validate(1);
- });
+ validateResults(1);
// clean up
await OS.File.remove(jsonFile);
});
--- a/toolkit/components/places/tests/bookmarks/test_458683.js
+++ b/toolkit/components/places/tests/bookmarks/test_458683.js
@@ -1,118 +1,98 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
-var tests = [];
-
/*
This test is:
- don't block while doing backup and restore if tag containers contain
bogus items (separators, folders)
*/
-var invalidTagChildTest = {
- _itemTitle: "invalid uri",
- _itemUrl: "http://test.mozilla.org/",
- _itemId: -1,
- _tag: "testTag",
- _tagItemId: -1,
-
- populate() {
- // add a valid bookmark
- this._itemId = PlacesUtils.bookmarks
- .insertBookmark(PlacesUtils.toolbarFolderId,
- PlacesUtils._uri(this._itemUrl),
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- this._itemTitle);
+const ITEM_TITLE = "invalid uri";
+const ITEM_URL = "http://test.mozilla.org/";
+const TAG_NAME = "testTag";
- // create a tag
- PlacesUtils.tagging.tagURI(PlacesUtils._uri(this._itemUrl), [this._tag]);
- // get tag folder id
- var options = PlacesUtils.history.getNewQueryOptions();
- var query = PlacesUtils.history.getNewQuery();
- query.setFolders([PlacesUtils.bookmarks.tagsFolder], 1);
- var result = PlacesUtils.history.executeQuery(query, options);
- var tagRoot = result.root;
- tagRoot.containerOpen = true;
- do_check_eq(tagRoot.childCount, 1);
- var tagNode = tagRoot.getChild(0)
- .QueryInterface(Ci.nsINavHistoryContainerResultNode);
- this._tagItemId = tagNode.itemId;
- tagRoot.containerOpen = false;
+function validateResults() {
+ var query = PlacesUtils.history.getNewQuery();
+ query.setFolders([PlacesUtils.bookmarks.toolbarFolder], 1);
+ var options = PlacesUtils.history.getNewQueryOptions();
+ var result = PlacesUtils.history.executeQuery(query, options);
- // add a separator and a folder inside tag folder
- PlacesUtils.bookmarks.insertSeparator(this._tagItemId,
- PlacesUtils.bookmarks.DEFAULT_INDEX);
- PlacesUtils.bookmarks.createFolder(this._tagItemId,
- "test folder",
- PlacesUtils.bookmarks.DEFAULT_INDEX);
+ var toolbar = result.root;
+ toolbar.containerOpen = true;
- // add a separator and a folder inside tag root
- PlacesUtils.bookmarks.insertSeparator(PlacesUtils.bookmarks.tagsFolder,
- PlacesUtils.bookmarks.DEFAULT_INDEX);
- PlacesUtils.bookmarks.createFolder(PlacesUtils.bookmarks.tagsFolder,
- "test tags root folder",
- PlacesUtils.bookmarks.DEFAULT_INDEX);
- },
-
- clean() {
- PlacesUtils.tagging.untagURI(PlacesUtils._uri(this._itemUrl), [this._tag]);
- PlacesUtils.bookmarks.removeItem(this._itemId);
- },
-
- validate() {
- var query = PlacesUtils.history.getNewQuery();
- query.setFolders([PlacesUtils.bookmarks.toolbarFolder], 1);
- var options = PlacesUtils.history.getNewQueryOptions();
- var result = PlacesUtils.history.executeQuery(query, options);
+ // test for our bookmark
+ do_check_eq(toolbar.childCount, 1);
+ for (var i = 0; i < toolbar.childCount; i++) {
+ var folderNode = toolbar.getChild(0);
+ do_check_eq(folderNode.type, folderNode.RESULT_TYPE_URI);
+ do_check_eq(folderNode.title, ITEM_TITLE);
+ }
+ toolbar.containerOpen = false;
- var toolbar = result.root;
- toolbar.containerOpen = true;
-
- // test for our bookmark
- do_check_eq(toolbar.childCount, 1);
- for (var i = 0; i < toolbar.childCount; i++) {
- var folderNode = toolbar.getChild(0);
- do_check_eq(folderNode.type, folderNode.RESULT_TYPE_URI);
- do_check_eq(folderNode.title, this._itemTitle);
- }
- toolbar.containerOpen = false;
-
- // test for our tag
- var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(this._itemUrl));
- do_check_eq(tags.length, 1);
- do_check_eq(tags[0], this._tag);
- }
-};
-tests.push(invalidTagChildTest);
+ // test for our tag
+ var tags = PlacesUtils.tagging.getTagsForURI(PlacesUtils._uri(ITEM_URL));
+ do_check_eq(tags.length, 1);
+ do_check_eq(tags[0], TAG_NAME);
+}
add_task(async function() {
let jsonFile = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.json");
- // populate db
- tests.forEach(function(aTest) {
- aTest.populate();
- // sanity
- aTest.validate();
+ // add a valid bookmark
+ let item = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.toolbarGuid,
+ title: ITEM_TITLE,
+ url: ITEM_URL,
});
+ // create a tag
+ PlacesUtils.tagging.tagURI(PlacesUtils._uri(ITEM_URL), [TAG_NAME]);
+ // get tag folder id
+ var options = PlacesUtils.history.getNewQueryOptions();
+ var query = PlacesUtils.history.getNewQuery();
+ query.setFolders([PlacesUtils.bookmarks.tagsFolder], 1);
+ var result = PlacesUtils.history.executeQuery(query, options);
+ var tagRoot = result.root;
+ tagRoot.containerOpen = true;
+ do_check_eq(tagRoot.childCount, 1);
+ var tagNode = tagRoot.getChild(0)
+ .QueryInterface(Ci.nsINavHistoryContainerResultNode);
+ let tagItemId = tagNode.itemId;
+ tagRoot.containerOpen = false;
+
+ // Currently these use the old API as the new API doesn't support inserting
+ // invalid items into the tag folder.
+
+ // add a separator and a folder inside tag folder
+ PlacesUtils.bookmarks.insertSeparator(tagItemId,
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
+ PlacesUtils.bookmarks.createFolder(tagItemId,
+ "test folder",
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
+
+ // add a separator and a folder inside tag root
+ PlacesUtils.bookmarks.insertSeparator(PlacesUtils.bookmarks.tagsFolder,
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
+ PlacesUtils.bookmarks.createFolder(PlacesUtils.bookmarks.tagsFolder,
+ "test tags root folder",
+ PlacesUtils.bookmarks.DEFAULT_INDEX);
+ // sanity
+ validateResults();
+
await BookmarkJSONUtils.exportToFile(jsonFile);
// clean
- tests.forEach(function(aTest) {
- aTest.clean();
- });
+ PlacesUtils.tagging.untagURI(PlacesUtils._uri(ITEM_URL), [TAG_NAME]);
+ await PlacesUtils.bookmarks.remove(item);
// restore json file
await BookmarkJSONUtils.importFromFile(jsonFile, true);
- // validate
- tests.forEach(function(aTest) {
- aTest.validate();
- });
+ validateResults();
// clean up
await OS.File.remove(jsonFile);
});
--- a/toolkit/components/places/tests/bookmarks/test_818584-discard-duplicate-backups.js
+++ b/toolkit/components/places/tests/bookmarks/test_818584-discard-duplicate-backups.js
@@ -29,27 +29,29 @@ add_task(async function() {
do_check_eq(backupFiles.length, 1);
let matches = OS.Path.basename(backupFiles[0]).match(PlacesBackups.filenamesRegex);
do_check_eq(matches[1], PlacesBackups.toISODateString(new Date()));
do_check_eq(matches[2], count);
do_check_eq(matches[3], hash);
// Add a bookmark and create another backup.
- let bookmarkId = PlacesUtils.bookmarks.insertBookmark(PlacesUtils.bookmarks.bookmarksMenuFolder,
- uri("http://foo.com"),
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- "foo");
+ let bookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.menuGuid,
+ title: "foo",
+ url: "http://foo.com",
+ });
+
// We must enforce a backup since one for today already exists. The forced
// backup will replace the existing one.
await PlacesBackups.create(undefined, true);
do_check_eq(backupFiles.length, 1);
let recentBackup = await PlacesBackups.getMostRecentBackup();
do_check_neq(recentBackup, OS.Path.join(backupFolder, oldBackupName));
matches = OS.Path.basename(recentBackup).match(PlacesBackups.filenamesRegex);
do_check_eq(matches[1], PlacesBackups.toISODateString(new Date()));
do_check_eq(matches[2], count + 1);
do_check_neq(matches[3], hash);
// Clean up
- PlacesUtils.bookmarks.removeItem(bookmarkId);
+ await PlacesUtils.bookmarks.remove(bookmark);
await PlacesBackups.create(0);
});
--- a/toolkit/components/places/tests/bookmarks/test_818587_compress-bookmarks-backups.js
+++ b/toolkit/components/places/tests/bookmarks/test_818587_compress-bookmarks-backups.js
@@ -25,29 +25,30 @@ add_task(async function compress_bookmar
// Check that, if the user created a custom backup out of the default
// backups folder, it gets copied (compressed) into it.
let jsonFile = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.json");
await PlacesBackups.saveBookmarksToJSONFile(jsonFile);
do_check_eq((await PlacesBackups.getBackupFiles()).length, 1);
// Check if import works from lz4 compressed json
- let uri = NetUtil.newURI("http://www.mozilla.org/en-US/");
- let bm = PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId,
- uri,
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- "bookmark");
+ let url = "http://www.mozilla.org/en-US/"
+ let bm = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ title: "bookmark",
+ url,
+ });
// Force create a compressed backup, Remove the bookmark, the restore the backup
await PlacesBackups.create(undefined, true);
let recentBackup = await PlacesBackups.getMostRecentBackup();
- PlacesUtils.bookmarks.removeItem(bm);
+ await PlacesUtils.bookmarks.remove(bm);
await BookmarkJSONUtils.importFromFile(recentBackup, true);
let root = PlacesUtils.getFolderContents(PlacesUtils.unfiledBookmarksFolderId).root;
let node = root.getChild(0);
- do_check_eq(node.uri, uri.spec);
+ do_check_eq(node.uri, url);
root.containerOpen = false;
PlacesUtils.bookmarks.removeFolderChildren(PlacesUtils.unfiledBookmarksFolderId);
// Cleanup.
await OS.File.remove(jsonFile);
});
--- a/toolkit/components/places/tests/bookmarks/test_818593-store-backup-metadata.js
+++ b/toolkit/components/places/tests/bookmarks/test_818593-store-backup-metadata.js
@@ -3,21 +3,21 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* To confirm that metadata i.e. bookmark count is set and retrieved for
* automatic backups.
*/
add_task(async function test_saveBookmarksToJSONFile_and_create() {
// Add a bookmark
- let uri = NetUtil.newURI("http://getfirefox.com/");
- let bookmarkId =
- PlacesUtils.bookmarks.insertBookmark(
- PlacesUtils.unfiledBookmarksFolderId, uri,
- PlacesUtils.bookmarks.DEFAULT_INDEX, "Get Firefox!");
+ let bookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ title: "Get Firefox!",
+ url: "http://getfirefox.com/"
+ });
// Test saveBookmarksToJSONFile()
let backupFile = FileUtils.getFile("TmpD", ["bookmarks.json"]);
backupFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, parseInt("0600", 8));
let nodeCount = await PlacesBackups.saveBookmarksToJSONFile(backupFile, true);
do_check_true(nodeCount > 0);
do_check_true(backupFile.exists());
@@ -42,10 +42,10 @@ add_task(async function test_saveBookmar
do_check_neq(mostRecentBackupFile, null);
matches = OS.Path.basename(recentBackup).match(PlacesBackups.filenamesRegex);
do_check_eq(matches[2], nodeCount);
do_check_eq(matches[3].length, 24);
// Cleanup
backupFile.remove(false);
await PlacesBackups.create(0);
- PlacesUtils.bookmarks.removeItem(bookmarkId);
+ await PlacesUtils.bookmarks.remove(bookmark);
});
--- a/toolkit/components/places/tests/bookmarks/test_992901-backup-unsorted-hierarchy.js
+++ b/toolkit/components/places/tests/bookmarks/test_992901-backup-unsorted-hierarchy.js
@@ -3,42 +3,54 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* Checks that backups properly include all of the bookmarks if the hierarchy
* in the database is unordered so that a hierarchy is defined before its
* ancestor in the bookmarks table.
*/
add_task(async function() {
- let bm = PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId,
- NetUtil.newURI("http://mozilla.org/"),
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- "bookmark");
- let f2 = PlacesUtils.bookmarks.createFolder(PlacesUtils.unfiledBookmarksFolderId, "f2",
- PlacesUtils.bookmarks.DEFAULT_INDEX);
- PlacesUtils.bookmarks.moveItem(bm, f2, PlacesUtils.bookmarks.DEFAULT_INDEX);
- let f1 = PlacesUtils.bookmarks.createFolder(PlacesUtils.unfiledBookmarksFolderId, "f1",
- PlacesUtils.bookmarks.DEFAULT_INDEX);
- PlacesUtils.bookmarks.moveItem(f2, f1, PlacesUtils.bookmarks.DEFAULT_INDEX);
+ let bms = await PlacesUtils.bookmarks.insertTree({
+ guid: PlacesUtils.bookmarks.unfiledGuid,
+ children: [{
+ title: "bookmark",
+ url: "http://mozilla.org",
+ }, {
+ title: "f2",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ }, {
+ title: "f1",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ }]
+ });
+
+ let bookmark = bms[0];
+ let folder2 = bms[1];
+ let folder1 = bms[2];
+ bookmark.parentGuid = folder2.guid;
+ await PlacesUtils.bookmarks.update(bookmark);
+
+ folder2.parentGuid = folder1.guid;
+ await PlacesUtils.bookmarks.update(folder2);
// Create a backup.
await PlacesBackups.create();
// Remove the bookmarks, then restore the backup.
- PlacesUtils.bookmarks.removeItem(f1);
+ await PlacesUtils.bookmarks.remove(folder1);
await BookmarkJSONUtils.importFromFile((await PlacesBackups.getMostRecentBackup()), true);
do_print("Checking first level");
let root = PlacesUtils.getFolderContents(PlacesUtils.unfiledBookmarksFolderId).root;
let level1 = root.getChild(0);
do_check_eq(level1.title, "f1");
do_print("Checking second level");
PlacesUtils.asContainer(level1).containerOpen = true;
let level2 = level1.getChild(0);
do_check_eq(level2.title, "f2");
do_print("Checking bookmark");
PlacesUtils.asContainer(level2).containerOpen = true;
- let bookmark = level2.getChild(0);
+ bookmark = level2.getChild(0);
do_check_eq(bookmark.title, "bookmark");
level2.containerOpen = false;
level1.containerOpen = false;
root.containerOpen = false;
});
--- a/toolkit/components/places/tests/bookmarks/test_997030-bookmarks-html-encode.js
+++ b/toolkit/components/places/tests/bookmarks/test_997030-bookmarks-html-encode.js
@@ -1,32 +1,33 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
/**
* Checks that we don't encodeURI twice when creating bookmarks.html.
*/
add_task(async function() {
- let uri = NetUtil.newURI("http://bt.ktxp.com/search.php?keyword=%E5%A6%84%E6%83%B3%E5%AD%A6%E7%94%9F%E4%BC%9A");
- let bm = PlacesUtils.bookmarks.insertBookmark(PlacesUtils.unfiledBookmarksFolderId,
- uri,
- PlacesUtils.bookmarks.DEFAULT_INDEX,
- "bookmark");
+ let url = "http://bt.ktxp.com/search.php?keyword=%E5%A6%84%E6%83%B3%E5%AD%A6%E7%94%9F%E4%BC%9A";
+ let bm = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ title: "bookmark",
+ url,
+ });
- let file = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.exported.997030.html");
+ let file = OS.Path.join(OS.Constants.Path.profileDir, "bookmarks.exported.997030.html");
if ((await OS.File.exists(file))) {
await OS.File.remove(file);
}
await BookmarkHTMLUtils.exportToFile(file);
// Remove the bookmarks, then restore the backup.
- PlacesUtils.bookmarks.removeItem(bm);
+ await PlacesUtils.bookmarks.remove(bm);
await BookmarkHTMLUtils.importFromFile(file, true);
do_print("Checking first level");
let root = PlacesUtils.getFolderContents(PlacesUtils.unfiledBookmarksFolderId).root;
let node = root.getChild(0);
- do_check_eq(node.uri, uri.spec);
+ do_check_eq(node.uri, url);
root.containerOpen = false;
- PlacesUtils.bookmarks.removeFolderChildren(PlacesUtils.unfiledBookmarksFolderId);
+ await PlacesUtils.bookmarks.eraseEverything();
});
--- a/toolkit/components/places/tests/bookmarks/test_savedsearches.js
+++ b/toolkit/components/places/tests/bookmarks/test_savedsearches.js
@@ -1,51 +1,54 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
-// get bookmarks root id
-var root = PlacesUtils.bookmarksMenuFolderId;
-
// a search term that matches a default bookmark
const searchTerm = "about";
var testRoot;
+var testRootId;
-// main
-function run_test() {
+add_task(async function setup() {
// create a folder to hold all the tests
// this makes the tests more tolerant of changes to the default bookmarks set
// also, name it using the search term, for testing that containers that match don't show up in query results
- testRoot = PlacesUtils.bookmarks.createFolder(
- root, searchTerm, PlacesUtils.bookmarks.DEFAULT_INDEX);
-
- run_next_test();
-}
+ testRoot = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.menuGuid,
+ title: searchTerm,
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ });
+ testRootId = await PlacesUtils.promiseItemId(testRoot.guid);
+});
-add_test(function test_savedsearches_bookmarks() {
+add_task(async function test_savedsearches_bookmarks() {
// add a bookmark that matches the search term
- var bookmarkId = PlacesUtils.bookmarks.insertBookmark(
- root, uri("http://foo.com"), PlacesUtils.bookmarks.DEFAULT_INDEX,
- searchTerm);
+ let bookmark = await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.menuGuid,
+ title: searchTerm,
+ url: "http://foo.com",
+ });
// create a saved-search that matches a default bookmark
- var searchId = PlacesUtils.bookmarks.insertBookmark(
- testRoot, uri("place:terms=" + searchTerm + "&excludeQueries=1&expandQueries=1&queryType=1"),
- PlacesUtils.bookmarks.DEFAULT_INDEX, searchTerm);
+ let search = await PlacesUtils.bookmarks.insert({
+ parentGuid: testRoot.guid,
+ title: searchTerm,
+ url: "place:terms=" + searchTerm + "&excludeQueries=1&expandQueries=1&queryType=1",
+ });
// query for the test root, expandQueries=0
// the query should show up as a regular bookmark
try {
let options = PlacesUtils.history.getNewQueryOptions();
options.expandQueries = 0;
let query = PlacesUtils.history.getNewQuery();
- query.setFolders([testRoot], 1);
+ query.setFolders([testRootId], 1);
let result = PlacesUtils.history.executeQuery(query, options);
let rootNode = result.root;
rootNode.containerOpen = true;
let cc = rootNode.childCount;
do_check_eq(cc, 1);
for (let i = 0; i < cc; i++) {
let node = rootNode.getChild(i);
// test that queries have valid itemId
@@ -61,17 +64,17 @@ add_test(function test_savedsearches_boo
// bookmark saved search
// query for the test root, expandQueries=1
// the query should show up as a query container, with 1 child
try {
let options = PlacesUtils.history.getNewQueryOptions();
options.expandQueries = 1;
let query = PlacesUtils.history.getNewQuery();
- query.setFolders([testRoot], 1);
+ query.setFolders([testRootId], 1);
let result = PlacesUtils.history.executeQuery(query, options);
let rootNode = result.root;
rootNode.containerOpen = true;
let cc = rootNode.childCount;
do_check_eq(cc, 1);
for (let i = 0; i < cc; i++) {
let node = rootNode.getChild(i);
// test that query node type is container when expandQueries=1
@@ -83,77 +86,82 @@ add_test(function test_savedsearches_boo
// test that queries have children when excludeItems=1
// test that query nodes don't show containers (shouldn't have our folder that matches)
// test that queries don't show themselves in query results (shouldn't have our saved search)
do_check_eq(node.childCount, 1);
// test that bookmark shows in query results
var item = node.getChild(0);
- do_check_eq(item.itemId, bookmarkId);
+ do_check_eq(item.bookmarkGuid, bookmark.guid);
// XXX - FAILING - test live-update of query results - add a bookmark that matches the query
// var tmpBmId = PlacesUtils.bookmarks.insertBookmark(
// root, uri("http://" + searchTerm + ".com"),
// PlacesUtils.bookmarks.DEFAULT_INDEX, searchTerm + "blah");
// do_check_eq(query.childCount, 2);
// XXX - test live-update of query results - delete a bookmark that matches the query
// PlacesUtils.bookmarks.removeItem(tmpBMId);
// do_check_eq(query.childCount, 1);
// test live-update of query results - add a folder that matches the query
- PlacesUtils.bookmarks.createFolder(
- root, searchTerm + "zaa", PlacesUtils.bookmarks.DEFAULT_INDEX);
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.menuGuid,
+ title: searchTerm + "zaa",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ });
do_check_eq(node.childCount, 1);
// test live-update of query results - add a query that matches the query
- PlacesUtils.bookmarks.insertBookmark(
- root, uri("place:terms=foo&excludeQueries=1&expandQueries=1&queryType=1"),
- PlacesUtils.bookmarks.DEFAULT_INDEX, searchTerm + "blah");
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.menuGuid,
+ title: searchTerm + "blah",
+ url: "place:terms=foo&excludeQueries=1&expandQueries=1&queryType=1",
+ });
do_check_eq(node.childCount, 1);
}
rootNode.containerOpen = false;
} catch (ex) {
do_throw("expandQueries=1 bookmarks query: " + ex);
}
// delete the bookmark search
- PlacesUtils.bookmarks.removeItem(searchId);
-
- run_next_test();
+ await PlacesUtils.bookmarks.remove(search);
});
add_task(async function test_savedsearches_history() {
// add a visit that matches the search term
var testURI = uri("http://" + searchTerm + ".com");
await PlacesTestUtils.addVisits({ uri: testURI, title: searchTerm });
// create a saved-search that matches the visit we added
- var searchId = PlacesUtils.bookmarks.insertBookmark(testRoot,
- uri("place:terms=" + searchTerm + "&excludeQueries=1&expandQueries=1&queryType=0"),
- PlacesUtils.bookmarks.DEFAULT_INDEX, searchTerm);
+ var searchItem = await PlacesUtils.bookmarks.insert({
+ parentGuid: testRoot.guid,
+ title: searchTerm,
+ url: "place:terms=" + searchTerm + "&excludeQueries=1&expandQueries=1&queryType=0",
+ });
// query for the test root, expandQueries=1
// the query should show up as a query container, with 1 child
try {
var options = PlacesUtils.history.getNewQueryOptions();
options.expandQueries = 1;
var query = PlacesUtils.history.getNewQuery();
- query.setFolders([testRoot], 1);
+ query.setFolders([testRootId], 1);
var result = PlacesUtils.history.executeQuery(query, options);
var rootNode = result.root;
rootNode.containerOpen = true;
var cc = rootNode.childCount;
do_check_eq(cc, 1);
for (var i = 0; i < cc; i++) {
var node = rootNode.getChild(i);
// test that query node type is container when expandQueries=1
do_check_eq(node.type, node.RESULT_TYPE_QUERY);
// test that queries (as containers) have valid itemId
- do_check_eq(node.itemId, searchId);
+ do_check_eq(node.bookmarkGuid, searchItem.guid);
node.QueryInterface(Ci.nsINavHistoryContainerResultNode);
node.containerOpen = true;
// test that queries have children when excludeItems=1
// test that query nodes don't show containers (shouldn't have our folder that matches)
// test that queries don't show themselves in query results (shouldn't have our saved search)
do_check_eq(node.childCount, 1);
@@ -172,35 +180,38 @@ add_task(async function test_savedsearch
// test live-update of query results - delete a history visit that matches the query
await PlacesUtils.history.remove("http://foo.com");
do_check_eq(node.childCount, 1);
node.containerOpen = false;
}
// test live-update of moved queries
- var tmpFolderId = PlacesUtils.bookmarks.createFolder(
- testRoot, "foo", PlacesUtils.bookmarks.DEFAULT_INDEX);
- PlacesUtils.bookmarks.moveItem(
- searchId, tmpFolderId, PlacesUtils.bookmarks.DEFAULT_INDEX);
+ let tmpFolder = await PlacesUtils.bookmarks.insert({
+ parentGuid: testRoot.guid,
+ title: "foo",
+ type: PlacesUtils.bookmarks.TYPE_FOLDER,
+ });
+
+ searchItem.parentGuid = tmpFolder.guid;
+ await PlacesUtils.bookmarks.update(searchItem);
var tmpFolderNode = rootNode.getChild(0);
- do_check_eq(tmpFolderNode.itemId, tmpFolderId);
+ do_check_eq(tmpFolderNode.bookmarkGuid, tmpFolder.guid);
tmpFolderNode.QueryInterface(Ci.nsINavHistoryContainerResultNode);
tmpFolderNode.containerOpen = true;
do_check_eq(tmpFolderNode.childCount, 1);
// test live-update of renamed queries
- PlacesUtils.bookmarks.setItemTitle(searchId, "foo");
+ searchItem.title = "foo";
+ await PlacesUtils.bookmarks.update(searchItem);
do_check_eq(tmpFolderNode.title, "foo");
// test live-update of deleted queries
- PlacesUtils.bookmarks.removeItem(searchId);
- try {
- tmpFolderNode = root.getChild(1);
- do_throw("query was not removed");
- } catch (ex) {}
+ await PlacesUtils.bookmarks.remove(searchItem);
+ Assert.throws(() => tmpFolderNode = rootNode.getChild(1), /NS_ERROR_ILLEGAL_VALUE/,
+ "getting a deleted child should throw");
tmpFolderNode.containerOpen = false;
rootNode.containerOpen = false;
} catch (ex) {
do_throw("expandQueries=1 bookmarks query: " + ex);
}
});
--- a/toolkit/components/places/tests/unifiedcomplete/test_extension_matches.js
+++ b/toolkit/components/places/tests/unifiedcomplete/test_extension_matches.js
@@ -190,17 +190,20 @@ add_task(async function test_removes_sug
name: extensionName,
emit(message, text, id) {
if (message === ExtensionSearchHandler.MSG_INPUT_CHANGED) {
ExtensionSearchHandler.addSuggestions(keyword, id, [
{content: "foo", description: "first suggestion"},
{content: "bar", description: "second suggestion"},
{content: "baz", description: "third suggestion"},
]);
- controller.stopSearch();
+ // The API doesn't have a way to notify when addition is complete.
+ do_timeout(1000, () => {
+ controller.stopSearch();
+ });
}
}
};
ExtensionSearchHandler.registerKeyword(keyword, mockExtension);
await check_autocomplete({
search: `${keyword} unmatched`,
@@ -297,18 +300,21 @@ add_task(async function test_setting_the
let keyword = "test";
let extensionName = "Omnibox Example";
let mockExtension = {
name: extensionName,
emit(message, text, id) {
if (message === ExtensionSearchHandler.MSG_INPUT_CHANGED) {
ExtensionSearchHandler.addSuggestions(keyword, id, []);
+ // The API doesn't have a way to notify when addition is complete.
+ do_timeout(1000, () => {
+ controller.stopSearch();
+ });
}
- controller.stopSearch();
}
};
ExtensionSearchHandler.registerKeyword(keyword, mockExtension);
ExtensionSearchHandler.setDefaultSuggestion(keyword, {
description: "hello world"
});
@@ -353,17 +359,20 @@ add_task(async function test_maximum_num
{content: "d", description: "fourth suggestion"},
{content: "e", description: "fifth suggestion"},
{content: "f", description: "sixth suggestion"},
{content: "g", description: "seventh suggestion"},
{content: "h", description: "eigth suggestion"},
{content: "i", description: "ninth suggestion"},
{content: "j", description: "tenth suggestion"},
]);
- controller.stopSearch();
+ // The API doesn't have a way to notify when addition is complete.
+ do_timeout(1000, () => {
+ controller.stopSearch();
+ });
}
}
};
ExtensionSearchHandler.registerKeyword(keyword, mockExtension);
// Start an input session before testing MSG_INPUT_CHANGED.
ExtensionSearchHandler.handleSearch(keyword, `${keyword} `, () => {});
--- a/tools/clang-tidy/config.yaml
+++ b/tools/clang-tidy/config.yaml
@@ -5,22 +5,26 @@ target: obj-x86_64-pc-linux-gnu
# All the clang checks used by the static-analysis tools.
clang_checkers:
- name: -*
publish: !!bool no
- name: clang-analyzer-deadcode.DeadStores
publish: !!bool yes
- name: clang-analyzer-security.*
publish: !!bool no
+ - name: misc-argument-comment
+ publish: !!bool yes
- name: misc-assert-side-effect
publish: !!bool yes
- name: misc-suspicious-missing-comma
publish: !!bool yes
- name: misc-suspicious-semicolon
publish: !!bool yes
+ - name: misc-unused-using-decls
+ publish: !!bool yes
- name: modernize-avoid-bind
publish: !!bool yes
- name: modernize-loop-convert
publish: !!bool yes
- name: modernize-raw-string-literal
publish: !!bool yes
- name: modernize-redundant-void-arg
publish: !!bool no