зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central to mozilla-inbound
This commit is contained in:
Коммит
06c0537572
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче