Merge mozilla-central to mozilla-inbound

This commit is contained in:
Carsten "Tomcat" Book 2017-01-09 10:39:03 +01:00
Родитель b68ae46ad6 bb28022e75
Коммит 06c0537572
24 изменённых файлов: 14104 добавлений и 13440 удалений

Просмотреть файл

@ -4,12 +4,50 @@
"use strict"; "use strict";
const { createClass, PropTypes, DOM } = require("devtools/client/shared/vendor/react"); const { createClass, createFactory, PropTypes, DOM } = require("devtools/client/shared/vendor/react");
const { div, span, img } = DOM; const { div, span, img } = DOM;
const { L10N } = require("../l10n"); const { L10N } = require("../l10n");
const { getFormattedSize } = require("../utils/format-utils"); const { getFormattedSize } = require("../utils/format-utils");
const { getAbbreviatedMimeType } = require("../request-utils"); const { getAbbreviatedMimeType } = require("../request-utils");
/**
* Compare two objects on a subset of their properties
*/
function propertiesEqual(props, item1, item2) {
return item1 === item2 || props.every(p => item1[p] === item2[p]);
}
/**
* Used by shouldComponentUpdate: compare two items, and compare only properties
* relevant for rendering the RequestListItem. Other properties (like request and
* response headers, cookies, bodies) are ignored. These are very useful for the
* sidebar details, but not here.
*/
const UPDATED_REQ_ITEM_PROPS = [
"mimeType",
"eventTimings",
"securityState",
"responseContentDataUri",
"status",
"statusText",
"fromCache",
"fromServiceWorker",
"method",
"url",
"remoteAddress",
"cause",
"contentSize",
"transferredSize",
"startedMillis",
"totalTime",
];
const UPDATED_REQ_PROPS = [
"index",
"isSelected",
"firstRequestStartedMillis"
];
/** /**
* Render one row in the request list. * Render one row in the request list.
*/ */
@ -33,10 +71,8 @@ const RequestListItem = createClass({
}, },
shouldComponentUpdate(nextProps) { shouldComponentUpdate(nextProps) {
return !relevantPropsEqual(this.props.item, nextProps.item) return !propertiesEqual(UPDATED_REQ_ITEM_PROPS, this.props.item, nextProps.item) ||
|| this.props.index !== nextProps.index !propertiesEqual(UPDATED_REQ_PROPS, this.props, nextProps);
|| this.props.isSelected !== nextProps.isSelected
|| this.props.firstRequestStartedMillis !== nextProps.firstRequestStartedMillis;
}, },
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
@ -88,151 +124,171 @@ const RequestListItem = createClass({
onContextMenu, onContextMenu,
onMouseDown, onMouseDown,
}, },
StatusColumn(item), StatusColumn({ item }),
MethodColumn(item), MethodColumn({ item }),
FileColumn(item), FileColumn({ item }),
DomainColumn(item, onSecurityIconClick), DomainColumn({ item, onSecurityIconClick }),
CauseColumn(item), CauseColumn({ item }),
TypeColumn(item), TypeColumn({ item }),
TransferredSizeColumn(item), TransferredSizeColumn({ item }),
ContentSizeColumn(item), ContentSizeColumn({ item }),
WaterfallColumn(item, firstRequestStartedMillis) WaterfallColumn({ item, firstRequestStartedMillis })
); );
} }
}); });
/** const UPDATED_STATUS_PROPS = [
* Used by shouldComponentUpdate: compare two items, and compare only properties
* relevant for rendering the RequestListItem. Other properties (like request and
* response headers, cookies, bodies) are ignored. These are very useful for the
* sidebar details, but not here.
*/
const RELEVANT_ITEM_PROPS = [
"status", "status",
"statusText", "statusText",
"fromCache", "fromCache",
"fromServiceWorker", "fromServiceWorker",
"method",
"url",
"responseContentDataUri",
"remoteAddress",
"securityState",
"cause",
"mimeType",
"contentSize",
"transferredSize",
"startedMillis",
"totalTime",
"eventTimings",
]; ];
function relevantPropsEqual(item1, item2) { const StatusColumn = createFactory(createClass({
return item1 === item2 || RELEVANT_ITEM_PROPS.every(p => item1[p] === item2[p]); shouldComponentUpdate(nextProps) {
} return !propertiesEqual(UPDATED_STATUS_PROPS, this.props.item, nextProps.item);
},
function StatusColumn(item) { render() {
const { status, statusText, fromCache, fromServiceWorker } = item; const { status, statusText, fromCache, fromServiceWorker } = this.props.item;
let code, title; let code, title;
if (status) { if (status) {
if (fromCache) {
code = "cached";
} else if (fromServiceWorker) {
code = "service worker";
} else {
code = status;
}
if (statusText) {
title = `${status} ${statusText}`;
if (fromCache) { if (fromCache) {
title += " (cached)"; code = "cached";
} else if (fromServiceWorker) {
code = "service worker";
} else {
code = status;
} }
if (fromServiceWorker) {
title += " (service worker)"; if (statusText) {
title = `${status} ${statusText}`;
if (fromCache) {
title += " (cached)";
}
if (fromServiceWorker) {
title += " (service worker)";
}
} }
} }
return div({ className: "requests-menu-subitem requests-menu-status", title },
div({ className: "requests-menu-status-icon", "data-code": code }),
span({ className: "subitem-label requests-menu-status-code" }, status)
);
} }
}));
return div({ className: "requests-menu-subitem requests-menu-status", title }, const MethodColumn = createFactory(createClass({
div({ className: "requests-menu-status-icon", "data-code": code }), shouldComponentUpdate(nextProps) {
span({ className: "subitem-label requests-menu-status-code" }, status) return this.props.item.method !== nextProps.item.method;
); },
}
function MethodColumn(item) { render() {
const { method } = item; const { method } = this.props.item;
return div({ className: "requests-menu-subitem requests-menu-method-box" }, return div({ className: "requests-menu-subitem requests-menu-method-box" },
span({ className: "subitem-label requests-menu-method" }, method) span({ className: "subitem-label requests-menu-method" }, method)
); );
}
function FileColumn(item) {
const { urlDetails, responseContentDataUri } = item;
return div({ className: "requests-menu-subitem requests-menu-icon-and-file" },
img({
className: "requests-menu-icon",
src: responseContentDataUri,
hidden: !responseContentDataUri,
"data-type": responseContentDataUri ? "thumbnail" : undefined
}),
div(
{
className: "subitem-label requests-menu-file",
title: urlDetails.unicodeUrl
},
urlDetails.baseNameWithQuery
)
);
}
function DomainColumn(item, onSecurityIconClick) {
const { urlDetails, remoteAddress, securityState } = item;
let iconClassList = [ "requests-security-state-icon" ];
let iconTitle;
if (urlDetails.isLocal) {
iconClassList.push("security-state-local");
iconTitle = L10N.getStr("netmonitor.security.state.secure");
} else if (securityState) {
iconClassList.push(`security-state-${securityState}`);
iconTitle = L10N.getStr(`netmonitor.security.state.${securityState}`);
} }
}));
let title = urlDetails.host + (remoteAddress ? ` (${remoteAddress})` : ""); const UPDATED_FILE_PROPS = [
"urlDetails",
"responseContentDataUri",
];
return div( const FileColumn = createFactory(createClass({
{ className: "requests-menu-subitem requests-menu-security-and-domain" }, shouldComponentUpdate(nextProps) {
div({ return !propertiesEqual(UPDATED_FILE_PROPS, this.props.item, nextProps.item);
className: iconClassList.join(" "), },
title: iconTitle,
onClick: onSecurityIconClick,
}),
span({ className: "subitem-label requests-menu-domain", title }, urlDetails.host)
);
}
function CauseColumn(item) { render() {
const { cause } = item; const { urlDetails, responseContentDataUri } = this.props.item;
let causeType = ""; return div({ className: "requests-menu-subitem requests-menu-icon-and-file" },
let causeUri = undefined; img({
let causeHasStack = false; className: "requests-menu-icon",
src: responseContentDataUri,
if (cause) { hidden: !responseContentDataUri,
causeType = cause.type; "data-type": responseContentDataUri ? "thumbnail" : undefined
causeUri = cause.loadingDocumentUri; }),
causeHasStack = cause.stacktrace && cause.stacktrace.length > 0; div(
{
className: "subitem-label requests-menu-file",
title: urlDetails.unicodeUrl
},
urlDetails.baseNameWithQuery
)
);
} }
}));
return div( const UPDATED_DOMAIN_PROPS = [
{ className: "requests-menu-subitem requests-menu-cause", title: causeUri }, "urlDetails",
span({ className: "requests-menu-cause-stack", hidden: !causeHasStack }, "JS"), "remoteAddress",
span({ className: "subitem-label" }, causeType) "securityState",
); ];
}
const DomainColumn = createFactory(createClass({
shouldComponentUpdate(nextProps) {
return !propertiesEqual(UPDATED_DOMAIN_PROPS, this.props.item, nextProps.item);
},
render() {
const { item, onSecurityIconClick } = this.props;
const { urlDetails, remoteAddress, securityState } = item;
let iconClassList = [ "requests-security-state-icon" ];
let iconTitle;
if (urlDetails.isLocal) {
iconClassList.push("security-state-local");
iconTitle = L10N.getStr("netmonitor.security.state.secure");
} else if (securityState) {
iconClassList.push(`security-state-${securityState}`);
iconTitle = L10N.getStr(`netmonitor.security.state.${securityState}`);
}
let title = urlDetails.host + (remoteAddress ? ` (${remoteAddress})` : "");
return div(
{ className: "requests-menu-subitem requests-menu-security-and-domain" },
div({
className: iconClassList.join(" "),
title: iconTitle,
onClick: onSecurityIconClick,
}),
span({ className: "subitem-label requests-menu-domain", title }, urlDetails.host)
);
}
}));
const CauseColumn = createFactory(createClass({
shouldComponentUpdate(nextProps) {
return this.props.item.cause !== nextProps.item.cause;
},
render() {
const { cause } = this.props.item;
let causeType = "";
let causeUri = undefined;
let causeHasStack = false;
if (cause) {
causeType = cause.type;
causeUri = cause.loadingDocumentUri;
causeHasStack = cause.stacktrace && cause.stacktrace.length > 0;
}
return div(
{ className: "requests-menu-subitem requests-menu-cause", title: causeUri },
span({ className: "requests-menu-cause-stack", hidden: !causeHasStack }, "JS"),
span({ className: "subitem-label" }, causeType)
);
}
}));
const CONTENT_MIME_TYPE_ABBREVIATIONS = { const CONTENT_MIME_TYPE_ABBREVIATIONS = {
"ecmascript": "js", "ecmascript": "js",
@ -240,56 +296,110 @@ const CONTENT_MIME_TYPE_ABBREVIATIONS = {
"x-javascript": "js" "x-javascript": "js"
}; };
function TypeColumn(item) { const TypeColumn = createFactory(createClass({
const { mimeType } = item; shouldComponentUpdate(nextProps) {
let abbrevType; return this.props.item.mimeType !== nextProps.item.mimeType;
if (mimeType) { },
abbrevType = getAbbreviatedMimeType(mimeType);
abbrevType = CONTENT_MIME_TYPE_ABBREVIATIONS[abbrevType] || abbrevType; render() {
const { mimeType } = this.props.item;
let abbrevType;
if (mimeType) {
abbrevType = getAbbreviatedMimeType(mimeType);
abbrevType = CONTENT_MIME_TYPE_ABBREVIATIONS[abbrevType] || abbrevType;
}
return div(
{ className: "requests-menu-subitem requests-menu-type", title: mimeType },
span({ className: "subitem-label" }, abbrevType)
);
} }
}));
return div( const UPDATED_TRANSFERRED_PROPS = [
{ className: "requests-menu-subitem requests-menu-type", title: mimeType }, "transferredSize",
span({ className: "subitem-label" }, abbrevType) "fromCache",
); "fromServiceWorker",
} ];
function TransferredSizeColumn(item) { const TransferredSizeColumn = createFactory(createClass({
const { transferredSize, fromCache, fromServiceWorker } = item; shouldComponentUpdate(nextProps) {
return !propertiesEqual(UPDATED_TRANSFERRED_PROPS, this.props.item, nextProps.item);
},
let text; render() {
let className = "subitem-label"; const { transferredSize, fromCache, fromServiceWorker } = this.props.item;
if (fromCache) {
text = L10N.getStr("networkMenu.sizeCached"); let text;
className += " theme-comment"; let className = "subitem-label";
} else if (fromServiceWorker) { if (fromCache) {
text = L10N.getStr("networkMenu.sizeServiceWorker"); text = L10N.getStr("networkMenu.sizeCached");
className += " theme-comment"; className += " theme-comment";
} else if (typeof transferredSize == "number") { } else if (fromServiceWorker) {
text = getFormattedSize(transferredSize); text = L10N.getStr("networkMenu.sizeServiceWorker");
} else if (transferredSize === null) { className += " theme-comment";
text = L10N.getStr("networkMenu.sizeUnavailable"); } else if (typeof transferredSize == "number") {
text = getFormattedSize(transferredSize);
} else if (transferredSize === null) {
text = L10N.getStr("networkMenu.sizeUnavailable");
}
return div(
{ className: "requests-menu-subitem requests-menu-transferred", title: text },
span({ className }, text)
);
} }
}));
return div( const ContentSizeColumn = createFactory(createClass({
{ className: "requests-menu-subitem requests-menu-transferred", title: text }, shouldComponentUpdate(nextProps) {
span({ className }, text) return this.props.item.contentSize !== nextProps.item.contentSize;
); },
}
function ContentSizeColumn(item) { render() {
const { contentSize } = item; const { contentSize } = this.props.item;
let text; let text;
if (typeof contentSize == "number") { if (typeof contentSize == "number") {
text = getFormattedSize(contentSize); text = getFormattedSize(contentSize);
}
return div(
{
className: "requests-menu-subitem subitem-label requests-menu-size",
title: text
},
span({ className: "subitem-label" }, text)
);
} }
}));
return div( const UPDATED_WATERFALL_PROPS = [
{ className: "requests-menu-subitem subitem-label requests-menu-size", title: text }, "eventTimings",
span({ className: "subitem-label" }, text) "totalTime",
); "fromCache",
} "fromServiceWorker",
];
const WaterfallColumn = createFactory(createClass({
shouldComponentUpdate(nextProps) {
return this.props.firstRequestStartedMillis !== nextProps.firstRequestStartedMillis ||
!propertiesEqual(UPDATED_WATERFALL_PROPS, this.props.item, nextProps.item);
},
render() {
const { item, firstRequestStartedMillis } = this.props;
const startedDeltaMillis = item.startedMillis - firstRequestStartedMillis;
const paddingInlineStart = `${startedDeltaMillis}px`;
return div({ className: "requests-menu-subitem requests-menu-waterfall" },
div(
{ className: "requests-menu-timings", style: { paddingInlineStart } },
timingBoxes(item)
)
);
}
}));
// List of properties of the timing info we want to create boxes for // List of properties of the timing info we want to create boxes for
const TIMING_KEYS = ["blocked", "dns", "connect", "send", "wait", "receive"]; const TIMING_KEYS = ["blocked", "dns", "connect", "send", "wait", "receive"];
@ -331,16 +441,4 @@ function timingBoxes(item) {
return boxes; return boxes;
} }
function WaterfallColumn(item, firstRequestStartedMillis) {
const startedDeltaMillis = item.startedMillis - firstRequestStartedMillis;
const paddingInlineStart = `${startedDeltaMillis}px`;
return div({ className: "requests-menu-subitem requests-menu-waterfall" },
div(
{ className: "requests-menu-timings", style: { paddingInlineStart } },
timingBoxes(item)
)
);
}
module.exports = RequestListItem; module.exports = RequestListItem;

Просмотреть файл

@ -0,0 +1,92 @@
/* 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 { createClass, DOM, PropTypes } = require("devtools/client/shared/vendor/react");
const SourceEditor = require("devtools/client/sourceeditor/editor");
const { div } = DOM;
/**
* CodeMirror editor as a React component
*/
const Editor = createClass({
displayName: "Editor",
propTypes: {
open: PropTypes.bool,
text: PropTypes.string,
},
getDefaultProps() {
return {
open: true,
text: "",
};
},
componentDidMount() {
const { text } = this.props;
this.editor = new SourceEditor({
lineNumbers: true,
readOnly: true,
value: text,
});
this.deferEditor = this.editor.appendTo(this.refs.editorElement);
},
componentDidUpdate(prevProps) {
const { mode, open, text } = this.props;
if (!open) {
return;
}
if (prevProps.mode !== mode) {
this.deferEditor.then(() => {
this.editor.setMode(mode);
});
}
if (prevProps.text !== text) {
this.deferEditor.then(() => {
// FIXME: Workaround for browser_net_accessibility test to
// make sure editor node exists while setting editor text.
// deferEditor workround should be removed in bug 1308442
if (this.refs.editor) {
this.editor.setText(text);
}
});
}
},
componentWillUnmount() {
this.deferEditor.then(() => {
this.editor.destroy();
this.editor = null;
});
this.deferEditor = null;
},
render() {
const { open } = this.props;
return (
div({ className: "editor-container devtools-monospace" },
div({
ref: "editorElement",
className: "editor-mount devtools-monospace",
// Using visibility instead of display property to avoid breaking
// CodeMirror indentation
style: { visibility: open ? "visible" : "hidden" },
}),
)
);
}
});
module.exports = Editor;

Просмотреть файл

@ -3,7 +3,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules( DevToolsModules(
'editor.js',
'preview-panel.js', 'preview-panel.js',
'properties-view.js',
'security-panel.js', 'security-panel.js',
'timings-panel.js', 'timings-panel.js',
) )

Просмотреть файл

@ -0,0 +1,162 @@
/* 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 {
createClass,
createFactory,
DOM,
PropTypes,
} = require("devtools/client/shared/vendor/react");
const { createFactories } = require("devtools/client/shared/components/reps/rep-utils");
const { MODE } = require("devtools/client/shared/components/reps/constants");
const { FILTER_SEARCH_DELAY } = require("../../constants");
// Components
const Editor = createFactory(require("devtools/client/netmonitor/shared/components/editor"));
const SearchBox = createFactory(require("devtools/client/shared/components/search-box"));
const TreeView = createFactory(require("devtools/client/shared/components/tree/tree-view"));
const TreeRow = createFactory(require("devtools/client/shared/components/tree/tree-row"));
const { Rep } = createFactories(require("devtools/client/shared/components/reps/rep"));
const { div, tr, td } = DOM;
/*
* Properties View component
* A scrollable tree view component which provides some useful features for
* representing object properties.
*
* Search filter - Set enableFilter to enable / disable SearchBox feature.
* Tree view - Default enabled.
* Source editor - Enable by specifying object level 1 property name to "editorText".
* Rep - Default enabled.
*/
const PropertiesView = createClass({
displayName: "PropertiesView",
propTypes: {
object: PropTypes.object,
enableInput: PropTypes.bool,
expandableStrings: PropTypes.bool,
filterPlaceHolder: PropTypes.string,
sectionNames: PropTypes.array,
},
getDefaultProps() {
return {
enableInput: true,
enableFilter: true,
expandableStrings: false,
filterPlaceHolder: "",
};
},
getInitialState() {
return {
filterText: "",
};
},
getRowClass(object, sectionNames) {
return sectionNames.includes(object.name) ? "tree-section" : "";
},
onFilter(object, whiteList) {
let { name, value } = object;
let filterText = this.state.filterText;
if (!filterText || whiteList.includes(name)) {
return true;
}
let jsonString = JSON.stringify({ [name]: value }).toLowerCase();
return jsonString.includes(filterText.toLowerCase());
},
renderRowWithEditor(props) {
const { level, name, value } = props.member;
// Display source editor when prop name specify to editorText
if (level === 1 && name === "editorText") {
return (
tr({},
td({ colSpan: 2 },
Editor({ text: value })
)
)
);
}
return TreeRow(props);
},
renderValueWithRep(props) {
// Hide rep summary for sections
if (props.member.level === 0) {
return null;
}
return Rep(Object.assign(props, {
// FIXME: A workaround for the issue in StringRep
// Force StringRep to crop the text everytime
member: Object.assign({}, props.member, { open: false }),
mode: MODE.TINY,
cropLimit: 60,
}));
},
updateFilterText(filterText) {
this.setState({
filterText,
});
},
render() {
const {
object,
decorator,
enableInput,
enableFilter,
expandableStrings,
filterPlaceHolder,
renderRow,
renderValue,
sectionNames,
} = this.props;
return (
div({ className: "properties-view" },
enableFilter && div({ className: "searchbox-section" },
SearchBox({
delay: FILTER_SEARCH_DELAY,
type: "filter",
onChange: this.updateFilterText,
placeholder: filterPlaceHolder,
}),
),
div({ className: "tree-container" },
TreeView({
object,
columns: [{
id: "value",
width: "100%",
}],
decorator: decorator || {
getRowClass: (rowObject) => this.getRowClass(rowObject, sectionNames),
},
enableInput,
expandableStrings,
expandedNodes: new Set(sectionNames.map((sec) => "/" + sec)),
onFilter: (props) => this.onFilter(props, sectionNames),
renderRow: renderRow || this.renderRowWithEditor,
renderValue: renderValue || this.renderValueWithRep,
}),
),
)
);
}
});
module.exports = PropertiesView;

Просмотреть файл

@ -1120,24 +1120,73 @@
font-weight: 600; font-weight: 600;
} }
/* Customize default tree table style to align with devtools theme */ .properties-view {
.theme-light .treeTable .treeLabel, /* FIXME: Minus 24px * 2 for toolbox height + panel height
.theme-light .treeTable .treeRow.hasChildren > .treeLabelCell > .treeLabel:hover { * Give a fixed panel container height in order to force tree view scrollable */
color: var(--theme-highlight-red); height: calc(100vh - 48px);
display: flex;
flex-direction: column;
} }
.theme-dark .treeTable .treeLabel, .properties-view .searchbox-section {
.theme-dark .treeTable .treeRow.hasChildren > .treeLabelCell > .treeLabel:hover { flex: 0 1 auto;
color: var(--theme-highlight-purple);
} }
.theme-firebug .treeTable .treeLabel { .properties-view .devtools-searchbox {
color: var(--theme-body-color); padding: 0;
} }
.treeTable .treeRow.hasChildren > .treeLabelCell > .treeLabel:hover { .properties-view .devtools-searchbox input {
cursor: default; margin: 1px 3px;
text-decoration: none; }
.tree-container {
position: relative;
height: 100%;
}
/* Make treeTable fill parent element and scrollable */
.tree-container .treeTable {
position: absolute;
display: block;
overflow-y: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.properties-view .devtools-searchbox,
.tree-container .treeTable .tree-section {
width: 100%;
background-color: var(--theme-toolbar-background);
}
.tree-container .treeTable .tree-section > * {
vertical-align: middle;
}
.tree-container .treeTable .treeRow.tree-section > .treeLabelCell > .treeLabel,
.tree-container .treeTable .treeRow.tree-section > .treeLabelCell > .treeLabel:hover {
color: var(--theme-body-color-alt);
}
.tree-container .treeTable .treeValueCell {
/* FIXME: Make value cell can be reduced to shorter width */
max-width: 0;
padding-inline-end: 5px;
}
.tree-container .objectBox {
white-space: nowrap;
}
.editor-container,
.editor-mount,
.editor-mount iframe {
border: none;
width: 100%;
height: 100%;
} }
/* /*

Просмотреть файл

@ -6,3 +6,4 @@ support-files =
[browser_bug453896.js] [browser_bug453896.js]
[browser_newtab_share_rule_processors.js] [browser_newtab_share_rule_processors.js]
skip-if = stylo # bug 1290224

Просмотреть файл

@ -15,7 +15,9 @@ support-files =
[test_bug1160724.xul] [test_bug1160724.xul]
[test_bug535806.xul] [test_bug535806.xul]
[test_display_mode.html] [test_display_mode.html]
tags = fullscreen
[test_display_mode_reflow.html] [test_display_mode_reflow.html]
tags = fullscreen tags = fullscreen
[test_hover.html] [test_hover.html]
[test_moz_document_rules.html] [test_moz_document_rules.html]
skip-if = stylo # bug 1290224

Просмотреть файл

@ -36,9 +36,13 @@ support-files =
[test_acid3_test46.html] [test_acid3_test46.html]
[test_addSheet.html] [test_addSheet.html]
skip-if = stylo # bug 1290224
support-files = additional_sheets_helper.html support-files = additional_sheets_helper.html
[test_additional_sheets.html] [test_additional_sheets.html]
skip-if = stylo # bug 1290224
support-files = additional_sheets_helper.html support-files = additional_sheets_helper.html
[test_align_justify_computed_values.html]
[test_align_shorthand_serialization.html]
[test_all_shorthand.html] [test_all_shorthand.html]
[test_animations.html] [test_animations.html]
skip-if = toolkit == 'android' skip-if = toolkit == 'android'
@ -62,10 +66,13 @@ support-files = file_animations_pausing.html
[test_animations_playbackrate.html] [test_animations_playbackrate.html]
support-files = file_animations_playbackrate.html support-files = file_animations_playbackrate.html
[test_animations_styles_on_event.html] [test_animations_styles_on_event.html]
skip-if = stylo # timeout bug 1328505
support-files = file_animations_styles_on_event.html support-files = file_animations_styles_on_event.html
[test_animations_with_disabled_properties.html] [test_animations_with_disabled_properties.html]
skip-if = stylo # timeout bug 1328503
support-files = file_animations_with_disabled_properties.html support-files = file_animations_with_disabled_properties.html
[test_any_dynamic.html] [test_any_dynamic.html]
[test_asyncopen2.html]
[test_at_rule_parse_serialize.html] [test_at_rule_parse_serialize.html]
[test_attribute_selector_eof_behavior.html] [test_attribute_selector_eof_behavior.html]
[test_background_blend_mode.html] [test_background_blend_mode.html]
@ -142,6 +149,7 @@ support-files = file_bug829816.css
[test_bug1055933.html] [test_bug1055933.html]
support-files = file_bug1055933_circle-xxl.png support-files = file_bug1055933_circle-xxl.png
[test_bug1089417.html] [test_bug1089417.html]
skip-if = stylo # bug 1323665
support-files = file_bug1089417_iframe.html support-files = file_bug1089417_iframe.html
[test_bug1112014.html] [test_bug1112014.html]
[test_bug1203766.html] [test_bug1203766.html]
@ -169,7 +177,9 @@ skip-if = toolkit == 'android' #bug 536603
[test_css_function_mismatched_parenthesis.html] [test_css_function_mismatched_parenthesis.html]
[test_css_loader_crossorigin_data_url.html] [test_css_loader_crossorigin_data_url.html]
[test_css_supports.html] [test_css_supports.html]
skip-if = stylo # bug 1323715
[test_css_supports_variables.html] [test_css_supports_variables.html]
skip-if = stylo # bug 1323715
[test_default_bidi_css.html] [test_default_bidi_css.html]
[test_default_computed_style.html] [test_default_computed_style.html]
[test_descriptor_storage.html] [test_descriptor_storage.html]
@ -178,7 +188,6 @@ skip-if = toolkit == 'android' #bug 536603
[test_dynamic_change_causing_reflow.html] [test_dynamic_change_causing_reflow.html]
[test_exposed_prop_accessors.html] [test_exposed_prop_accessors.html]
[test_extra_inherit_initial.html] [test_extra_inherit_initial.html]
[test_align_justify_computed_values.html]
[test_flexbox_child_display_values.xhtml] [test_flexbox_child_display_values.xhtml]
[test_flexbox_flex_grow_and_shrink.html] [test_flexbox_flex_grow_and_shrink.html]
[test_flexbox_flex_shorthand.html] [test_flexbox_flex_shorthand.html]
@ -206,11 +215,9 @@ support-files =
[test_inherit_computation.html] [test_inherit_computation.html]
skip-if = toolkit == 'android' skip-if = toolkit == 'android'
[test_inherit_storage.html] [test_inherit_storage.html]
tags = stylo
[test_initial_computation.html] [test_initial_computation.html]
skip-if = toolkit == 'android' skip-if = toolkit == 'android'
[test_initial_storage.html] [test_initial_storage.html]
tags = stylo
[test_keyframes_rules.html] [test_keyframes_rules.html]
[test_load_events_on_stylesheets.html] [test_load_events_on_stylesheets.html]
[test_logical_properties.html] [test_logical_properties.html]
@ -238,6 +245,7 @@ skip-if = android_version == '18' #debug-only failure; timed out #Android 4.3 aw
[test_pseudoelement_state.html] [test_pseudoelement_state.html]
[test_pseudoelement_parsing.html] [test_pseudoelement_parsing.html]
[test_redundant_font_download.html] [test_redundant_font_download.html]
skip-if = stylo # bug 1323665
support-files = redundant_font_download.sjs support-files = redundant_font_download.sjs
[test_rem_unit.html] [test_rem_unit.html]
[test_restyles_in_smil_animation.html] [test_restyles_in_smil_animation.html]
@ -260,23 +268,29 @@ skip-if = toolkit == 'android' #bug 775227
[test_transitions_and_reframes.html] [test_transitions_and_reframes.html]
[test_transitions_and_restyles.html] [test_transitions_and_restyles.html]
[test_transitions_and_zoom.html] [test_transitions_and_zoom.html]
skip-if = stylo # timeout bug 1328499
[test_transitions_cancel_near_end.html] [test_transitions_cancel_near_end.html]
skip-if = stylo # timeout bug 1328499
[test_transitions_computed_values.html] [test_transitions_computed_values.html]
[test_transitions_computed_value_combinations.html] [test_transitions_computed_value_combinations.html]
[test_transitions_events.html] [test_transitions_events.html]
skip-if = stylo # timeout bug 1328499
[test_transitions.html] [test_transitions.html]
skip-if = (android_version == '18' && debug) # bug 1159532 skip-if = (android_version == '18' && debug) # bug 1159532
[test_transitions_bug537151.html] [test_transitions_bug537151.html]
skip-if = stylo # timeout bug 1328499
[test_transitions_dynamic_changes.html] [test_transitions_dynamic_changes.html]
[test_transitions_per_property.html] [test_transitions_per_property.html]
skip-if = toolkit == 'android' #bug 775227 skip-if = (toolkit == 'android' || stylo) # bug 775227 for android, bug 1292283 for stylo
[test_transitions_replacement_on_busy_frame.html] [test_transitions_replacement_on_busy_frame.html]
skip-if = stylo # timeout bug 1328503
support-files = file_transitions_replacement_on_busy_frame.html support-files = file_transitions_replacement_on_busy_frame.html
[test_transitions_step_functions.html] [test_transitions_step_functions.html]
[test_transitions_with_disabled_properties.html] [test_transitions_with_disabled_properties.html]
support-files = file_transitions_with_disabled_properties.html support-files = file_transitions_with_disabled_properties.html
[test_unclosed_parentheses.html] [test_unclosed_parentheses.html]
[test_unicode_range_loading.html] [test_unicode_range_loading.html]
skip-if = stylo # timeout bug 1328507
support-files = ../../reftests/fonts/markA.woff ../../reftests/fonts/markB.woff ../../reftests/fonts/markC.woff ../../reftests/fonts/markD.woff support-files = ../../reftests/fonts/markA.woff ../../reftests/fonts/markB.woff ../../reftests/fonts/markC.woff ../../reftests/fonts/markD.woff
[test_units_angle.html] [test_units_angle.html]
[test_units_frequency.html] [test_units_frequency.html]
@ -287,11 +301,11 @@ support-files = unprefixing_service_iframe.html unprefixing_service_utils.js
[test_unprefixing_service_prefs.html] [test_unprefixing_service_prefs.html]
support-files = unprefixing_service_iframe.html unprefixing_service_utils.js support-files = unprefixing_service_iframe.html unprefixing_service_utils.js
[test_value_cloning.html] [test_value_cloning.html]
tags = stylo
skip-if = toolkit == 'android' #bug 775227 skip-if = toolkit == 'android' #bug 775227
[test_value_computation.html] [test_value_computation.html]
skip-if = toolkit == 'android' skip-if = toolkit == 'android'
[test_value_storage.html] [test_value_storage.html]
skip-if = stylo # bug 1329533
[test_variable_serialization_computed.html] [test_variable_serialization_computed.html]
[test_variable_serialization_specified.html] [test_variable_serialization_specified.html]
[test_variables.html] [test_variables.html]
@ -299,16 +313,14 @@ support-files = support/external-variable-url.css
[test_video_object_fit.html] [test_video_object_fit.html]
[test_viewport_units.html] [test_viewport_units.html]
[test_visited_image_loading.html] [test_visited_image_loading.html]
skip-if = toolkit == 'android' #TIMED_OUT skip-if = (toolkit == 'android' || stylo) # TIMED_OUT for android, timeout bug 1328511 for stylo
[test_visited_image_loading_empty.html] [test_visited_image_loading_empty.html]
skip-if = toolkit == 'android' #TIMED_OUT skip-if = (toolkit == 'android' || stylo) # TIMED_OUT for android, timeout bug 1328511 for stylo
[test_visited_lying.html] [test_visited_lying.html]
skip-if = toolkit == 'android' #TIMED_OUT skip-if = (toolkit == 'android' || stylo) # TIMED_OUT for android, timeout bug 1328511 for stylo
[test_visited_pref.html] [test_visited_pref.html]
skip-if = toolkit == 'android' #TIMED_OUT skip-if = (toolkit == 'android' || stylo) # TIMED_OUT for android, timeout bug 1328511 for stylo
[test_visited_reftests.html] [test_visited_reftests.html]
skip-if = toolkit == 'android' #TIMED_OUT skip-if = (toolkit == 'android' || stylo) # TIMED_OUT for android, timeout bug 1328511 for stylo
[test_webkit_device_pixel_ratio.html] [test_webkit_device_pixel_ratio.html]
[test_webkit_flex_display.html] [test_webkit_flex_display.html]
[test_asyncopen2.html]
[test_align_shorthand_serialization.html]

Просмотреть файл

@ -1149,4 +1149,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
static const int32_t kUnknownId = -1; static const int32_t kUnknownId = -1;
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1492266816832000); static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1492354316032000);

Просмотреть файл

@ -9,7 +9,9 @@
10seos.com: did not receive HSTS header 10seos.com: did not receive HSTS header
10tacle.io: could not connect to host 10tacle.io: could not connect to host
123plons.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 121" data: no] 123plons.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 121" data: no]
127011-networks.ch: could not connect to host
12vpnchina.com: could not connect to host 12vpnchina.com: could not connect to host
16packets.com: could not connect to host
18f.gsa.gov: did not receive HSTS header 18f.gsa.gov: did not receive HSTS header
1a-jva.de: did not receive HSTS header 1a-jva.de: did not receive HSTS header
1p.ro: could not connect to host 1p.ro: could not connect to host
@ -75,7 +77,6 @@ acgmoon.org: did not receive HSTS header
acisonline.net: did not receive HSTS header acisonline.net: did not receive HSTS header
acorns.com: did not receive HSTS header acorns.com: did not receive HSTS header
acr.im: could not connect to host acr.im: could not connect to host
acritelli.com: could not connect to host
acslimited.co.uk: did not receive HSTS header acslimited.co.uk: did not receive HSTS header
activateplay.com: did not receive HSTS header activateplay.com: did not receive HSTS header
activeweb.top: could not connect to host activeweb.top: could not connect to host
@ -114,6 +115,7 @@ aether.pw: could not connect to host
aevpn.net: could not connect to host aevpn.net: could not connect to host
aficotroceni.ro: did not receive HSTS header aficotroceni.ro: did not receive HSTS header
afp548.tk: could not connect to host afp548.tk: could not connect to host
afyou.co.kr: could not connect to host
agalaxyfarfaraway.co.uk: could not connect to host agalaxyfarfaraway.co.uk: could not connect to host
agbremen.de: did not receive HSTS header agbremen.de: did not receive HSTS header
agevio.com: could not connect to host agevio.com: could not connect to host
@ -125,6 +127,7 @@ ahabingo.com: did not receive HSTS header
ahoynetwork.com: could not connect to host ahoynetwork.com: could not connect to host
ahri.ovh: could not connect to host ahri.ovh: could not connect to host
aidanwoods.com: did not receive HSTS header aidanwoods.com: did not receive HSTS header
aimeeandalec.com: did not receive HSTS header
airbnb.com: did not receive HSTS header airbnb.com: did not receive HSTS header
aircomms.com: did not receive HSTS header aircomms.com: did not receive HSTS header
airproto.com: did not receive HSTS header airproto.com: did not receive HSTS header
@ -146,6 +149,8 @@ alariel.de: did not receive HSTS header
alarmsystemreviews.com: did not receive HSTS header alarmsystemreviews.com: did not receive HSTS header
albertopimienta.com: did not receive HSTS header albertopimienta.com: did not receive HSTS header
alcazaar.com: could not connect to host alcazaar.com: could not connect to host
alecpap.com: did not receive HSTS header
alecpapierniak.com: did not receive HSTS header
alecvannoten.be: did not receive HSTS header alecvannoten.be: did not receive HSTS header
alenan.org: could not connect to host alenan.org: could not connect to host
alessandro.pw: did not receive HSTS header alessandro.pw: did not receive HSTS header
@ -161,6 +166,7 @@ all.tf: could not connect to host
alldaymonitoring.com: could not connect to host alldaymonitoring.com: could not connect to host
allforyou.at: could not connect to host allforyou.at: could not connect to host
allinnote.com: could not connect to host allinnote.com: could not connect to host
allmbw.com: could not connect to host
allstarswithus.com: could not connect to host allstarswithus.com: could not connect to host
alpha.irccloud.com: could not connect to host alpha.irccloud.com: could not connect to host
alphabit-secure.com: could not connect to host alphabit-secure.com: could not connect to host
@ -215,6 +221,7 @@ anomaly.ws: did not receive HSTS header
anonboards.com: did not receive HSTS header anonboards.com: did not receive HSTS header
anonymousstatecollegelulzsec.com: could not connect to host anonymousstatecollegelulzsec.com: could not connect to host
anook.com: max-age too low: 0 anook.com: max-age too low: 0
another.ch: could not connect to host
ant.land: could not connect to host ant.land: could not connect to host
anthenor.co.uk: could not connect to host anthenor.co.uk: could not connect to host
antimine.kr: could not connect to host antimine.kr: could not connect to host
@ -225,8 +232,7 @@ antoniorequena.com.ve: could not connect to host
antscript.com: did not receive HSTS header antscript.com: did not receive HSTS header
any.pm: could not connect to host any.pm: could not connect to host
anycoin.me: could not connect to host anycoin.me: could not connect to host
aojiao.org: did not receive HSTS header aojiao.org: could not connect to host
aosc.io: did not receive HSTS header
apachelounge.com: did not receive HSTS header apachelounge.com: did not receive HSTS header
apeasternpower.com: max-age too low: 0 apeasternpower.com: max-age too low: 0
api.mega.co.nz: could not connect to host api.mega.co.nz: could not connect to host
@ -235,6 +241,7 @@ apis.google.com: did not receive HSTS header (error ignored - included regardles
apis.world: did not receive HSTS header apis.world: did not receive HSTS header
apmg-certified.com: did not receive HSTS header apmg-certified.com: did not receive HSTS header
apnakliyat.com: did not receive HSTS header apnakliyat.com: did not receive HSTS header
apolloyl.com: did not receive HSTS header
aponkralsunucu.com: did not receive HSTS header aponkralsunucu.com: did not receive HSTS header
app.lookout.com: could not connect to host app.lookout.com: could not connect to host
app.manilla.com: could not connect to host app.manilla.com: could not connect to host
@ -254,7 +261,6 @@ aran.me.uk: did not receive HSTS header
arboineuropa.nl: did not receive HSTS header arboineuropa.nl: did not receive HSTS header
arbu.eu: max-age too low: 2419200 arbu.eu: max-age too low: 2419200
argh.io: could not connect to host argh.io: could not connect to host
aristocrates.co: could not connect to host
arlen.se: could not connect to host arlen.se: could not connect to host
armingrodon.de: did not receive HSTS header armingrodon.de: did not receive HSTS header
armory.consulting: could not connect to host armory.consulting: could not connect to host
@ -285,7 +291,6 @@ asset-alive.net: did not receive HSTS header
astrath.net: could not connect to host astrath.net: could not connect to host
astrolpost.com: could not connect to host astrolpost.com: could not connect to host
astromelody.com: did not receive HSTS header astromelody.com: did not receive HSTS header
asuhe.cc: did not receive HSTS header
atavio.at: could not connect to host atavio.at: could not connect to host
atavio.ch: could not connect to host atavio.ch: could not connect to host
atavio.de: did not receive HSTS header atavio.de: did not receive HSTS header
@ -321,6 +326,7 @@ auverbox.ovh: could not connect to host
av.de: did not receive HSTS header av.de: did not receive HSTS header
avec-ou-sans-ordonnance.fr: could not connect to host avec-ou-sans-ordonnance.fr: could not connect to host
avinet.com: max-age too low: 0 avinet.com: max-age too low: 0
avqueen.cn: could not connect to host
awg-mode.de: did not receive HSTS header awg-mode.de: did not receive HSTS header
axado.com.br: did not receive HSTS header axado.com.br: did not receive HSTS header
axeny.com: did not receive HSTS header axeny.com: did not receive HSTS header
@ -332,6 +338,7 @@ baby-click.de: did not receive HSTS header
babybic.hu: did not receive HSTS header babybic.hu: did not receive HSTS header
babyhouse.xyz: could not connect to host babyhouse.xyz: could not connect to host
babysaying.me: could not connect to host babysaying.me: could not connect to host
bacchanallia.com: did not receive HSTS header
back-bone.nl: did not receive HSTS header back-bone.nl: did not receive HSTS header
badcronjob.com: could not connect to host badcronjob.com: could not connect to host
badkamergigant.com: could not connect to host badkamergigant.com: could not connect to host
@ -422,10 +429,11 @@ biofam.ru: did not receive HSTS header
bionicspirit.com: could not connect to host bionicspirit.com: could not connect to host
biophysik-ssl.de: did not receive HSTS header biophysik-ssl.de: did not receive HSTS header
birkman.com: did not receive HSTS header birkman.com: did not receive HSTS header
birzan.org: could not connect to host
bismarck.moe: did not receive HSTS header bismarck.moe: did not receive HSTS header
bit-rapid.com: could not connect to host
bitchan.it: could not connect to host bitchan.it: could not connect to host
bitcoinworld.me: could not connect to host bitcoinworld.me: could not connect to host
bitconcepts.co.uk: could not connect to host
bitf.ly: could not connect to host bitf.ly: could not connect to host
bitfactory.ws: could not connect to host bitfactory.ws: could not connect to host
bitfarm-archiv.com: did not receive HSTS header bitfarm-archiv.com: did not receive HSTS header
@ -471,7 +479,6 @@ blupig.net: did not receive HSTS header
bm-trading.nl: did not receive HSTS header bm-trading.nl: did not receive HSTS header
bngsecure.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 121" data: no] bngsecure.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 121" data: no]
bobiji.com: did not receive HSTS header bobiji.com: did not receive HSTS header
bobobox.net: could not connect to host
bodo-wolff.de: could not connect to host bodo-wolff.de: could not connect to host
bodyblog.nl: did not receive HSTS header bodyblog.nl: did not receive HSTS header
bodybuilding-legends.com: could not connect to host bodybuilding-legends.com: could not connect to host
@ -519,15 +526,17 @@ broken-oak.com: could not connect to host
brookechase.com: did not receive HSTS header brookechase.com: did not receive HSTS header
browserid.org: did not receive HSTS header browserid.org: did not receive HSTS header
brunix.net: did not receive HSTS header brunix.net: did not receive HSTS header
brunoramos.org: could not connect to host
bsagan.fr: could not connect to host bsagan.fr: could not connect to host
bsdtips.com: could not connect to host bsdtips.com: could not connect to host
bsquared.org: could not connect to host bsquared.org: could not connect to host
btcdlc.com: could not connect to host btcdlc.com: could not connect to host
buchheld.at: did not receive HSTS header buchheld.at: did not receive HSTS header
bucket.tk: could not connect to host bucket.tk: could not connect to host
budger.nl: could not connect to host
budgetthostels.nl: did not receive HSTS header budgetthostels.nl: did not receive HSTS header
budskap.eu: could not connect to host budskap.eu: could not connect to host
bugtrack.io: could not connect to host bugtrack.io: did not receive HSTS header
buhler.pro: did not receive HSTS header buhler.pro: did not receive HSTS header
buildci.asia: could not connect to host buildci.asia: could not connect to host
buildsaver.co.za: did not receive HSTS header buildsaver.co.za: did not receive HSTS header
@ -541,7 +550,7 @@ burrow.ovh: could not connect to host
burtrum.me: could not connect to host burtrum.me: could not connect to host
burtrum.top: could not connect to host burtrum.top: could not connect to host
business.lookout.com: could not connect to host business.lookout.com: could not connect to host
business.medbank.com.mt: max-age too low: 10702363 business.medbank.com.mt: max-age too low: 10615978
businesshosting.nl: did not receive HSTS header businesshosting.nl: did not receive HSTS header
busold.ws: could not connect to host busold.ws: could not connect to host
bustimes.org: could not connect to host bustimes.org: could not connect to host
@ -549,7 +558,6 @@ butchersworkshop.com: did not receive HSTS header
buttercoin.com: could not connect to host buttercoin.com: could not connect to host
buybaby.eu: did not receive HSTS header buybaby.eu: did not receive HSTS header
buyfox.de: did not receive HSTS header buyfox.de: did not receive HSTS header
bw.codes: could not connect to host
by4cqb.cn: could not connect to host by4cqb.cn: could not connect to host
bynet.cz: could not connect to host bynet.cz: could not connect to host
bypassed.press: could not connect to host bypassed.press: could not connect to host
@ -737,6 +745,7 @@ code.google.com: did not receive HSTS header (error ignored - included regardles
codeco.pw: could not connect to host codeco.pw: could not connect to host
codeforce.io: could not connect to host codeforce.io: could not connect to host
codepoet.de: could not connect to host codepoet.de: could not connect to host
codepult.com: could not connect to host
codepx.com: did not receive HSTS header codepx.com: did not receive HSTS header
codiva.io: max-age too low: 2592000 codiva.io: max-age too low: 2592000
coffeeetc.co.uk: did not receive HSTS header coffeeetc.co.uk: did not receive HSTS header
@ -772,6 +781,7 @@ content-api-dev.azurewebsites.net: could not connect to host
continuumgaming.com: could not connect to host continuumgaming.com: could not connect to host
controlcenter.gigahost.dk: did not receive HSTS header controlcenter.gigahost.dk: did not receive HSTS header
coolchevy.org.ua: could not connect to host coolchevy.org.ua: could not connect to host
coopens.com: did not receive HSTS header
coralproject.net: did not receive HSTS header coralproject.net: did not receive HSTS header
cordial-restaurant.com: did not receive HSTS header cordial-restaurant.com: did not receive HSTS header
core.mx: could not connect to host core.mx: could not connect to host
@ -815,6 +825,7 @@ crowdcurity.com: did not receive HSTS header
crowdjuris.com: could not connect to host crowdjuris.com: could not connect to host
crtvmgmt.com: could not connect to host crtvmgmt.com: could not connect to host
crudysql.com: could not connect to host crudysql.com: could not connect to host
crute.me: could not connect to host
cruzr.xyz: could not connect to host cruzr.xyz: could not connect to host
crypt.guru: could not connect to host crypt.guru: could not connect to host
cryptify.eu: could not connect to host cryptify.eu: could not connect to host
@ -850,7 +861,6 @@ cybershambles.com: could not connect to host
cycleluxembourg.lu: did not receive HSTS header cycleluxembourg.lu: did not receive HSTS header
cydia-search.io: could not connect to host cydia-search.io: could not connect to host
cyphertite.com: could not connect to host cyphertite.com: could not connect to host
d0xq.net: could not connect to host
dad256.tk: could not connect to host dad256.tk: could not connect to host
dadtheimpaler.com: could not connect to host dadtheimpaler.com: could not connect to host
dah5.com: did not receive HSTS header dah5.com: did not receive HSTS header
@ -927,6 +937,7 @@ deltaconcepts.de: did not receive HSTS header
deltanet-production.de: max-age too low: 0 deltanet-production.de: max-age too low: 0
demilitarized.ninja: could not connect to host demilitarized.ninja: could not connect to host
democracychronicles.com: did not receive HSTS header democracychronicles.com: did not receive HSTS header
demotops.com: did not receive HSTS header
demuzere.com: could not connect to host demuzere.com: could not connect to host
demuzere.eu: could not connect to host demuzere.eu: could not connect to host
demuzere.net: could not connect to host demuzere.net: could not connect to host
@ -957,7 +968,6 @@ diarbag.us: did not receive HSTS header
diasp.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no] diasp.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
diedrich.co: could not connect to host diedrich.co: could not connect to host
digidroom.be: did not receive HSTS header digidroom.be: did not receive HSTS header
digitalbank.kz: did not receive HSTS header
digitaldaddy.net: could not connect to host digitaldaddy.net: could not connect to host
digitalriver.tk: could not connect to host digitalriver.tk: could not connect to host
digitalskillswap.com: could not connect to host digitalskillswap.com: could not connect to host
@ -995,6 +1005,7 @@ dollywiki.co.uk: could not connect to host
dolphin-cloud.com: could not connect to host dolphin-cloud.com: could not connect to host
dolphincorp.co.uk: could not connect to host dolphincorp.co.uk: could not connect to host
domaris.de: did not receive HSTS header domaris.de: did not receive HSTS header
domfee.com: could not connect to host
dominique-mueller.de: did not receive HSTS header dominique-mueller.de: did not receive HSTS header
donttrustrobots.nl: could not connect to host donttrustrobots.nl: could not connect to host
donzelot.co.uk: max-age too low: 3600 donzelot.co.uk: max-age too low: 3600
@ -1035,6 +1046,7 @@ duesee.org: could not connect to host
dullsir.com: did not receive HSTS header dullsir.com: did not receive HSTS header
duria.de: max-age too low: 3600 duria.de: max-age too low: 3600
dutchrank.com: could not connect to host dutchrank.com: could not connect to host
dutchrank.nl: could not connect to host
dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no] dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
dxa.io: could not connect to host dxa.io: could not connect to host
dycontrol.de: could not connect to host dycontrol.de: could not connect to host
@ -1067,6 +1079,7 @@ echosystem.fr: did not receive HSTS header
ecole-en-danger.fr: could not connect to host ecole-en-danger.fr: could not connect to host
ecomparemo.com: did not receive HSTS header ecomparemo.com: did not receive HSTS header
ecorus.eu: did not receive HSTS header ecorus.eu: did not receive HSTS header
ecupcafe.com: could not connect to host
edcphenix.tk: could not connect to host edcphenix.tk: could not connect to host
edelsteincosmetic.com: did not receive HSTS header edelsteincosmetic.com: did not receive HSTS header
edissecurity.sk: did not receive HSTS header edissecurity.sk: did not receive HSTS header
@ -1161,7 +1174,7 @@ erotische-aanbiedingen.nl: could not connect to host
errlytics.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 121" data: no] errlytics.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 121" data: no]
errolz.com: could not connect to host errolz.com: could not connect to host
errors.zenpayroll.com: could not connect to host errors.zenpayroll.com: could not connect to host
ersindemirtas.com: could not connect to host ersindemirtas.com: did not receive HSTS header
escotour.com: did not receive HSTS header escotour.com: did not receive HSTS header
esec.rs: did not receive HSTS header esec.rs: did not receive HSTS header
espra.com: could not connect to host espra.com: could not connect to host
@ -1297,6 +1310,7 @@ flouartistique.ch: could not connect to host
flow.pe: could not connect to host flow.pe: could not connect to host
flow.su: could not connect to host flow.su: could not connect to host
flowersandclouds.com: could not connect to host flowersandclouds.com: could not connect to host
flra.gov: could not connect to host
flukethoughts.com: could not connect to host flukethoughts.com: could not connect to host
flushstudios.com: did not receive HSTS header flushstudios.com: did not receive HSTS header
flyaces.com: did not receive HSTS header flyaces.com: did not receive HSTS header
@ -1397,6 +1411,7 @@ gampenhof.de: did not receive HSTS header
gancedo.com.es: [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 121" data: no] gancedo.com.es: [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 121" data: no]
gaptek.id: did not receive HSTS header gaptek.id: did not receive HSTS header
garciamartin.me: could not connect to host garciamartin.me: could not connect to host
gasnews.net: did not receive HSTS header
gatilagata.com.br: did not receive HSTS header gatilagata.com.br: did not receive HSTS header
gchq.wtf: could not connect to host gchq.wtf: could not connect to host
gdpventure.com: max-age too low: 0 gdpventure.com: max-age too low: 0
@ -1499,6 +1514,7 @@ gpsfix.cz: could not connect to host
gpstuner.com: did not receive HSTS header gpstuner.com: did not receive HSTS header
gracesofgrief.com: max-age too low: 86400 gracesofgrief.com: max-age too low: 86400
grandmascookieblog.com: did not receive HSTS header grandmascookieblog.com: did not receive HSTS header
grandmasfridge.org: could not connect to host
graph.no: did not receive HSTS header graph.no: did not receive HSTS header
gravito.nl: did not receive HSTS header gravito.nl: did not receive HSTS header
gravity-net.de: could not connect to host gravity-net.de: could not connect to host
@ -1541,7 +1557,6 @@ gypthecat.com: max-age too low: 604800
gyz.io: could not connect to host gyz.io: could not connect to host
h2check.org: could not connect to host h2check.org: could not connect to host
haarkliniek.com: did not receive HSTS header haarkliniek.com: did not receive HSTS header
haavard.me: could not connect to host
habanaavenue.com: did not receive HSTS header habanaavenue.com: did not receive HSTS header
habbo.life: did not receive HSTS header habbo.life: did not receive HSTS header
hablemosdetecnologia.com.ve: could not connect to host hablemosdetecnologia.com.ve: could not connect to host
@ -1549,6 +1564,7 @@ hack.cz: could not connect to host
hack.li: did not receive HSTS header hack.li: did not receive HSTS header
hacker.one: could not connect to host hacker.one: could not connect to host
hackerforever.com: did not receive HSTS header hackerforever.com: did not receive HSTS header
hackernet.se: could not connect to host
hackerone-ext-adroll.com: could not connect to host hackerone-ext-adroll.com: could not connect to host
hackest.org: did not receive HSTS header hackest.org: did not receive HSTS header
hackit.im: could not connect to host hackit.im: could not connect to host
@ -1602,6 +1618,7 @@ hdwallpapers.net: did not receive HSTS header
healtious.com: did not receive HSTS header healtious.com: did not receive HSTS header
heart.ge: did not receive HSTS header heart.ge: did not receive HSTS header
heartlandrentals.com: did not receive HSTS header heartlandrentals.com: did not receive HSTS header
heartsucker.com: could not connect to host
heftkaufen.de: did not receive HSTS header heftkaufen.de: did not receive HSTS header
hejahanif.se: could not connect to host hejahanif.se: could not connect to host
helloworldhost.com: did not receive HSTS header helloworldhost.com: did not receive HSTS header
@ -1666,6 +1683,7 @@ howrandom.org: could not connect to host
hr-intranet.com: did not receive HSTS header hr-intranet.com: did not receive HSTS header
hsir.me: could not connect to host hsir.me: could not connect to host
hsts.date: could not connect to host hsts.date: could not connect to host
hszhyy120.com: did not receive HSTS header
http418.xyz: could not connect to host http418.xyz: could not connect to host
httpstatuscode418.xyz: could not connect to host httpstatuscode418.xyz: could not connect to host
hu.search.yahoo.com: did not receive HSTS header hu.search.yahoo.com: did not receive HSTS header
@ -1686,7 +1704,7 @@ i-partners.sk: did not receive HSTS header
iamokay.nl: did not receive HSTS header iamokay.nl: did not receive HSTS header
iamusingtheinter.net: could not connect to host iamusingtheinter.net: could not connect to host
iamveto.com: could not connect to host iamveto.com: could not connect to host
iapws.com: did not receive HSTS header iapws.com: could not connect to host
iban.is: could not connect to host iban.is: could not connect to host
icebat.dyndns.org: could not connect to host icebat.dyndns.org: could not connect to host
icewoman.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 121" data: no] icewoman.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 121" data: no]
@ -1711,6 +1729,7 @@ ies-italia.it: did not receive HSTS header
ies.id.lv: could not connect to host ies.id.lv: could not connect to host
ifad.org: did not receive HSTS header ifad.org: did not receive HSTS header
ifleurs.com: could not connect to host ifleurs.com: could not connect to host
ignace72.eu: could not connect to host
ignatisd.gr: did not receive HSTS header ignatisd.gr: did not receive HSTS header
ignitedmindz.in: could not connect to host ignitedmindz.in: could not connect to host
igule.net: could not connect to host igule.net: could not connect to host
@ -1740,7 +1759,6 @@ immunicity.press: could not connect to host
immunicity.top: could not connect to host immunicity.top: could not connect to host
imolug.org: did not receive HSTS header imolug.org: did not receive HSTS header
imouto.my: max-age too low: 5184000 imouto.my: max-age too low: 5184000
imouyang.com: could not connect to host
imperialwebsolutions.com: did not receive HSTS header imperialwebsolutions.com: did not receive HSTS header
imu.li: did not receive HSTS header imu.li: did not receive HSTS header
imusic.dk: did not receive HSTS header imusic.dk: did not receive HSTS header
@ -1788,7 +1806,6 @@ inverselink.com: could not connect to host
invite24.pro: could not connect to host invite24.pro: could not connect to host
inwesttitle.com: max-age too low: 0 inwesttitle.com: max-age too low: 0
iocheck.com: could not connect to host iocheck.com: could not connect to host
ioiart.eu: did not receive HSTS header
ionx.co.uk: did not receive HSTS header ionx.co.uk: did not receive HSTS header
iop.intuit.com: max-age too low: 86400 iop.intuit.com: max-age too low: 86400
iosmods.com: could not connect to host iosmods.com: could not connect to host
@ -1797,6 +1814,7 @@ iotsms.io: could not connect to host
ip-life.net: could not connect to host ip-life.net: could not connect to host
ip6.im: did not receive HSTS header ip6.im: did not receive HSTS header
ipmimagazine.com: did not receive HSTS header ipmimagazine.com: did not receive HSTS header
ipsec.pl: could not connect to host
iptel.by: max-age too low: 0 iptel.by: max-age too low: 0
iptel.ro: could not connect to host iptel.ro: could not connect to host
ipv6cloud.club: could not connect to host ipv6cloud.club: could not connect to host
@ -1822,6 +1840,7 @@ itos.asia: did not receive HSTS header
itos.pl: did not receive HSTS header itos.pl: did not receive HSTS header
itsadog.co.uk: did not receive HSTS header itsadog.co.uk: did not receive HSTS header
itsamurai.ru: max-age too low: 2592000 itsamurai.ru: max-age too low: 2592000
itsatrap.nl: could not connect to host
itsecurityassurance.pw: did not receive HSTS header itsecurityassurance.pw: did not receive HSTS header
itsg-faq.de: could not connect to host itsg-faq.de: could not connect to host
itshost.ru: could not connect to host itshost.ru: could not connect to host
@ -1907,15 +1926,14 @@ jkbuster.com: could not connect to host
jmdekker.it: could not connect to host jmdekker.it: could not connect to host
joakimalgroy.com: could not connect to host joakimalgroy.com: could not connect to host
jobmedic.com: did not receive HSTS header jobmedic.com: did not receive HSTS header
jobss.co.uk: could not connect to host
joedavison.me: could not connect to host joedavison.me: could not connect to host
jogi-server.de: did not receive HSTS header jogi-server.de: did not receive HSTS header
johnblackbourn.com: could not connect to host johnblackbourn.com: could not connect to host
johners.me: could not connect to host johners.me: could not connect to host
johners.tech: did not receive HSTS header johners.tech: could not connect to host
johnrom.com: did not receive HSTS header johnrom.com: did not receive HSTS header
jonas-keidel.de: did not receive HSTS header jonas-keidel.de: did not receive HSTS header
jonasgroth.se: max-age too low: 2592000 jonasgroth.se: did not receive HSTS header
jonathan.ir: could not connect to host jonathan.ir: could not connect to host
jonathancarter.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no] jonathancarter.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
jonn.me: could not connect to host jonn.me: could not connect to host
@ -1975,7 +1993,6 @@ kawaii.io: could not connect to host
kawaiiku.com: could not connect to host kawaiiku.com: could not connect to host
kawaiiku.de: could not connect to host kawaiiku.de: could not connect to host
kayon.cf: could not connect to host kayon.cf: could not connect to host
kcolford.com: could not connect to host
kcsordparticipation.org: could not connect to host kcsordparticipation.org: could not connect to host
kd-plus.pp.ua: could not connect to host kd-plus.pp.ua: could not connect to host
kdata.it: did not receive HSTS header kdata.it: did not receive HSTS header
@ -1989,7 +2006,7 @@ kerangalam.com: could not connect to host
kerksanders.nl: did not receive HSTS header kerksanders.nl: did not receive HSTS header
kermadec.net: could not connect to host kermadec.net: could not connect to host
kernl.us: did not receive HSTS header kernl.us: did not receive HSTS header
kevinapease.com: did not receive HSTS header keybored.me: could not connect to host
keymaster.lookout.com: did not receive HSTS header keymaster.lookout.com: did not receive HSTS header
kgxtech.com: max-age too low: 2592000 kgxtech.com: max-age too low: 2592000
ki-on.net: did not receive HSTS header ki-on.net: did not receive HSTS header
@ -2012,7 +2029,7 @@ kirkforcongress.com: could not connect to host
kirkforsenate.com: could not connect to host kirkforsenate.com: could not connect to host
kirkpatrickdavis.com: could not connect to host kirkpatrickdavis.com: could not connect to host
kisa.io: could not connect to host kisa.io: could not connect to host
kisalt.im: could not connect to host kisalt.im: did not receive HSTS header
kissart.net: could not connect to host kissart.net: could not connect to host
kissflow.com: did not receive HSTS header kissflow.com: did not receive HSTS header
kisun.co.jp: could not connect to host kisun.co.jp: could not connect to host
@ -2030,6 +2047,8 @@ kleertjesvoordelig.nl: did not receive HSTS header
kleinblogje.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 121" data: no] kleinblogje.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 121" data: no]
kletterkater.com: did not receive HSTS header kletterkater.com: did not receive HSTS header
klicktojob.de: could not connect to host klicktojob.de: could not connect to host
klingeletest.de: could not connect to host
klustekeningen.nl: did not receive HSTS header
kmartin.io: did not receive HSTS header kmartin.io: did not receive HSTS header
knccloud.com: could not connect to host knccloud.com: could not connect to host
kngkng.com: could not connect to host kngkng.com: could not connect to host
@ -2037,6 +2056,7 @@ knowledgesnap.com: did not receive HSTS header
kodokushi.fr: could not connect to host kodokushi.fr: could not connect to host
koen.io: did not receive HSTS header koen.io: did not receive HSTS header
koenrouwhorst.nl: did not receive HSTS header koenrouwhorst.nl: did not receive HSTS header
koketteriet.se: could not connect to host
kollabria.com: max-age too low: 0 kollabria.com: max-age too low: 0
komikito.com: could not connect to host komikito.com: could not connect to host
kompetenzwerft.de: did not receive HSTS header kompetenzwerft.de: did not receive HSTS header
@ -2080,7 +2100,6 @@ kylinj.com: could not connect to host
kyochon.fr: could not connect to host kyochon.fr: could not connect to host
kz.search.yahoo.com: did not receive HSTS header kz.search.yahoo.com: did not receive HSTS header
kzjnet.com: could not connect to host kzjnet.com: could not connect to host
kzsdabas.hu: could not connect to host
labaia.info: could not connect to host labaia.info: could not connect to host
labina.com.tr: did not receive HSTS header labina.com.tr: did not receive HSTS header
laboiteapc.fr: did not receive HSTS header laboiteapc.fr: did not receive HSTS header
@ -2140,13 +2159,13 @@ lesperlesdunet.fr: could not connect to host
letras.mus.br: did not receive HSTS header letras.mus.br: did not receive HSTS header
letsmultiplayerplay.com: did not receive HSTS header letsmultiplayerplay.com: did not receive HSTS header
letustravel.tk: could not connect to host letustravel.tk: could not connect to host
lewis.li: could not connect to host
lfullerdesign.com: did not receive HSTS header lfullerdesign.com: did not receive HSTS header
lgiswa.com.au: did not receive HSTS header lgiswa.com.au: did not receive HSTS header
lgrs.com.au: did not receive HSTS header lgrs.com.au: did not receive HSTS header
lgts.se: could not connect to host lgts.se: could not connect to host
li.search.yahoo.com: did not receive HSTS header li.search.yahoo.com: did not receive HSTS header
liaillustr.at: did not receive HSTS header liaillustr.at: did not receive HSTS header
liam-w.com: could not connect to host
lianye1.cc: could not connect to host lianye1.cc: could not connect to host
lianye2.cc: could not connect to host lianye2.cc: could not connect to host
lianye3.cc: could not connect to host lianye3.cc: could not connect to host
@ -2218,6 +2237,7 @@ lookzook.com: did not receive HSTS header
loophost.com.br: did not receive HSTS header loophost.com.br: did not receive HSTS header
lordjevington.co.uk: could not connect to host lordjevington.co.uk: could not connect to host
lostinsecurity.com: could not connect to host lostinsecurity.com: could not connect to host
lostinweb.eu: could not connect to host
lothai.re: could not connect to host lothai.re: could not connect to host
lotsencafe.de: did not receive HSTS header lotsencafe.de: did not receive HSTS header
lovelifelovelive.com: could not connect to host lovelifelovelive.com: could not connect to host
@ -2253,6 +2273,7 @@ luther.fi: could not connect to host
luxus-russen.de: did not receive HSTS header luxus-russen.de: did not receive HSTS header
luxwatch.com: could not connect to host luxwatch.com: could not connect to host
lv.search.yahoo.com: did not receive HSTS header lv.search.yahoo.com: did not receive HSTS header
lyonl.com: did not receive HSTS header
lzkill.com: could not connect to host lzkill.com: could not connect to host
m-ali.xyz: did not receive HSTS header m-ali.xyz: did not receive HSTS header
m.gparent.org: could not connect to host m.gparent.org: could not connect to host
@ -2274,6 +2295,7 @@ mafamane.com: could not connect to host
mafiareturns.com: max-age too low: 2592000 mafiareturns.com: max-age too low: 2592000
magenx.com: did not receive HSTS header magenx.com: did not receive HSTS header
mahamed91.pw: could not connect to host mahamed91.pw: could not connect to host
mahefa.co.uk: could not connect to host
mail-settings.google.com: did not receive HSTS header (error ignored - included regardless) mail-settings.google.com: did not receive HSTS header (error ignored - included regardless)
mail.google.com: did not receive HSTS header (error ignored - included regardless) mail.google.com: did not receive HSTS header (error ignored - included regardless)
maildragon.com: could not connect to host maildragon.com: could not connect to host
@ -2303,6 +2325,7 @@ markayapilandirma.com: could not connect to host
market.android.com: did not receive HSTS header (error ignored - included regardless) market.android.com: did not receive HSTS header (error ignored - included regardless)
markrego.com: could not connect to host markrego.com: could not connect to host
markus-dev.com: did not receive HSTS header markus-dev.com: did not receive HSTS header
markusehrlicher.de: could not connect to host
markusweimar.de: did not receive HSTS header markusweimar.de: did not receive HSTS header
marleyresort.com: did not receive HSTS header marleyresort.com: did not receive HSTS header
marshut.net: could not connect to host marshut.net: could not connect to host
@ -2404,6 +2427,7 @@ mijn-email.org: could not connect to host
mikaelemilsson.net: did not receive HSTS header mikaelemilsson.net: did not receive HSTS header
mikeburns.com: did not receive HSTS header mikeburns.com: did not receive HSTS header
mikeg.de: did not receive HSTS header mikeg.de: did not receive HSTS header
mikek.work: did not receive HSTS header
mikeology.org: could not connect to host mikeology.org: could not connect to host
mikepair.net: did not receive HSTS header mikepair.net: did not receive HSTS header
mikonmaa.fi: could not connect to host mikonmaa.fi: could not connect to host
@ -2429,17 +2453,18 @@ mister.hosting: could not connect to host
misterl.net: did not receive HSTS header misterl.net: did not receive HSTS header
mitchellrenouf.ca: could not connect to host mitchellrenouf.ca: could not connect to host
mittenhacks.com: could not connect to host mittenhacks.com: could not connect to host
mitzpettel.com: could not connect to host
miui-germany.de: did not receive HSTS header miui-germany.de: did not receive HSTS header
miyoshi-kikaku.co.jp: did not receive HSTS header miyoshi-kikaku.co.jp: did not receive HSTS header
miyoshi-kikaku.com: did not receive HSTS header miyoshi-kikaku.com: did not receive HSTS header
mizd.at: could not connect to host mizd.at: could not connect to host
mizi.name: did not receive HSTS header mizi.name: did not receive HSTS header
mlcdn.co: could not connect to host
mlpepilepsy.org: could not connect to host mlpepilepsy.org: could not connect to host
mm13.at: could not connect to host mm13.at: could not connect to host
mmgazhomeloans.com: did not receive HSTS header mmgazhomeloans.com: did not receive HSTS header
mnemotiv.com: could not connect to host mnemotiv.com: could not connect to host
mnetworkingsolutions.co.uk: did not receive HSTS header mnetworkingsolutions.co.uk: did not receive HSTS header
mobaircon.com: could not connect to host
mobifinans.ru: did not receive HSTS header mobifinans.ru: did not receive HSTS header
mobilekey.co: could not connect to host mobilekey.co: could not connect to host
mobilemedics.com: did not receive HSTS header mobilemedics.com: did not receive HSTS header
@ -2497,7 +2522,6 @@ mtcgf.com: did not receive HSTS header
mtg-esport.de: could not connect to host mtg-esport.de: could not connect to host
mu.search.yahoo.com: did not receive HSTS header mu.search.yahoo.com: did not receive HSTS header
mudcrab.us: did not receive HSTS header mudcrab.us: did not receive HSTS header
mumei.space: could not connect to host
munich-rage.de: could not connect to host munich-rage.de: could not connect to host
munzee.com: did not receive HSTS header munzee.com: did not receive HSTS header
muriburi.land: could not connect to host muriburi.land: could not connect to host
@ -2538,7 +2562,6 @@ myraytech.net: did not receive HSTS header
mysecretrewards.com: did not receive HSTS header mysecretrewards.com: did not receive HSTS header
mystery-science-theater-3000.de: did not receive HSTS header mystery-science-theater-3000.de: did not receive HSTS header
mystudy.me: [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 121" data: no] mystudy.me: [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 121" data: no]
mythslegendscollection.com: did not receive HSTS header
myvirtualserver.com: max-age too low: 2592000 myvirtualserver.com: max-age too low: 2592000
myzone.com: did not receive HSTS header myzone.com: did not receive HSTS header
mziulu.me: could not connect to host mziulu.me: could not connect to host
@ -2596,6 +2619,7 @@ netherwind.eu: did not receive HSTS header
netica.fr: did not receive HSTS header netica.fr: did not receive HSTS header
netmagik.com: did not receive HSTS header netmagik.com: did not receive HSTS header
netsight.org: could not connect to host netsight.org: could not connect to host
nettefoundation.com: could not connect to host
netzbit.de: could not connect to host netzbit.de: could not connect to host
netzpolitik.org: did not receive HSTS header netzpolitik.org: did not receive HSTS header
netztest.at: did not receive HSTS header netztest.at: did not receive HSTS header
@ -2627,7 +2651,7 @@ niconode.com: could not connect to host
nien.chat: could not connect to host nien.chat: could not connect to host
niho.jp: [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 121" data: no] niho.jp: [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 121" data: no]
nikcub.com: could not connect to host nikcub.com: could not connect to host
nikksno.io: did not receive HSTS header nikksno.io: could not connect to host
nikomo.fi: could not connect to host nikomo.fi: could not connect to host
ninchisho-online.com: did not receive HSTS header ninchisho-online.com: did not receive HSTS header
nine-hells.net: could not connect to host nine-hells.net: could not connect to host
@ -2683,7 +2707,6 @@ nu3.fi: did not receive HSTS header
nu3.fr: did not receive HSTS header nu3.fr: did not receive HSTS header
nu3.no: did not receive HSTS header nu3.no: did not receive HSTS header
nu3.se: did not receive HSTS header nu3.se: did not receive HSTS header
nube.ninja: could not connect to host
nufla.de: could not connect to host nufla.de: could not connect to host
null-sec.ru: could not connect to host null-sec.ru: could not connect to host
null.cat: could not connect to host null.cat: could not connect to host
@ -2825,7 +2848,7 @@ pacelink.de: could not connect to host
packlane.com: did not receive HSTS header packlane.com: did not receive HSTS header
pader-deko.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 121" data: no] pader-deko.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 121" data: no]
paestbin.com: could not connect to host paestbin.com: could not connect to host
pagerate.io: could not connect to host pagerate.io: did not receive HSTS header
pagetoimage.com: could not connect to host pagetoimage.com: could not connect to host
pahae.de: did not receive HSTS header pahae.de: did not receive HSTS header
paintingat.com: could not connect to host paintingat.com: could not connect to host
@ -2843,7 +2866,6 @@ papygeek.com: could not connect to host
parent5446.us: could not connect to host parent5446.us: could not connect to host
parentmail.co.uk: did not receive HSTS header parentmail.co.uk: did not receive HSTS header
parithy.net: could not connect to host parithy.net: could not connect to host
parkingpoint.co.uk: could not connect to host
parodybit.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 121" data: no] parodybit.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 121" data: no]
parpaing-paillette.net: could not connect to host parpaing-paillette.net: could not connect to host
particonpsplus.it: could not connect to host particonpsplus.it: could not connect to host
@ -2854,6 +2876,7 @@ partyvan.it: could not connect to host
partyvan.moe: could not connect to host partyvan.moe: could not connect to host
partyvan.nl: could not connect to host partyvan.nl: could not connect to host
partyvan.se: could not connect to host partyvan.se: could not connect to host
passphrase.today: could not connect to host
passwordbox.com: did not receive HSTS header passwordbox.com: did not receive HSTS header
passwordrevelator.net: did not receive HSTS header passwordrevelator.net: did not receive HSTS header
passwords.google.com: did not receive HSTS header (error ignored - included regardless) passwords.google.com: did not receive HSTS header (error ignored - included regardless)
@ -2927,6 +2950,7 @@ piratedb.com: could not connect to host
piratedot.com: could not connect to host piratedot.com: could not connect to host
piratelist.online: could not connect to host piratelist.online: could not connect to host
piratenlogin.de: could not connect to host piratenlogin.de: could not connect to host
pirateproxy.sx: could not connect to host
pirati.cz: max-age too low: 604800 pirati.cz: max-age too low: 604800
pirlitu.com: did not receive HSTS header pirlitu.com: did not receive HSTS header
pisexy.me: did not receive HSTS header pisexy.me: did not receive HSTS header
@ -2958,10 +2982,9 @@ plombirator.kz: could not connect to host
plothost.com: did not receive HSTS header plothost.com: did not receive HSTS header
ploup.net: could not connect to host ploup.net: could not connect to host
pmnts.io: could not connect to host pmnts.io: could not connect to host
po.gl: could not connect to host po.gl: did not receive HSTS header
poiema.com.sg: did not receive HSTS header poiema.com.sg: did not receive HSTS header
pol.in.th: could not connect to host pol.in.th: could not connect to host
polaire.org: did not receive HSTS header
poleartschool.com: could not connect to host poleartschool.com: could not connect to host
polimat.org: could not connect to host polimat.org: could not connect to host
politically-incorrect.xyz: could not connect to host politically-incorrect.xyz: could not connect to host
@ -2975,8 +2998,7 @@ poolsandstuff.com: did not receive HSTS header
poon.tech: could not connect to host poon.tech: could not connect to host
porno-gif.ru: did not receive HSTS header porno-gif.ru: did not receive HSTS header
portalplatform.net: did not receive HSTS header portalplatform.net: did not receive HSTS header
postcodewise.co.uk: could not connect to host postcodewise.co.uk: did not receive HSTS header
posterspy.com: did not receive HSTS header
postscheduler.org: could not connect to host postscheduler.org: could not connect to host
posylka.de: did not receive HSTS header posylka.de: did not receive HSTS header
poussinooz.fr: could not connect to host poussinooz.fr: could not connect to host
@ -3026,7 +3048,8 @@ proximato.com: could not connect to host
proxybay.al: could not connect to host proxybay.al: could not connect to host
proxybay.club: could not connect to host proxybay.club: could not connect to host
proxybay.info: did not receive HSTS header proxybay.info: did not receive HSTS header
prxio.site: could not connect to host prxio.date: could not connect to host
prxio.site: did not receive HSTS header
prytkov.com: did not receive HSTS header prytkov.com: did not receive HSTS header
psicologia.co.ve: could not connect to host psicologia.co.ve: could not connect to host
psw.academy: did not receive HSTS header psw.academy: did not receive HSTS header
@ -3054,7 +3077,7 @@ qccqld.org.au: could not connect to host
qingxuan.info: max-age too low: 864000 qingxuan.info: max-age too low: 864000
qinxi1992.com: did not receive HSTS header qinxi1992.com: did not receive HSTS header
qldconservation.org: could not connect to host qldconservation.org: could not connect to host
qorm.co.uk: could not connect to host qorm.co.uk: did not receive HSTS header
qrara.net: did not receive HSTS header qrara.net: did not receive HSTS header
qrlending.com: did not receive HSTS header qrlending.com: did not receive HSTS header
quail.solutions: could not connect to host quail.solutions: could not connect to host
@ -3072,9 +3095,9 @@ qwilink.me: did not receive HSTS header
r10n.com: did not receive HSTS header r10n.com: did not receive HSTS header
r15.me: could not connect to host r15.me: could not connect to host
r3bl.me: did not receive HSTS header r3bl.me: did not receive HSTS header
r40.us: could not connect to host
raajheshkannaa.com: could not connect to host raajheshkannaa.com: could not connect to host
radicaleducation.net: could not connect to host radicaleducation.net: could not connect to host
radiormi.com: did not receive HSTS header
rafaelcz.de: could not connect to host rafaelcz.de: could not connect to host
railgun.com.cn: could not connect to host railgun.com.cn: could not connect to host
rainbowbarracuda.com: could not connect to host rainbowbarracuda.com: could not connect to host
@ -3215,6 +3238,7 @@ rubyshop.nl: max-age too low: 604800
rudeotter.com: could not connect to host rudeotter.com: could not connect to host
rudloff.pro: did not receive HSTS header rudloff.pro: did not receive HSTS header
rugirlfriend.com: could not connect to host rugirlfriend.com: could not connect to host
rugk.dedyn.io: could not connect to host
ruiming.me: did not receive HSTS header ruiming.me: did not receive HSTS header
runawebinar.nl: could not connect to host runawebinar.nl: could not connect to host
runementors.com: could not connect to host runementors.com: could not connect to host
@ -3281,6 +3305,7 @@ schwarzkopfforyou.de: did not receive HSTS header
scienceathome.org: did not receive HSTS header scienceathome.org: did not receive HSTS header
scooshonline.co.uk: did not receive HSTS header scooshonline.co.uk: did not receive HSTS header
scotbirchfield.com: did not receive HSTS header scotbirchfield.com: did not receive HSTS header
scottdial.com: could not connect to host
scottgthomas.com: could not connect to host scottgthomas.com: could not connect to host
scrambl.is: could not connect to host scrambl.is: could not connect to host
scrambler.in: could not connect to host scrambler.in: could not connect to host
@ -3337,6 +3362,7 @@ sensiblemn.org: could not connect to host
sensibus.com: did not receive HSTS header sensibus.com: did not receive HSTS header
seo.consulting: did not receive HSTS header seo.consulting: did not receive HSTS header
seomobo.com: could not connect to host seomobo.com: could not connect to host
seon.me: could not connect to host
seowarp.net: did not receive HSTS header seowarp.net: did not receive HSTS header
sep23.ru: did not receive HSTS header sep23.ru: did not receive HSTS header
seq.tf: did not receive HSTS header seq.tf: did not receive HSTS header
@ -3400,7 +3426,6 @@ simbolo.co.uk: could not connect to host
simod.org: could not connect to host simod.org: could not connect to host
simon.butcher.name: max-age too low: 2629743 simon.butcher.name: max-age too low: 2629743
simongong.net: did not receive HSTS header simongong.net: did not receive HSTS header
simonkjellberg.se: could not connect to host
simpleai.net: max-age too low: 600 simpleai.net: max-age too low: 600
simplefraud.com: could not connect to host simplefraud.com: could not connect to host
simplelearner.com: could not connect to host simplelearner.com: could not connect to host
@ -3419,6 +3444,7 @@ skk.io: could not connect to host
skoda-clever-lead.de: could not connect to host skoda-clever-lead.de: could not connect to host
skoda-im-dialog.de: could not connect to host skoda-im-dialog.de: could not connect to host
skullhouse.nyc: did not receive HSTS header skullhouse.nyc: did not receive HSTS header
skyasker.cn: could not connect to host
skyflix.me: did not receive HSTS header skyflix.me: did not receive HSTS header
skyoy.com: could not connect to host skyoy.com: could not connect to host
slash-dev.de: did not receive HSTS header slash-dev.de: did not receive HSTS header
@ -3479,6 +3505,7 @@ someshit.xyz: could not connect to host
somethingnew.xyz: did not receive HSTS header somethingnew.xyz: did not receive HSTS header
sonic.sk: max-age too low: 0 sonic.sk: max-age too low: 0
sonicrainboom.rocks: did not receive HSTS header sonicrainboom.rocks: did not receive HSTS header
sortaweird.net: could not connect to host
sotiran.com: did not receive HSTS header sotiran.com: did not receive HSTS header
sotor.de: did not receive HSTS header sotor.de: did not receive HSTS header
soulboy.io: did not receive HSTS header soulboy.io: did not receive HSTS header
@ -3603,6 +3630,7 @@ suksit.com: could not connect to host
sumoatm.com: did not receive HSTS header sumoatm.com: did not receive HSTS header
sumoscout.de: did not receive HSTS header sumoscout.de: did not receive HSTS header
suncountrymarine.com: did not receive HSTS header suncountrymarine.com: did not receive HSTS header
sunflyer.cn: did not receive HSTS header
sunnyfruit.ru: did not receive HSTS header sunnyfruit.ru: did not receive HSTS header
sunshinepress.org: could not connect to host sunshinepress.org: could not connect to host
suos.io: could not connect to host suos.io: could not connect to host
@ -3682,7 +3710,6 @@ tcomms.org: max-age too low: 0
tcp.expert: did not receive HSTS header tcp.expert: did not receive HSTS header
teachforcanada.ca: did not receive HSTS header teachforcanada.ca: did not receive HSTS header
team-one.racing: could not connect to host team-one.racing: could not connect to host
team-pancake.eu: could not connect to host
teamsocial.co: did not receive HSTS header teamsocial.co: did not receive HSTS header
teamzeus.cz: could not connect to host teamzeus.cz: could not connect to host
tech55i.com: did not receive HSTS header tech55i.com: did not receive HSTS header
@ -3694,7 +3721,6 @@ techloaner.com: could not connect to host
techmatehq.com: could not connect to host techmatehq.com: could not connect to host
technosavvyport.com: did not receive HSTS header technosavvyport.com: did not receive HSTS header
techpointed.com: could not connect to host techpointed.com: could not connect to host
techvalue.gr: did not receive HSTS header
tegelsensanitaironline.nl: did not receive HSTS header tegelsensanitaironline.nl: did not receive HSTS header
tekshrek.com: did not receive HSTS header tekshrek.com: did not receive HSTS header
telefonnummer.online: could not connect to host telefonnummer.online: could not connect to host
@ -3734,7 +3760,7 @@ thecharlestonwaldorf.com: did not receive HSTS header
theclementinebutchers.com: could not connect to host theclementinebutchers.com: could not connect to host
thecoffeehouse.xyz: could not connect to host thecoffeehouse.xyz: could not connect to host
thediaryofadam.com: did not receive HSTS header thediaryofadam.com: did not receive HSTS header
theendofzion.com: did not receive HSTS header theendofzion.com: could not connect to host
theeyeopener.com: did not receive HSTS header theeyeopener.com: did not receive HSTS header
theflowerbasketonline.com: could not connect to host theflowerbasketonline.com: could not connect to host
thefootballanalyst.com: could not connect to host thefootballanalyst.com: could not connect to host
@ -3749,6 +3775,7 @@ themicrocapital.com: could not connect to host
themillerslive.com: could not connect to host themillerslive.com: could not connect to host
theodorejones.info: could not connect to host theodorejones.info: could not connect to host
thepartywarehouse.co.uk: did not receive HSTS header thepartywarehouse.co.uk: did not receive HSTS header
thepasteb.in: could not connect to host
thepiratebay.al: could not connect to host thepiratebay.al: could not connect to host
thepiratebay.tech: could not connect to host thepiratebay.tech: could not connect to host
therapyportal.com: did not receive HSTS header therapyportal.com: did not receive HSTS header
@ -3763,6 +3790,7 @@ thevintagenews.com: [Exception... "Component returned failure code: 0x80004005 (
thewebfellas.com: did not receive HSTS header thewebfellas.com: did not receive HSTS header
thezonders.com: did not receive HSTS header thezonders.com: did not receive HSTS header
thierfreund.de: could not connect to host thierfreund.de: could not connect to host
thijsvanderveen.net: could not connect to host
thinkcoding.de: could not connect to host thinkcoding.de: could not connect to host
thirdpartytrade.com: did not receive HSTS header thirdpartytrade.com: did not receive HSTS header
thirty5.net: did not receive HSTS header thirty5.net: did not receive HSTS header
@ -3774,7 +3802,6 @@ thorncreek.net: did not receive HSTS header
thriveapproach.co.uk: did not receive HSTS header thriveapproach.co.uk: did not receive HSTS header
thues.eu: could not connect to host thues.eu: could not connect to host
thumbtack.com: did not receive HSTS header thumbtack.com: did not receive HSTS header
ticfleet.com: could not connect to host
tickettoaster.de: max-age too low: 0 tickettoaster.de: max-age too low: 0
tickopa.co.uk: could not connect to host tickopa.co.uk: could not connect to host
tickreport.com: did not receive HSTS header tickreport.com: did not receive HSTS header
@ -3813,7 +3840,7 @@ tobias-bielefeld.de: did not receive HSTS header
tobiasmathes.com: could not connect to host tobiasmathes.com: could not connect to host
tobiasmathes.name: could not connect to host tobiasmathes.name: could not connect to host
tobiasofficial.at: could not connect to host tobiasofficial.at: could not connect to host
todo.is: could not connect to host todo.is: did not receive HSTS header
todobazar.es: could not connect to host todobazar.es: could not connect to host
tokyopopline.com: did not receive HSTS header tokyopopline.com: did not receive HSTS header
tollmanz.com: did not receive HSTS header tollmanz.com: did not receive HSTS header
@ -3848,6 +3875,7 @@ tradingcentre.com.au: did not receive HSTS header
tradinghope.com: could not connect to host tradinghope.com: could not connect to host
traeningsprojekt.dk: did not receive HSTS header traeningsprojekt.dk: did not receive HSTS header
traindb.nl: could not connect to host traindb.nl: could not connect to host
trainut.com: could not connect to host
translate.googleapis.com: did not receive HSTS header (error ignored - included regardless) translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
transportal.sk: did not receive HSTS header transportal.sk: did not receive HSTS header
treeby.net: could not connect to host treeby.net: could not connect to host
@ -3869,6 +3897,7 @@ tsecy.com: did not receive HSTS header
tsgoc.com: did not receive HSTS header tsgoc.com: did not receive HSTS header
tsrstore.gq: could not connect to host tsrstore.gq: could not connect to host
tssouthernpower.com: max-age too low: 0 tssouthernpower.com: max-age too low: 0
tsumegumi.net: could not connect to host
tuamoronline.com: could not connect to host tuamoronline.com: could not connect to host
tubepro.de: max-age too low: 600000 tubepro.de: max-age too low: 600000
tuingereedschappen.net: could not connect to host tuingereedschappen.net: could not connect to host
@ -3898,6 +3927,8 @@ tx041cap.org: did not receive HSTS header
txclimbers.com: could not connect to host txclimbers.com: could not connect to host
txf.pw: could not connect to host txf.pw: could not connect to host
ty2u.com: did not receive HSTS header ty2u.com: did not receive HSTS header
tyler.rs: could not connect to host
tyleromeara.com: could not connect to host
tylian.net: max-age too low: 0 tylian.net: max-age too low: 0
typingrevolution.com: did not receive HSTS header typingrevolution.com: did not receive HSTS header
tyrelius.com: did not receive HSTS header tyrelius.com: did not receive HSTS header
@ -3905,7 +3936,6 @@ tyroproducts.eu: did not receive HSTS header
tzappa.net: could not connect to host tzappa.net: could not connect to host
u-blox.com: max-age too low: 0 u-blox.com: max-age too low: 0
ua.search.yahoo.com: did not receive HSTS header ua.search.yahoo.com: did not receive HSTS header
uberwald.ws: could not connect to host
ubicloud.de: could not connect to host ubicloud.de: could not connect to host
ublox.com: did not receive HSTS header ublox.com: did not receive HSTS header
ubuntuhot.com: did not receive HSTS header ubuntuhot.com: did not receive HSTS header
@ -3922,6 +3952,7 @@ ulmo.dk: could not connect to host
ultros.io: did not receive HSTS header ultros.io: did not receive HSTS header
umidev.com: could not connect to host umidev.com: could not connect to host
umie.cc: did not receive HSTS header umie.cc: did not receive HSTS header
unart.info: could not connect to host
unbanthe.net: could not connect to host unbanthe.net: could not connect to host
unblocked-networks.org: could not connect to host unblocked-networks.org: could not connect to host
unblocked.host: could not connect to host unblocked.host: could not connect to host
@ -3989,7 +4020,6 @@ vanitynailworkz.com: could not connect to host
vanlaanen.com: did not receive HSTS header vanlaanen.com: did not receive HSTS header
vansieleghem.com: could not connect to host vansieleghem.com: could not connect to host
vasanth.org: could not connect to host vasanth.org: could not connect to host
vault21.net: could not connect to host
vbulletin-russia.com: could not connect to host vbulletin-russia.com: could not connect to host
vbulletinrussia.com: could not connect to host vbulletinrussia.com: could not connect to host
vcdove.com: did not receive HSTS header vcdove.com: did not receive HSTS header
@ -4007,6 +4037,7 @@ vetmgmt.com: could not connect to host
vfree.org: could not connect to host vfree.org: could not connect to host
vglimg.com: could not connect to host vglimg.com: could not connect to host
vhost.co.id: could not connect to host vhost.co.id: could not connect to host
vibrant-america.com: could not connect to host
videnskabsklubben.dk: did not receive HSTS header videnskabsklubben.dk: did not receive HSTS header
videomuz.com: did not receive HSTS header videomuz.com: did not receive HSTS header
vidz.ga: could not connect to host vidz.ga: could not connect to host
@ -4117,7 +4148,6 @@ whatnext.limited: did not receive HSTS header
whats.io: did not receive HSTS header whats.io: did not receive HSTS header
whatsstalk.me: could not connect to host whatsstalk.me: could not connect to host
when-release.com: did not receive HSTS header when-release.com: did not receive HSTS header
whisker.network: could not connect to host
whiterabbitcakery.com: could not connect to host whiterabbitcakery.com: could not connect to host
whitestagforge.com: did not receive HSTS header whitestagforge.com: did not receive HSTS header
whoclicks.net: could not connect to host whoclicks.net: could not connect to host
@ -4211,7 +4241,7 @@ xellos.ml: could not connect to host
xendo.net: did not receive HSTS header xendo.net: did not receive HSTS header
xenesisziarovky.sk: could not connect to host xenesisziarovky.sk: could not connect to host
xett.com: did not receive HSTS header xett.com: did not receive HSTS header
xf-liam.com: could not connect to host xf-liam.com: did not receive HSTS header
xfive.de: did not receive HSTS header xfive.de: did not receive HSTS header
xia100.xyz: could not connect to host xia100.xyz: could not connect to host
xiaody.me: could not connect to host xiaody.me: could not connect to host
@ -4274,6 +4304,7 @@ yippie.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_
yjsoft.me: did not receive HSTS header yjsoft.me: did not receive HSTS header
ynode.co: did not receive HSTS header ynode.co: did not receive HSTS header
ynsn.nl: did not receive HSTS header ynsn.nl: did not receive HSTS header
yntongji.com: did not receive HSTS header
yoga.is-an-engineer.com: could not connect to host yoga.is-an-engineer.com: could not connect to host
yokeepo.com: could not connect to host yokeepo.com: could not connect to host
yoloboatrentals.com: did not receive HSTS header yoloboatrentals.com: did not receive HSTS header
@ -4320,9 +4351,9 @@ zeytin.pro: could not connect to host
zh.search.yahoo.com: did not receive HSTS header zh.search.yahoo.com: did not receive HSTS header
zhaojin97.cn: did not receive HSTS header zhaojin97.cn: did not receive HSTS header
zhendingresources.com: max-age too low: 0 zhendingresources.com: max-age too low: 0
zihao.me: could not connect to host
zingarastore.com: could not connect to host
zirtue.io: could not connect to host zirtue.io: could not connect to host
ziyuanabc.xyz: could not connect to host
zkillboard.com: did not receive HSTS header
zking.ga: could not connect to host zking.ga: could not connect to host
zmy.im: could not connect to host zmy.im: could not connect to host
zocken.com: could not connect to host zocken.com: could not connect to host

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -251,10 +251,11 @@ ClientEngine.prototype = {
const allCommands = this._readCommands(); const allCommands = this._readCommands();
const clientCommands = allCommands[clientId] || []; const clientCommands = allCommands[clientId] || [];
if (hasDupeCommand(clientCommands, command)) { if (hasDupeCommand(clientCommands, command)) {
return; return false;
} }
allCommands[clientId] = clientCommands.concat(command); allCommands[clientId] = clientCommands.concat(command);
this._saveCommands(allCommands); this._saveCommands(allCommands);
return true;
}, },
_syncStartup: function _syncStartup() { _syncStartup: function _syncStartup() {
@ -477,7 +478,7 @@ ClientEngine.prototype = {
* @param args Array of arguments/data for command * @param args Array of arguments/data for command
* @param clientId Client to send command to * @param clientId Client to send command to
*/ */
_sendCommandToClient: function sendCommandToClient(command, args, clientId) { _sendCommandToClient: function sendCommandToClient(command, args, clientId, flowID = null) {
this._log.trace("Sending " + command + " to " + clientId); this._log.trace("Sending " + command + " to " + clientId);
let client = this._store._remoteClients[clientId]; let client = this._store._remoteClients[clientId];
@ -491,11 +492,21 @@ ClientEngine.prototype = {
let action = { let action = {
command: command, command: command,
args: args, args: args,
flowID: flowID || Utils.makeGUID(), // used for telemetry.
}; };
this._log.trace("Client " + clientId + " got a new action: " + [command, args]); if (this._addClientCommand(clientId, action)) {
this._addClientCommand(clientId, action); this._log.trace(`Client ${clientId} got a new action`, [command, args]);
this._tracker.addChangedID(clientId); this._tracker.addChangedID(clientId);
let deviceID;
try {
deviceID = this.service.identity.hashedDeviceID(clientId);
} catch (_) {}
this.service.recordTelemetryEvent("sendcommand", command, undefined,
{ flowID: action.flowID, deviceID });
} else {
this._log.trace(`Client ${clientId} got a duplicate action`, [command, args]);
}
}, },
/** /**
@ -515,9 +526,12 @@ ClientEngine.prototype = {
let URIsToDisplay = []; let URIsToDisplay = [];
// Process each command in order. // Process each command in order.
for (let rawCommand of commands) { for (let rawCommand of commands) {
let {command, args} = rawCommand; let {command, args, flowID} = rawCommand;
this._log.debug("Processing command: " + command + "(" + args + ")"); this._log.debug("Processing command: " + command + "(" + args + ")");
this.service.recordTelemetryEvent("processcommand", command, undefined,
{ flowID });
let engines = [args[0]]; let engines = [args[0]];
switch (command) { switch (command) {
case "resetAll": case "resetAll":
@ -570,8 +584,11 @@ ClientEngine.prototype = {
* @param clientId * @param clientId
* Client ID to send command to. If undefined, send to all remote * Client ID to send command to. If undefined, send to all remote
* clients. * clients.
* @param flowID
* A unique identifier used to track success for this operation across
* devices.
*/ */
sendCommand: function sendCommand(command, args, clientId) { sendCommand: function sendCommand(command, args, clientId, flowID = null) {
let commandData = this._commands[command]; let commandData = this._commands[command];
// Don't send commands that we don't know about. // Don't send commands that we don't know about.
if (!commandData) { if (!commandData) {
@ -586,11 +603,11 @@ ClientEngine.prototype = {
} }
if (clientId) { if (clientId) {
this._sendCommandToClient(command, args, clientId); this._sendCommandToClient(command, args, clientId, flowID);
} else { } else {
for (let [id, record] of Object.entries(this._store._remoteClients)) { for (let [id, record] of Object.entries(this._store._remoteClients)) {
if (!record.stale) { if (!record.stale) {
this._sendCommandToClient(command, args, id); this._sendCommandToClient(command, args, id, flowID);
} }
} }
} }

Просмотреть файл

@ -1750,6 +1750,10 @@ Sync11Service.prototype = {
return callback(null, result); return callback(null, result);
}); });
}, },
recordTelemetryEvent(object, method, value, extra = undefined) {
Svc.Obs.notify("weave:telemetry:event", { object, method, value, extra });
},
}; };
this.Service = new Sync11Service(); this.Service = new Sync11Service();

Просмотреть файл

@ -45,6 +45,8 @@ const TOPICS = [
"weave:engine:sync:uploaded", "weave:engine:sync:uploaded",
"weave:engine:validate:finish", "weave:engine:validate:finish",
"weave:engine:validate:error", "weave:engine:validate:error",
"weave:telemetry:event",
]; ];
const PING_FORMAT_VERSION = 1; const PING_FORMAT_VERSION = 1;
@ -127,6 +129,44 @@ function timeDeltaFrom(monotonicStartTime) {
return -1; return -1;
} }
// This function validates the payload of a telemetry "event" - this can be
// removed once there are APIs available for the telemetry modules to collect
// these events (bug 1329530) - but for now we simulate that planned API as
// best we can.
function validateTelemetryEvent(eventDetails) {
let { object, method, value, extra } = eventDetails;
// Do do basic validation of the params - everything except "extra" must
// be a string. method and object are required.
if (typeof method != "string" || typeof object != "string" ||
(value && typeof value != "string") ||
(extra && typeof extra != "object")) {
log.warn("Invalid event parameters - wrong types", eventDetails);
return false;
}
// length checks.
if (method.length > 20 || object.length > 20 ||
(value && value.length > 80)) {
log.warn("Invalid event parameters - wrong lengths", eventDetails);
return false;
}
// extra can be falsey, or an object with string names and values.
if (extra) {
if (Object.keys(extra).length > 10) {
log.warn("Invalid event parameters - too many extra keys", eventDetails);
return false;
}
for (let [ename, evalue] of Object.entries(extra)) {
if (typeof ename != "string" || ename.length > 15 ||
typeof evalue != "string" || evalue.length > 85) {
log.warn(`Invalid event parameters: extra item "${ename} is invalid`, eventDetails);
return false;
}
}
}
return true;
}
class EngineRecord { class EngineRecord {
constructor(name) { constructor(name) {
// startTime is in ms from process start, but is monotonic (unlike Date.now()) // startTime is in ms from process start, but is monotonic (unlike Date.now())
@ -416,6 +456,8 @@ class SyncTelemetryImpl {
this.payloads = []; this.payloads = [];
this.discarded = 0; this.discarded = 0;
this.events = [];
this.maxEventsCount = Svc.Prefs.get("telemetry.maxEventsCount", 1000);
this.maxPayloadCount = Svc.Prefs.get("telemetry.maxPayloadCount"); this.maxPayloadCount = Svc.Prefs.get("telemetry.maxPayloadCount");
this.submissionInterval = Svc.Prefs.get("telemetry.submissionInterval") * 1000; this.submissionInterval = Svc.Prefs.get("telemetry.submissionInterval") * 1000;
this.lastSubmissionTime = Telemetry.msSinceProcessStart(); this.lastSubmissionTime = Telemetry.msSinceProcessStart();
@ -431,6 +473,7 @@ class SyncTelemetryImpl {
syncs: this.payloads.slice(), syncs: this.payloads.slice(),
uid: this.lastUID, uid: this.lastUID,
deviceID: this.lastDeviceID, deviceID: this.lastDeviceID,
events: this.events.length == 0 ? undefined : this.events,
}; };
} }
@ -440,6 +483,7 @@ class SyncTelemetryImpl {
let result = this.getPingJSON(reason); let result = this.getPingJSON(reason);
this.payloads = []; this.payloads = [];
this.discarded = 0; this.discarded = 0;
this.events = [];
this.submit(result); this.submit(result);
} }
@ -530,6 +574,39 @@ class SyncTelemetryImpl {
} }
} }
_recordEvent(eventDetails) {
if (this.events.length >= this.maxEventsCount) {
log.warn("discarding event - already queued our maximum", eventDetails);
return;
}
if (!validateTelemetryEvent(eventDetails)) {
// we've already logged what the problem is...
return;
}
log.debug("recording event", eventDetails);
let { object, method, value, extra } = eventDetails;
let category = "sync";
let ts = Math.floor(tryGetMonotonicTimestamp());
// An event record is a simple array with at least 4 items.
let event = [ts, category, method, object];
// It may have up to 6 elements if |extra| is defined
if (value) {
event.push(value);
if (extra) {
event.push(extra);
}
} else {
if (extra) {
event.push(null); // a null for the empty value.
event.push(extra);
}
}
this.events.push(event);
}
observe(subject, topic, data) { observe(subject, topic, data) {
log.trace(`observed ${topic} ${data}`); log.trace(`observed ${topic} ${data}`);
@ -598,6 +675,10 @@ class SyncTelemetryImpl {
} }
break; break;
case "weave:telemetry:event":
this._recordEvent(subject);
break;
default: default:
log.warn(`unexpected observer topic ${topic}`); log.warn(`unexpected observer topic ${topic}`);
break; break;

Просмотреть файл

@ -276,7 +276,15 @@ function assert_valid_ping(record) {
// no Syncs - either of them not being true might be an actual problem) // no Syncs - either of them not being true might be an actual problem)
if (record && (record.why != "shutdown" || record.syncs.length != 0)) { if (record && (record.why != "shutdown" || record.syncs.length != 0)) {
if (!SyncPingValidator(record)) { if (!SyncPingValidator(record)) {
deepEqual([], SyncPingValidator.errors, "Sync telemetry ping validation failed"); if (SyncPingValidator.errors.length) {
// validation failed - using a simple |deepEqual([], errors)| tends to
// truncate the validation errors in the output and doesn't show that
// the ping actually was - so be helpful.
do_print("telemetry ping validation failed");
do_print("the ping data is: " + JSON.stringify(record, undefined, 2));
do_print("the validation failures: " + JSON.stringify(SyncPingValidator.errors, undefined, 2));
ok(false, "Sync telemetry ping validation failed - see output above for details");
}
} }
equal(record.version, 1); equal(record.version, 1);
record.syncs.forEach(p => { record.syncs.forEach(p => {

Просмотреть файл

@ -20,6 +20,11 @@
"type": "array", "type": "array",
"minItems": 1, "minItems": 1,
"items": { "$ref": "#/definitions/payload" } "items": { "$ref": "#/definitions/payload" }
},
"events": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#/definitions/event" }
} }
}, },
"definitions": { "definitions": {
@ -128,6 +133,11 @@
"failed": { "type": "integer", "minimum": 1 } "failed": { "type": "integer", "minimum": 1 }
} }
}, },
"event": {
"type": "array",
"minItems": 4,
"maxItems": 6
},
"error": { "error": {
"oneOf": [ "oneOf": [
{ "$ref": "#/definitions/httpError" }, { "$ref": "#/definitions/httpError" },

Просмотреть файл

@ -389,6 +389,7 @@ add_test(function test_send_command() {
equal(command.command, action); equal(command.command, action);
equal(command.args.length, 2); equal(command.args.length, 2);
deepEqual(command.args, args); deepEqual(command.args, args);
ok(command.flowID);
notEqual(tracker.changedIDs[remoteId], undefined); notEqual(tracker.changedIDs[remoteId], undefined);
@ -632,12 +633,12 @@ add_task(async function test_filter_duplicate_names() {
let collection = server.getCollection("foo", "clients"); let collection = server.getCollection("foo", "clients");
let recentPayload = JSON.parse(JSON.parse(collection.payload(recentID)).ciphertext); let recentPayload = JSON.parse(JSON.parse(collection.payload(recentID)).ciphertext);
deepEqual(recentPayload.commands, [{ command: "logout", args: [] }], compareCommands(recentPayload.commands, [{ command: "logout", args: [] }],
"Should send commands to the recent client"); "Should send commands to the recent client");
let oldPayload = JSON.parse(JSON.parse(collection.payload(oldID)).ciphertext); let oldPayload = JSON.parse(JSON.parse(collection.payload(oldID)).ciphertext);
deepEqual(oldPayload.commands, [{ command: "logout", args: [] }], compareCommands(oldPayload.commands, [{ command: "logout", args: [] }],
"Should send commands to the week-old client"); "Should send commands to the week-old client");
let dupePayload = JSON.parse(JSON.parse(collection.payload(dupeID)).ciphertext); let dupePayload = JSON.parse(JSON.parse(collection.payload(dupeID)).ciphertext);
deepEqual(dupePayload.commands, [], deepEqual(dupePayload.commands, [],
@ -914,6 +915,7 @@ add_task(async function test_merge_commands() {
commands: [{ commands: [{
command: "displayURI", command: "displayURI",
args: ["https://example.com", engine.localID, "Yak Herders Anonymous"], args: ["https://example.com", engine.localID, "Yak Herders Anonymous"],
flowID: Utils.makeGUID(),
}], }],
version: "48", version: "48",
protocols: ["1.5"], protocols: ["1.5"],
@ -927,6 +929,7 @@ add_task(async function test_merge_commands() {
commands: [{ commands: [{
command: "logout", command: "logout",
args: [], args: [],
flowID: Utils.makeGUID(),
}], }],
version: "48", version: "48",
protocols: ["1.5"], protocols: ["1.5"],
@ -945,7 +948,7 @@ add_task(async function test_merge_commands() {
let collection = server.getCollection("foo", "clients"); let collection = server.getCollection("foo", "clients");
let desktopPayload = JSON.parse(JSON.parse(collection.payload(desktopID)).ciphertext); let desktopPayload = JSON.parse(JSON.parse(collection.payload(desktopID)).ciphertext);
deepEqual(desktopPayload.commands, [{ compareCommands(desktopPayload.commands, [{
command: "displayURI", command: "displayURI",
args: ["https://example.com", engine.localID, "Yak Herders Anonymous"], args: ["https://example.com", engine.localID, "Yak Herders Anonymous"],
}, { }, {
@ -954,8 +957,8 @@ add_task(async function test_merge_commands() {
}], "Should send the logout command to the desktop client"); }], "Should send the logout command to the desktop client");
let mobilePayload = JSON.parse(JSON.parse(collection.payload(mobileID)).ciphertext); let mobilePayload = JSON.parse(JSON.parse(collection.payload(mobileID)).ciphertext);
deepEqual(mobilePayload.commands, [{ command: "logout", args: [] }], compareCommands(mobilePayload.commands, [{ command: "logout", args: [] }],
"Should not send a duplicate logout to the mobile client"); "Should not send a duplicate logout to the mobile client");
} finally { } finally {
Svc.Prefs.resetBranch(""); Svc.Prefs.resetBranch("");
Service.recordManager.clearCache(); Service.recordManager.clearCache();
@ -1022,7 +1025,7 @@ add_task(async function test_duplicate_remote_commands() {
let collection = server.getCollection("foo", "clients"); let collection = server.getCollection("foo", "clients");
let desktopPayload = JSON.parse(JSON.parse(collection.payload(desktopID)).ciphertext); let desktopPayload = JSON.parse(JSON.parse(collection.payload(desktopID)).ciphertext);
deepEqual(desktopPayload.commands, [{ compareCommands(desktopPayload.commands, [{
command: "displayURI", command: "displayURI",
args: ["https://foobar.com", engine.localID, "Foo bar!"], args: ["https://foobar.com", engine.localID, "Foo bar!"],
}], "Should only send the second command to the desktop client"); }], "Should only send the second command to the desktop client");
@ -1062,7 +1065,9 @@ add_task(async function test_upload_after_reboot() {
name: "Device B", name: "Device B",
type: "desktop", type: "desktop",
commands: [{ commands: [{
command: "displayURI", args: ["https://deviceclink.com", deviceCID, "Device C link"] command: "displayURI",
args: ["https://deviceclink.com", deviceCID, "Device C link"],
flowID: Utils.makeGUID(),
}], }],
version: "48", version: "48",
protocols: ["1.5"], protocols: ["1.5"],
@ -1092,7 +1097,7 @@ add_task(async function test_upload_after_reboot() {
let collection = server.getCollection("foo", "clients"); let collection = server.getCollection("foo", "clients");
let deviceBPayload = JSON.parse(JSON.parse(collection.payload(deviceBID)).ciphertext); let deviceBPayload = JSON.parse(JSON.parse(collection.payload(deviceBID)).ciphertext);
deepEqual(deviceBPayload.commands, [{ compareCommands(deviceBPayload.commands, [{
command: "displayURI", args: ["https://deviceclink.com", deviceCID, "Device C link"] command: "displayURI", args: ["https://deviceclink.com", deviceCID, "Device C link"]
}], "Should be the same because the upload failed"); }], "Should be the same because the upload failed");
@ -1113,7 +1118,7 @@ add_task(async function test_upload_after_reboot() {
engine._sync(); engine._sync();
deviceBPayload = JSON.parse(JSON.parse(collection.payload(deviceBID)).ciphertext); deviceBPayload = JSON.parse(JSON.parse(collection.payload(deviceBID)).ciphertext);
deepEqual(deviceBPayload.commands, [{ compareCommands(deviceBPayload.commands, [{
command: "displayURI", command: "displayURI",
args: ["https://example.com", engine.localID, "Yak Herders Anonymous"], args: ["https://example.com", engine.localID, "Yak Herders Anonymous"],
}], "Should only had written our outgoing command"); }], "Should only had written our outgoing command");
@ -1153,10 +1158,14 @@ add_task(async function test_keep_cleared_commands_after_reboot() {
name: "Device A", name: "Device A",
type: "desktop", type: "desktop",
commands: [{ commands: [{
command: "displayURI", args: ["https://deviceblink.com", deviceBID, "Device B link"] command: "displayURI",
args: ["https://deviceblink.com", deviceBID, "Device B link"],
flowID: Utils.makeGUID(),
}, },
{ {
command: "displayURI", args: ["https://deviceclink.com", deviceCID, "Device C link"] command: "displayURI",
args: ["https://deviceclink.com", deviceCID, "Device C link"],
flowID: Utils.makeGUID(),
}], }],
version: "48", version: "48",
protocols: ["1.5"], protocols: ["1.5"],
@ -1195,7 +1204,7 @@ add_task(async function test_keep_cleared_commands_after_reboot() {
equal(commandsProcessed, 2, "We processed 2 commands"); equal(commandsProcessed, 2, "We processed 2 commands");
let localRemoteRecord = JSON.parse(JSON.parse(collection.payload(engine.localID)).ciphertext); let localRemoteRecord = JSON.parse(JSON.parse(collection.payload(engine.localID)).ciphertext);
deepEqual(localRemoteRecord.commands, [{ compareCommands(localRemoteRecord.commands, [{
command: "displayURI", args: ["https://deviceblink.com", deviceBID, "Device B link"] command: "displayURI", args: ["https://deviceblink.com", deviceBID, "Device B link"]
}, },
{ {
@ -1208,13 +1217,19 @@ add_task(async function test_keep_cleared_commands_after_reboot() {
name: "Device A", name: "Device A",
type: "desktop", type: "desktop",
commands: [{ commands: [{
command: "displayURI", args: ["https://deviceblink.com", deviceBID, "Device B link"] command: "displayURI",
args: ["https://deviceblink.com", deviceBID, "Device B link"],
flowID: Utils.makeGUID(),
}, },
{ {
command: "displayURI", args: ["https://deviceclink.com", deviceCID, "Device C link"] command: "displayURI",
args: ["https://deviceclink.com", deviceCID, "Device C link"],
flowID: Utils.makeGUID(),
}, },
{ {
command: "displayURI", args: ["https://deviceclink2.com", deviceCID, "Device C link 2"] command: "displayURI",
args: ["https://deviceclink2.com", deviceCID, "Device C link 2"],
flowID: Utils.makeGUID(),
}], }],
version: "48", version: "48",
protocols: ["1.5"], protocols: ["1.5"],
@ -1302,7 +1317,7 @@ add_task(async function test_deleted_commands() {
"Should not reupload deleted clients"); "Should not reupload deleted clients");
let activePayload = JSON.parse(JSON.parse(collection.payload(activeID)).ciphertext); let activePayload = JSON.parse(JSON.parse(collection.payload(activeID)).ciphertext);
deepEqual(activePayload.commands, [{ command: "logout", args: [] }], compareCommands(activePayload.commands, [{ command: "logout", args: [] }],
"Should send the command to the active client"); "Should send the command to the active client");
} finally { } finally {
Svc.Prefs.resetBranch(""); Svc.Prefs.resetBranch("");
@ -1346,18 +1361,19 @@ add_task(async function test_send_uri_ack() {
ourPayload.commands = [{ ourPayload.commands = [{
command: "displayURI", command: "displayURI",
args: ["https://example.com", fakeSenderID, "Yak Herders Anonymous"], args: ["https://example.com", fakeSenderID, "Yak Herders Anonymous"],
flowID: Utils.makeGUID(),
}]; }];
server.insertWBO("foo", "clients", new ServerWBO(engine.localID, encryptPayload(ourPayload), now)); server.insertWBO("foo", "clients", new ServerWBO(engine.localID, encryptPayload(ourPayload), now));
_("Sync again"); _("Sync again");
engine._sync(); engine._sync();
deepEqual(engine.localCommands, [{ compareCommands(engine.localCommands, [{
command: "displayURI", command: "displayURI",
args: ["https://example.com", fakeSenderID, "Yak Herders Anonymous"], args: ["https://example.com", fakeSenderID, "Yak Herders Anonymous"],
}], "Should receive incoming URI"); }], "Should receive incoming URI");
ok(engine.processIncomingCommands(), "Should process incoming commands"); ok(engine.processIncomingCommands(), "Should process incoming commands");
const clearedCommands = engine._readCommands()[engine.localID]; const clearedCommands = engine._readCommands()[engine.localID];
deepEqual(clearedCommands, [{ compareCommands(clearedCommands, [{
command: "displayURI", command: "displayURI",
args: ["https://example.com", fakeSenderID, "Yak Herders Anonymous"], args: ["https://example.com", fakeSenderID, "Yak Herders Anonymous"],
}], "Should mark the commands as cleared after processing"); }], "Should mark the commands as cleared after processing");

Просмотреть файл

@ -565,4 +565,92 @@ add_task(async function test_no_foreign_engines_in_success_ping() {
Service.engineManager.unregister(engine); Service.engineManager.unregister(engine);
await cleanAndGo(engine, server); await cleanAndGo(engine, server);
} }
}); });
add_task(async function test_events() {
Service.engineManager.register(BogusEngine);
let engine = Service.engineManager.get("bogus");
engine.enabled = true;
let server = serverForUsers({"foo": "password"}, {
meta: {global: {engines: {bogus: {version: engine.version, syncID: engine.syncID}}}},
steam: {}
});
await SyncTestingInfrastructure(server);
try {
Service.recordTelemetryEvent("object", "method", "value", { foo: "bar" });
let ping = await wait_for_ping(() => Service.sync(), true, true);
equal(ping.events.length, 1);
let [timestamp, category, method, object, value, extra] = ping.events[0];
ok((typeof timestamp == "number") && timestamp > 0); // timestamp.
equal(category, "sync");
equal(method, "method");
equal(object, "object");
equal(value, "value");
deepEqual(extra, { foo: "bar" });
// Test with optional values.
Service.recordTelemetryEvent("object", "method");
ping = await wait_for_ping(() => Service.sync(), false, true);
equal(ping.events.length, 1);
equal(ping.events[0].length, 4);
Service.recordTelemetryEvent("object", "method", "extra");
ping = await wait_for_ping(() => Service.sync(), false, true);
equal(ping.events.length, 1);
equal(ping.events[0].length, 5);
Service.recordTelemetryEvent("object", "method", undefined, { foo: "bar" });
ping = await wait_for_ping(() => Service.sync(), false, true);
equal(ping.events.length, 1);
equal(ping.events[0].length, 6);
[timestamp, category, method, object, value, extra] = ping.events[0];
equal(value, null);
} finally {
Service.engineManager.unregister(engine);
await cleanAndGo(engine, server);
}
});
add_task(async function test_invalid_events() {
Service.engineManager.register(BogusEngine);
let engine = Service.engineManager.get("bogus");
engine.enabled = true;
let server = serverForUsers({"foo": "password"}, {
meta: {global: {engines: {bogus: {version: engine.version, syncID: engine.syncID}}}},
steam: {}
});
async function checkNotRecorded(...args) {
Service.recordTelemetryEvent.call(args);
let ping = await wait_for_ping(() => Service.sync(), false, true);
equal(ping.events, undefined);
}
await SyncTestingInfrastructure(server);
try {
let long21 = "l".repeat(21);
let long81 = "l".repeat(81);
let long86 = "l".repeat(86);
await checkNotRecorded("object");
await checkNotRecorded("object", 2);
await checkNotRecorded(2, "method");
await checkNotRecorded("object", "method", 2);
await checkNotRecorded("object", "method", "value", 2);
await checkNotRecorded("object", "method", "value", { foo: 2 });
await checkNotRecorded(long21, "method", "value");
await checkNotRecorded("object", long21, "value");
await checkNotRecorded("object", "method", long81);
let badextra = {};
badextra[long21] = "x";
await checkNotRecorded("object", "method", "value", badextra);
badextra = { "x": long86 };
await checkNotRecorded("object", "method", "value", badextra);
for (let i = 0; i < 10; i++) {
badextra["name" + i] = "x";
}
await checkNotRecorded("object", "method", "value", badextra);
} finally {
Service.engineManager.unregister(engine);
await cleanAndGo(engine, server);
}
});

Просмотреть файл

@ -67,7 +67,7 @@ stylo-tests:
- cppunit - cppunit
- crashtest - crashtest
- reftest-stylo - reftest-stylo
- mochitest-stylo - mochitest-style
ccov-code-coverage-tests: ccov-code-coverage-tests:
- mochitest - mochitest

Просмотреть файл

@ -770,9 +770,9 @@ mochitest-webgl:
extra-options: extra-options:
- --mochitest-suite=mochitest-gl - --mochitest-suite=mochitest-gl
mochitest-stylo: mochitest-style:
description: "Mochitest run for Stylo" description: "Mochitest plain run for style system"
suite: mochitest/mochitest-stylo suite: mochitest/mochitest-style
treeherder-symbol: tc-M(s) treeherder-symbol: tc-M(s)
loopback-video: true loopback-video: true
e10s: false e10s: false
@ -785,7 +785,7 @@ mochitest-stylo:
- unittests/linux_unittest.py - unittests/linux_unittest.py
- remove_executables.py - remove_executables.py
extra-options: extra-options:
- --mochitest-suite=mochitest-stylo - --mochitest-suite=mochitest-style
reftest: reftest:
description: "Reftest run" description: "Reftest run"

Просмотреть файл

@ -203,7 +203,7 @@ config = {
"jetpack-package-clipboard": ["--flavor=jetpack-package", "--subsuite=clipboard"], "jetpack-package-clipboard": ["--flavor=jetpack-package", "--subsuite=clipboard"],
"jetpack-addon": ["--flavor=jetpack-addon"], "jetpack-addon": ["--flavor=jetpack-addon"],
"a11y": ["--flavor=a11y"], "a11y": ["--flavor=a11y"],
"mochitest-stylo": ["--disable-e10s", "--tag=stylo"], "mochitest-style": ["--disable-e10s", "layout/style/test"],
}, },
# local reftest suites # local reftest suites
"all_reftest_suites": { "all_reftest_suites": {

Просмотреть файл

@ -97,7 +97,10 @@ Structure:
} }
} }
] ]
}] }],
events: [
event_array // See events below,
]
} }
} }
@ -180,3 +183,42 @@ syncs.devices
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
The list of remote devices associated with this account, as reported by the clients collection. The ID of each device is hashed using the same algorithm as the local id. The list of remote devices associated with this account, as reported by the clients collection. The ID of each device is hashed using the same algorithm as the local id.
Events in the "sync" ping
=========================
The sync ping includes events in the same format as they are included in the
main ping. The documentation for these events will land in bug 1302666.
Every event recorded in this ping will have a category of ``sync``. The following
events are defined, categorized by the event method.
sendcommand
-----------
Records that Sync wrote a remote "command" to another client. These commands
cause that other client to take some action, such as resetting Sync on that
client, or opening a new URL.
- object: The specific command being written.
- value: Not used (ie, ``undefined``)
- extra: An object with the following attributes:
- deviceID: A GUID which identifies the device the command is being sent to.
- flowID: A GUID which uniquely identifies this command invocation.
processcommand
--------------
Records that Sync processed a remote "command" previously sent by another
client. This is logically the "other end" of ``sendcommand``.
- object: The specific command being processed.
- value: Not used (ie, ``undefined``)
- extra: An object with the following attributes:
- deviceID: A GUID which identifies the device the command is being sent to.
- flowID: A GUID which uniquely identifies this command invocation. The value
for this GUID will be the same as the flowID sent to the client via
``sendcommand``.

Просмотреть файл

@ -246,14 +246,19 @@ static inline bool profiler_in_privacy_mode() { return false; }
static inline void profiler_log(const char *str) {} static inline void profiler_log(const char *str) {}
static inline void profiler_log(const char *fmt, va_list args) {} static inline void profiler_log(const char *fmt, va_list args) {}
namespace mozilla {
class AutoProfilerRegister final MOZ_STACK_CLASS class AutoProfilerRegister final MOZ_STACK_CLASS
{ {
AutoProfilerRegister(const char* aName) {} public:
explicit AutoProfilerRegister(const char* aName) {}
private: private:
AutoProfilerRegister(const AutoProfilerRegister&) = delete; AutoProfilerRegister(const AutoProfilerRegister&) = delete;
AutoProfilerRegister& operator=(const AutoProfilerRegister&) = delete; AutoProfilerRegister& operator=(const AutoProfilerRegister&) = delete;
}; };
} // namespace mozilla
#else #else
#include "GeckoProfilerImpl.h" #include "GeckoProfilerImpl.h"

Просмотреть файл

@ -1813,12 +1813,18 @@ moz_gtk_menu_item_paint(WidgetNodeType widget, cairo_t *cr, GdkRectangle* rect,
GtkWidgetState* state, GtkTextDirection direction) GtkWidgetState* state, GtkTextDirection direction)
{ {
gint x, y, w, h; gint x, y, w, h;
guint minorVersion = gtk_get_minor_version();
GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
// GTK versions prior to 3.8 render the background and frame only when not
// a separator and in hover prelight.
if (minorVersion < 8 && (widget == MOZ_GTK_MENUSEPARATOR ||
!(state_flags & GTK_STATE_FLAG_PRELIGHT)))
return MOZ_GTK_SUCCESS;
GtkStyleContext* style = ClaimStyleContext(widget, direction, state_flags); GtkStyleContext* style = ClaimStyleContext(widget, direction, state_flags);
bool pre_3_6 = gtk_check_version(3, 6, 0) != nullptr; if (minorVersion < 6) {
if (pre_3_6) {
// GTK+ 3.4 saves the style context and adds the menubar class to // GTK+ 3.4 saves the style context and adds the menubar class to
// menubar children, but does each of these only when drawing, not // menubar children, but does each of these only when drawing, not
// during layout. // during layout.
@ -1836,7 +1842,7 @@ moz_gtk_menu_item_paint(WidgetNodeType widget, cairo_t *cr, GdkRectangle* rect,
gtk_render_background(style, cr, x, y, w, h); gtk_render_background(style, cr, x, y, w, h);
gtk_render_frame(style, cr, x, y, w, h); gtk_render_frame(style, cr, x, y, w, h);
if (pre_3_6) { if (minorVersion < 6) {
gtk_style_context_restore(style); gtk_style_context_restore(style);
} }
ReleaseStyleContext(style); ReleaseStyleContext(style);