зеркало из https://github.com/mozilla/gecko-dev.git
Merge m-c to autoland, a=merge
MozReview-Commit-ID: AcDLWqQhcBe
This commit is contained in:
Коммит
1d6765414b
|
@ -1722,7 +1722,7 @@
|
|||
</emItem>
|
||||
<emItem blockID="d33f6d48-a555-49dd-96ff-8d75473403a8" id="mozilla_cc2@internetdownloadmanager.com">
|
||||
<prefs/>
|
||||
<versionRange minVersion="0" maxVersion="6.26.11" severity="1">
|
||||
<versionRange minVersion="0" maxVersion="6.26.11" severity="3">
|
||||
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
|
||||
<versionRange maxVersion="*" minVersion="53.0a1"/>
|
||||
</targetApplication>
|
||||
|
|
|
@ -142,6 +142,76 @@ add_task(function* testBadPermissions() {
|
|||
yield BrowserTestUtils.removeTab(tab1);
|
||||
});
|
||||
|
||||
add_task(function* testMatchDataURI() {
|
||||
const target = ExtensionTestUtils.loadExtension({
|
||||
files: {
|
||||
"page.html": `<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<script src="page.js"></script>
|
||||
<iframe id="inherited" src="data:text/html;charset=utf-8,inherited"></iframe>
|
||||
`,
|
||||
"page.js": function() {
|
||||
browser.test.onMessage.addListener((msg, url) => {
|
||||
window.location.href = url;
|
||||
});
|
||||
},
|
||||
},
|
||||
background() {
|
||||
browser.tabs.create({active: true, url: browser.runtime.getURL("page.html")});
|
||||
},
|
||||
});
|
||||
|
||||
const scripts = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
permissions: ["<all_urls>", "webNavigation"],
|
||||
},
|
||||
background() {
|
||||
browser.webNavigation.onCompleted.addListener(({url, frameId}) => {
|
||||
browser.test.log(`Document loading complete: ${url}`);
|
||||
if (frameId === 0) {
|
||||
browser.test.sendMessage("tab-ready", url);
|
||||
}
|
||||
});
|
||||
|
||||
browser.test.onMessage.addListener(async msg => {
|
||||
browser.test.assertRejects(
|
||||
browser.tabs.executeScript({
|
||||
code: "location.href;",
|
||||
allFrames: true,
|
||||
}),
|
||||
/No window matching/,
|
||||
"Should not execute in `data:` frame");
|
||||
|
||||
browser.test.sendMessage("done");
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
yield scripts.startup();
|
||||
yield target.startup();
|
||||
|
||||
// Test extension page with a data: iframe.
|
||||
const page = yield scripts.awaitMessage("tab-ready");
|
||||
ok(page.endsWith("page.html"), "Extension page loaded into a tab");
|
||||
|
||||
scripts.sendMessage("execute");
|
||||
yield scripts.awaitMessage("done");
|
||||
|
||||
// Test extension tab navigated to a data: URI.
|
||||
const data = "data:text/html;charset=utf-8,also-inherits";
|
||||
target.sendMessage("navigate", data);
|
||||
|
||||
const url = yield scripts.awaitMessage("tab-ready");
|
||||
is(url, data, "Extension tab navigated to a data: URI");
|
||||
|
||||
scripts.sendMessage("execute");
|
||||
yield scripts.awaitMessage("done");
|
||||
|
||||
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
yield scripts.unload();
|
||||
yield target.unload();
|
||||
});
|
||||
|
||||
add_task(function* testBadURL() {
|
||||
async function background() {
|
||||
let promises = [
|
||||
|
|
|
@ -298,6 +298,10 @@ BoxModel.prototype = {
|
|||
}
|
||||
}
|
||||
|
||||
if (property.substring(0, 9) == "position-") {
|
||||
properties[0].name = property.substring(9);
|
||||
}
|
||||
|
||||
session.setProperties(properties).catch(e => console.error(e));
|
||||
},
|
||||
done: (value, commit) => {
|
||||
|
|
|
@ -83,6 +83,15 @@ module.exports = createClass({
|
|||
return value;
|
||||
},
|
||||
|
||||
getPositionValue(property) {
|
||||
let { layout } = this.props.boxModel;
|
||||
|
||||
if (layout.position === "static") {
|
||||
return "-";
|
||||
}
|
||||
return layout[property] ? parseFloat(layout[property]) : "-";
|
||||
},
|
||||
|
||||
onHighlightMouseOver(event) {
|
||||
let region = event.target.getAttribute("data-box");
|
||||
if (!region) {
|
||||
|
@ -99,7 +108,7 @@ module.exports = createClass({
|
|||
render() {
|
||||
let { boxModel, onShowBoxModelEditor } = this.props;
|
||||
let { layout } = boxModel;
|
||||
let { height, width } = layout;
|
||||
let { height, width, position } = layout;
|
||||
|
||||
let borderTop = this.getBorderOrPaddingValue("border-top-width");
|
||||
let borderRight = this.getBorderOrPaddingValue("border-right-width");
|
||||
|
@ -111,6 +120,12 @@ module.exports = createClass({
|
|||
let paddingBottom = this.getBorderOrPaddingValue("padding-bottom");
|
||||
let paddingLeft = this.getBorderOrPaddingValue("padding-left");
|
||||
|
||||
let displayPosition = layout.position && layout.position != "static";
|
||||
let positionTop = this.getPositionValue("top");
|
||||
let positionRight = this.getPositionValue("right");
|
||||
let positionBottom = this.getPositionValue("bottom");
|
||||
let positionLeft = this.getPositionValue("left");
|
||||
|
||||
let marginTop = this.getMarginValue("margin-top", "top");
|
||||
let marginRight = this.getMarginValue("margin-right", "right");
|
||||
let marginBottom = this.getMarginValue("margin-bottom", "bottom");
|
||||
|
@ -125,56 +140,112 @@ module.exports = createClass({
|
|||
onMouseOver: this.onHighlightMouseOver,
|
||||
onMouseOut: this.props.onHideBoxModelHighlighter,
|
||||
},
|
||||
dom.span(
|
||||
{
|
||||
className: "boxmodel-legend",
|
||||
"data-box": "margin",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.margin"),
|
||||
},
|
||||
BOXMODEL_L10N.getStr("boxmodel.margin")
|
||||
),
|
||||
displayPosition ?
|
||||
dom.span(
|
||||
{
|
||||
className: "boxmodel-legend",
|
||||
"data-box": "position",
|
||||
title: BOXMODEL_L10N.getFormatStr("boxmodel.position", position),
|
||||
},
|
||||
BOXMODEL_L10N.getFormatStr("boxmodel.position", position)
|
||||
)
|
||||
:
|
||||
null,
|
||||
dom.div(
|
||||
{
|
||||
className: "boxmodel-margins",
|
||||
"data-box": "margin",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.margin"),
|
||||
className: "boxmodel-box"
|
||||
},
|
||||
dom.span(
|
||||
{
|
||||
className: "boxmodel-legend",
|
||||
"data-box": "border",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.border"),
|
||||
"data-box": "margin",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.margin"),
|
||||
},
|
||||
BOXMODEL_L10N.getStr("boxmodel.border")
|
||||
BOXMODEL_L10N.getStr("boxmodel.margin")
|
||||
),
|
||||
dom.div(
|
||||
{
|
||||
className: "boxmodel-borders",
|
||||
"data-box": "border",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.border"),
|
||||
className: "boxmodel-margins",
|
||||
"data-box": "margin",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.margin"),
|
||||
},
|
||||
dom.span(
|
||||
{
|
||||
className: "boxmodel-legend",
|
||||
"data-box": "padding",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.padding"),
|
||||
"data-box": "border",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.border"),
|
||||
},
|
||||
BOXMODEL_L10N.getStr("boxmodel.padding")
|
||||
BOXMODEL_L10N.getStr("boxmodel.border")
|
||||
),
|
||||
dom.div(
|
||||
{
|
||||
className: "boxmodel-paddings",
|
||||
"data-box": "padding",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.padding"),
|
||||
className: "boxmodel-borders",
|
||||
"data-box": "border",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.border"),
|
||||
},
|
||||
dom.div({
|
||||
className: "boxmodel-content",
|
||||
"data-box": "content",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.content"),
|
||||
})
|
||||
dom.span(
|
||||
{
|
||||
className: "boxmodel-legend",
|
||||
"data-box": "padding",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.padding"),
|
||||
},
|
||||
BOXMODEL_L10N.getStr("boxmodel.padding")
|
||||
),
|
||||
dom.div(
|
||||
{
|
||||
className: "boxmodel-paddings",
|
||||
"data-box": "padding",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.padding"),
|
||||
},
|
||||
dom.div({
|
||||
className: "boxmodel-content",
|
||||
"data-box": "content",
|
||||
title: BOXMODEL_L10N.getStr("boxmodel.content"),
|
||||
})
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
displayPosition ?
|
||||
BoxModelEditable({
|
||||
box: "position",
|
||||
direction: "top",
|
||||
property: "position-top",
|
||||
textContent: positionTop,
|
||||
onShowBoxModelEditor,
|
||||
})
|
||||
:
|
||||
null,
|
||||
displayPosition ?
|
||||
BoxModelEditable({
|
||||
box: "position",
|
||||
direction: "right",
|
||||
property: "position-right",
|
||||
textContent: positionRight,
|
||||
onShowBoxModelEditor,
|
||||
})
|
||||
:
|
||||
null,
|
||||
displayPosition ?
|
||||
BoxModelEditable({
|
||||
box: "position",
|
||||
direction: "bottom",
|
||||
property: "position-bottom",
|
||||
textContent: positionBottom,
|
||||
onShowBoxModelEditor,
|
||||
})
|
||||
:
|
||||
null,
|
||||
displayPosition ?
|
||||
BoxModelEditable({
|
||||
box: "position",
|
||||
direction: "left",
|
||||
property: "position-left",
|
||||
textContent: positionLeft,
|
||||
onShowBoxModelEditor,
|
||||
})
|
||||
:
|
||||
null,
|
||||
BoxModelEditable({
|
||||
box: "margin",
|
||||
direction: "top",
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
# displayed as a label.
|
||||
boxmodel.title=Box Model
|
||||
|
||||
# LOCALIZATION NOTE (boxmodel.position) This refers to the position in the box model and
|
||||
# might be displayed as a label or as a tooltip.
|
||||
boxmodel.position=position: %S
|
||||
|
||||
# LOCALIZATION NOTE (boxmodel.margin) This refers to the margin in the box model and
|
||||
# might be displayed as a label or as a tooltip.
|
||||
boxmodel.margin=margin
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
max-width: 400px;
|
||||
margin: 0px auto;
|
||||
padding: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
@ -30,14 +31,18 @@
|
|||
|
||||
.boxmodel-main {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
/* The regions are semi-transparent, so the white background is partly
|
||||
visible */
|
||||
background-color: white;
|
||||
color: var(--theme-selection-color);
|
||||
/* Make sure there is some space between the window's edges and the regions */
|
||||
margin: 14px 14px 4px 14px;
|
||||
width: calc(100% - 2 * 14px);
|
||||
min-width: 240px;
|
||||
}
|
||||
|
||||
.boxmodel-box {
|
||||
margin: 25px;
|
||||
/* The regions are semi-transparent, so the white background is partly
|
||||
visible */
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.boxmodel-margin,
|
||||
|
@ -83,12 +88,6 @@
|
|||
background-color: #87ceeb;
|
||||
}
|
||||
|
||||
.theme-firebug .boxmodel-main,
|
||||
.theme-firebug .boxmodel-borders,
|
||||
.theme-firebug .boxmodel-content {
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.theme-firebug .boxmodel-main,
|
||||
.theme-firebug .boxmodel-header {
|
||||
font-family: var(--proportional-font-family);
|
||||
|
@ -151,6 +150,8 @@
|
|||
}
|
||||
|
||||
.boxmodel-size,
|
||||
.boxmodel-position.boxmodel-left,
|
||||
.boxmodel-position.boxmodel-right,
|
||||
.boxmodel-margin.boxmodel-left,
|
||||
.boxmodel-margin.boxmodel-right,
|
||||
.boxmodel-border.boxmodel-left,
|
||||
|
@ -165,6 +166,10 @@
|
|||
width: calc(100% - 2px);
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-top,
|
||||
.boxmodel-position.boxmodel-bottom,
|
||||
.boxmodel-position.boxmodel-left,
|
||||
.boxmodel-position.boxmodel-right,
|
||||
.boxmodel-margin.boxmodel-right,
|
||||
.boxmodel-margin.boxmodel-left,
|
||||
.boxmodel-border.boxmodel-left,
|
||||
|
@ -175,27 +180,27 @@
|
|||
}
|
||||
|
||||
.boxmodel-padding.boxmodel-left {
|
||||
left: 35px;
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
.boxmodel-padding.boxmodel-right {
|
||||
right: 35px;
|
||||
right: 60px;
|
||||
}
|
||||
|
||||
.boxmodel-border.boxmodel-left {
|
||||
left: 16px;
|
||||
left: 41px;
|
||||
}
|
||||
|
||||
.boxmodel-border.boxmodel-right {
|
||||
right: 17px;
|
||||
right: 42px;
|
||||
}
|
||||
|
||||
.boxmodel-margin.boxmodel-right {
|
||||
right: 0;
|
||||
right: 25px;
|
||||
}
|
||||
|
||||
.boxmodel-margin.boxmodel-left {
|
||||
left: 0;
|
||||
left: 25px;
|
||||
}
|
||||
|
||||
.boxmodel-rotate.boxmodel-left:not(.boxmodel-editing) {
|
||||
|
@ -206,6 +211,57 @@
|
|||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.boxmodel-rotate.boxmodel-left.boxmodel-position:not(.boxmodel-editing) {
|
||||
border-top: none;
|
||||
border-right: 1px solid var(--theme-highlight-purple);
|
||||
width: auto;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.boxmodel-rotate.boxmodel-right.boxmodel-position:not(.boxmodel-editing) {
|
||||
border-top: none;
|
||||
border-left: 1px solid var(--theme-highlight-purple);
|
||||
width: auto;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
/* Box Model Positioning: contains top, right, bottom, left */
|
||||
|
||||
.boxmodel-position {
|
||||
color: var(--theme-highlight-purple);
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-top,
|
||||
.boxmodel-position.boxmodel-bottom {
|
||||
border-left: 1px solid var(--theme-highlight-purple);
|
||||
left: 49.5%;
|
||||
padding-left: 1px;
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-right,
|
||||
.boxmodel-position.boxmodel-left {
|
||||
border-top: 1px solid var(--theme-highlight-purple);
|
||||
line-height: 15px;
|
||||
top: 49.5%;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-top {
|
||||
top: -18px;
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-right {
|
||||
right: -9px;
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-bottom {
|
||||
bottom: -18px;
|
||||
}
|
||||
|
||||
.boxmodel-position.boxmodel-left {
|
||||
left: -9px;
|
||||
}
|
||||
|
||||
/* Legend: displayed inside regions */
|
||||
|
||||
.boxmodel-legend {
|
||||
|
@ -218,6 +274,11 @@
|
|||
color: var(--theme-highlight-blue);
|
||||
}
|
||||
|
||||
.boxmodel-legend[data-box="position"] {
|
||||
color: var(--theme-highlight-purple);
|
||||
margin: -18px -9px;
|
||||
}
|
||||
|
||||
/* Editable fields */
|
||||
|
||||
.boxmodel-editable {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -771,6 +771,10 @@ var PageStyleActor = protocol.ActorClassWithSpec(pageStyleSpec, {
|
|||
let style = CssLogic.getComputedStyle(node.rawNode);
|
||||
for (let prop of [
|
||||
"position",
|
||||
"top",
|
||||
"right",
|
||||
"bottom",
|
||||
"left",
|
||||
"margin-top",
|
||||
"margin-right",
|
||||
"margin-bottom",
|
||||
|
|
|
@ -86,5 +86,52 @@ IntlUtils::GetDisplayNames(const Sequence<nsString>& aLocales,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
IntlUtils::GetLocaleInfo(const Sequence<nsString>& aLocales,
|
||||
LocaleInfo& aResult, ErrorResult& aError)
|
||||
{
|
||||
MOZ_ASSERT(nsContentUtils::IsCallerChrome() ||
|
||||
nsContentUtils::IsCallerContentXBL());
|
||||
|
||||
nsCOMPtr<mozIMozIntl> mozIntl = do_GetService("@mozilla.org/mozintl;1");
|
||||
if (!mozIntl) {
|
||||
aError.Throw(NS_ERROR_UNEXPECTED);
|
||||
return;
|
||||
}
|
||||
|
||||
AutoJSAPI jsapi;
|
||||
if (!jsapi.Init(xpc::PrivilegedJunkScope())) {
|
||||
aError.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
JSContext* cx = jsapi.cx();
|
||||
|
||||
// Prepare parameter for getLocaleInfo().
|
||||
JS::Rooted<JS::Value> locales(cx);
|
||||
if (!ToJSValue(cx, aLocales, &locales)) {
|
||||
aError.StealExceptionFromJSContext(cx);
|
||||
return;
|
||||
}
|
||||
|
||||
// Now call the method.
|
||||
JS::Rooted<JS::Value> retVal(cx);
|
||||
nsresult rv = mozIntl->GetLocaleInfo(locales, &retVal);
|
||||
if (NS_FAILED(rv)) {
|
||||
aError.Throw(rv);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!retVal.isObject()) {
|
||||
aError.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Return the result as LocaleInfo.
|
||||
JSAutoCompartment ac(cx, &retVal.toObject());
|
||||
if (!aResult.Init(cx, retVal)) {
|
||||
aError.Throw(NS_ERROR_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
} // dom namespace
|
||||
} // mozilla namespace
|
||||
|
|
|
@ -36,6 +36,11 @@ public:
|
|||
mozilla::dom::DisplayNameResult& aResult,
|
||||
mozilla::ErrorResult& aError);
|
||||
|
||||
void
|
||||
GetLocaleInfo(const Sequence<nsString>& aLocales,
|
||||
mozilla::dom::LocaleInfo& aResult,
|
||||
mozilla::ErrorResult& aError);
|
||||
|
||||
private:
|
||||
~IntlUtils();
|
||||
|
||||
|
|
|
@ -1144,7 +1144,7 @@ bool
|
|||
ActivateOrDeactivateChild(TabParent* aParent, void* aArg)
|
||||
{
|
||||
bool active = static_cast<bool>(aArg);
|
||||
Unused << aParent->Manager()->AsContentParent()->SendParentActivated(aParent, active);
|
||||
Unused << aParent->Manager()->SendParentActivated(aParent, active);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -204,5 +204,26 @@ ContentBridgeChild::DeallocPFileDescriptorSetChild(PFileDescriptorSetChild* aAct
|
|||
return nsIContentChild::DeallocPFileDescriptorSetChild(aActor);
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult
|
||||
ContentBridgeChild::RecvActivate(PBrowserChild* aTab)
|
||||
{
|
||||
TabChild* tab = static_cast<TabChild*>(aTab);
|
||||
return tab->RecvActivate();
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult
|
||||
ContentBridgeChild::RecvDeactivate(PBrowserChild* aTab)
|
||||
{
|
||||
TabChild* tab = static_cast<TabChild*>(aTab);
|
||||
return tab->RecvDeactivate();
|
||||
}
|
||||
|
||||
mozilla::ipc::IPCResult
|
||||
ContentBridgeChild::RecvParentActivated(PBrowserChild* aTab, const bool& aActivated)
|
||||
{
|
||||
TabChild* tab = static_cast<TabChild*>(aTab);
|
||||
return tab->RecvParentActivated(aActivated);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -51,6 +51,13 @@ public:
|
|||
virtual mozilla::ipc::PChildToParentStreamChild*
|
||||
SendPChildToParentStreamConstructor(mozilla::ipc::PChildToParentStreamChild*) override;
|
||||
|
||||
virtual mozilla::ipc::IPCResult RecvActivate(PBrowserChild* aTab) override;
|
||||
|
||||
virtual mozilla::ipc::IPCResult RecvDeactivate(PBrowserChild* aTab) override;
|
||||
|
||||
virtual mozilla::ipc::IPCResult RecvParentActivated(PBrowserChild* aTab,
|
||||
const bool& aActivated) override;
|
||||
|
||||
FORWARD_SHMEM_ALLOCATOR_TO(PContentBridgeChild)
|
||||
|
||||
protected:
|
||||
|
|
|
@ -69,6 +69,22 @@ public:
|
|||
virtual mozilla::ipc::PParentToChildStreamParent*
|
||||
SendPParentToChildStreamConstructor(mozilla::ipc::PParentToChildStreamParent*) override;
|
||||
|
||||
virtual bool SendActivate(PBrowserParent* aTab) override
|
||||
{
|
||||
return PContentBridgeParent::SendActivate(aTab);
|
||||
}
|
||||
|
||||
virtual bool SendDeactivate(PBrowserParent* aTab) override
|
||||
{
|
||||
return PContentBridgeParent::SendDeactivate(aTab);
|
||||
}
|
||||
|
||||
virtual bool SendParentActivated(PBrowserParent* aTab,
|
||||
const bool& aActivated) override
|
||||
{
|
||||
return PContentBridgeParent::SendParentActivated(aTab, aActivated);
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual ~ContentBridgeParent();
|
||||
|
||||
|
|
|
@ -1966,9 +1966,12 @@ ContentParent::LaunchSubprocess(ProcessPriority aInitialPriority /* = PROCESS_PR
|
|||
extraArgs.push_back(idStr);
|
||||
extraArgs.push_back(IsForBrowser() ? "-isForBrowser" : "-notForBrowser");
|
||||
|
||||
std::stringstream boolPrefs;
|
||||
std::stringstream intPrefs;
|
||||
std::stringstream stringPrefs;
|
||||
char boolBuf[1024];
|
||||
char intBuf[1024];
|
||||
char strBuf[1024];
|
||||
nsFixedCString boolPrefs(boolBuf, 1024, 0);
|
||||
nsFixedCString intPrefs(intBuf, 1024, 0);
|
||||
nsFixedCString stringPrefs(strBuf, 1024, 0);
|
||||
|
||||
size_t prefsLen;
|
||||
ContentPrefs::GetContentPrefs(&prefsLen);
|
||||
|
@ -1977,14 +1980,15 @@ ContentParent::LaunchSubprocess(ProcessPriority aInitialPriority /* = PROCESS_PR
|
|||
MOZ_ASSERT(i == 0 || strcmp(ContentPrefs::GetContentPref(i), ContentPrefs::GetContentPref(i - 1)) > 0);
|
||||
switch (Preferences::GetType(ContentPrefs::GetContentPref(i))) {
|
||||
case nsIPrefBranch::PREF_INT:
|
||||
intPrefs << i << ':' << Preferences::GetInt(ContentPrefs::GetContentPref(i)) << '|';
|
||||
intPrefs.Append(nsPrintfCString("%u:%d|", i, Preferences::GetInt(ContentPrefs::GetContentPref(i))));
|
||||
break;
|
||||
case nsIPrefBranch::PREF_BOOL:
|
||||
boolPrefs << i << ':' << Preferences::GetBool(ContentPrefs::GetContentPref(i)) << '|';
|
||||
boolPrefs.Append(nsPrintfCString("%u:%d|", i, Preferences::GetBool(ContentPrefs::GetContentPref(i))));
|
||||
break;
|
||||
case nsIPrefBranch::PREF_STRING: {
|
||||
std::string value(Preferences::GetCString(ContentPrefs::GetContentPref(i)).get());
|
||||
stringPrefs << i << ':' << value.length() << ':' << value << '|';
|
||||
nsAdoptingCString value(Preferences::GetCString(ContentPrefs::GetContentPref(i)));
|
||||
stringPrefs.Append(nsPrintfCString("%u:%d;%s|", i, value.Length(), value.get()));
|
||||
|
||||
}
|
||||
break;
|
||||
case nsIPrefBranch::PREF_INVALID:
|
||||
|
@ -1996,11 +2000,11 @@ ContentParent::LaunchSubprocess(ProcessPriority aInitialPriority /* = PROCESS_PR
|
|||
}
|
||||
|
||||
extraArgs.push_back("-intPrefs");
|
||||
extraArgs.push_back(intPrefs.str());
|
||||
extraArgs.push_back(intPrefs.get());
|
||||
extraArgs.push_back("-boolPrefs");
|
||||
extraArgs.push_back(boolPrefs.str());
|
||||
extraArgs.push_back(boolPrefs.get());
|
||||
extraArgs.push_back("-stringPrefs");
|
||||
extraArgs.push_back(stringPrefs.str());
|
||||
extraArgs.push_back(stringPrefs.get());
|
||||
|
||||
if (gSafeMode) {
|
||||
extraArgs.push_back("-safeMode");
|
||||
|
|
|
@ -611,6 +611,23 @@ public:
|
|||
const Principal& aPrincipal,
|
||||
const bool& aUseTrackingProtection,
|
||||
bool* aSuccess) override;
|
||||
|
||||
virtual bool SendActivate(PBrowserParent* aTab) override
|
||||
{
|
||||
return PContentParent::SendActivate(aTab);
|
||||
}
|
||||
|
||||
virtual bool SendDeactivate(PBrowserParent* aTab) override
|
||||
{
|
||||
return PContentParent::SendDeactivate(aTab);
|
||||
}
|
||||
|
||||
virtual bool SendParentActivated(PBrowserParent* aTab,
|
||||
const bool& aActivated) override
|
||||
{
|
||||
return PContentParent::SendParentActivated(aTab, aActivated);
|
||||
}
|
||||
|
||||
virtual bool
|
||||
DeallocPURLClassifierParent(PURLClassifierParent* aActor) override;
|
||||
|
||||
|
|
|
@ -160,8 +160,10 @@ ContentProcess::Init(int aArgc, char* aArgv[])
|
|||
char* str = aArgv[idx + 1];
|
||||
while (*str) {
|
||||
int32_t index = strtol(str, &str, 10);
|
||||
MOZ_ASSERT(str[0] == ':');
|
||||
str++;
|
||||
MaybePrefValue value(PrefValue(static_cast<int32_t>(strtol(str, &str, 10))));
|
||||
MOZ_ASSERT(str[0] == '|');
|
||||
str++;
|
||||
PrefSetting pref(nsCString(ContentPrefs::GetContentPref(index)), value, MaybePrefValue());
|
||||
prefsArray.AppendElement(pref);
|
||||
|
@ -173,8 +175,10 @@ ContentProcess::Init(int aArgc, char* aArgv[])
|
|||
char* str = aArgv[idx + 1];
|
||||
while (*str) {
|
||||
int32_t index = strtol(str, &str, 10);
|
||||
MOZ_ASSERT(str[0] == ':');
|
||||
str++;
|
||||
MaybePrefValue value(PrefValue(!!strtol(str, &str, 10)));
|
||||
MOZ_ASSERT(str[0] == '|');
|
||||
str++;
|
||||
PrefSetting pref(nsCString(ContentPrefs::GetContentPref(index)), value, MaybePrefValue());
|
||||
prefsArray.AppendElement(pref);
|
||||
|
@ -186,13 +190,16 @@ ContentProcess::Init(int aArgc, char* aArgv[])
|
|||
char* str = aArgv[idx + 1];
|
||||
while (*str) {
|
||||
int32_t index = strtol(str, &str, 10);
|
||||
MOZ_ASSERT(str[0] == ':');
|
||||
str++;
|
||||
int32_t length = strtol(str, &str, 10);
|
||||
MOZ_ASSERT(str[0] == ';');
|
||||
str++;
|
||||
MaybePrefValue value(PrefValue(nsCString(str, length)));
|
||||
PrefSetting pref(nsCString(ContentPrefs::GetContentPref(index)), value, MaybePrefValue());
|
||||
prefsArray.AppendElement(pref);
|
||||
str += length + 1;
|
||||
MOZ_ASSERT(*(str - 1) == '|');
|
||||
}
|
||||
SET_PREF_PHASE(END_INIT_PREFS);
|
||||
foundStringPrefs = true;
|
||||
|
|
|
@ -45,6 +45,16 @@ nested(upto inside_cpow) sync protocol PContentBridge
|
|||
child:
|
||||
async PParentToChildStream();
|
||||
|
||||
child:
|
||||
/**
|
||||
* Sending an activate message moves focus to the child.
|
||||
*/
|
||||
async Activate(PBrowser aTab);
|
||||
|
||||
async Deactivate(PBrowser aTab);
|
||||
|
||||
async ParentActivated(PBrowser aTab, bool aActivated);
|
||||
|
||||
parent:
|
||||
sync SyncMessage(nsString aMessage, ClonedMessageData aData,
|
||||
CpowEntry[] aCpows, Principal aPrincipal)
|
||||
|
|
|
@ -358,6 +358,8 @@ public:
|
|||
|
||||
mozilla::ipc::IPCResult RecvDeactivate();
|
||||
|
||||
mozilla::ipc::IPCResult RecvParentActivated(const bool& aActivated);
|
||||
|
||||
virtual mozilla::ipc::IPCResult RecvMouseEvent(const nsString& aType,
|
||||
const float& aX,
|
||||
const float& aY,
|
||||
|
@ -692,8 +694,6 @@ protected:
|
|||
|
||||
virtual mozilla::ipc::IPCResult RecvSuppressDisplayport(const bool& aEnabled) override;
|
||||
|
||||
mozilla::ipc::IPCResult RecvParentActivated(const bool& aActivated);
|
||||
|
||||
virtual mozilla::ipc::IPCResult RecvSetKeyboardIndicators(const UIStateChangeType& aShowAccelerators,
|
||||
const UIStateChangeType& aShowFocusRings) override;
|
||||
|
||||
|
|
|
@ -859,7 +859,7 @@ void
|
|||
TabParent::Activate()
|
||||
{
|
||||
if (!mIsDestroyed) {
|
||||
Unused << Manager()->AsContentParent()->SendActivate(this);
|
||||
Unused << Manager()->SendActivate(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -867,7 +867,7 @@ void
|
|||
TabParent::Deactivate()
|
||||
{
|
||||
if (!mIsDestroyed) {
|
||||
Unused << Manager()->AsContentParent()->SendDeactivate(this);
|
||||
Unused << Manager()->SendDeactivate(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -91,6 +91,13 @@ public:
|
|||
|
||||
nsFrameMessageManager* GetMessageManager() const { return mMessageManager; }
|
||||
|
||||
virtual bool SendActivate(PBrowserParent* aTab) = 0;
|
||||
|
||||
virtual bool SendDeactivate(PBrowserParent* aTab) = 0;
|
||||
|
||||
virtual bool SendParentActivated(PBrowserParent* aTab,
|
||||
const bool& aActivated) = 0;
|
||||
|
||||
virtual int32_t Pid() const = 0;
|
||||
|
||||
virtual mozilla::ipc::PParentToChildStreamParent*
|
||||
|
|
|
@ -90,8 +90,15 @@ class Manifest {
|
|||
}
|
||||
|
||||
async icon(expectedSize) {
|
||||
return await ManifestIcons
|
||||
if ('cached_icon' in this._store.data) {
|
||||
return this._store.data.cached_icon;
|
||||
}
|
||||
const icon = await ManifestIcons
|
||||
.browserFetchIcon(this._browser, this._store.data.manifest, expectedSize);
|
||||
// Cache the icon so future requests do not go over the network
|
||||
this._store.data.cached_icon = icon;
|
||||
this._store.saveSoon();
|
||||
return icon;
|
||||
}
|
||||
|
||||
get scope() {
|
||||
|
@ -116,6 +123,10 @@ class Manifest {
|
|||
get start_url() {
|
||||
return this._store.data.manifest.start_url;
|
||||
}
|
||||
|
||||
get path() {
|
||||
return this._path;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -63,7 +63,7 @@ async function getIcon(aWindow, icons, expectedSize) {
|
|||
return fetchIcon(aWindow, icons[index].src).catch(err => {
|
||||
// Remove all icons with the failed source, the same source
|
||||
// may have been used for multiple sizes
|
||||
icons = icons.filter(x => x.src === icons[index].src);
|
||||
icons = icons.filter(x => x.src !== icons[index].src);
|
||||
return getIcon(aWindow, icons, expectedSize);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ skip-if = os == 'linux'
|
|||
[test_geolocation.xul]
|
||||
[test_indexedSetter.html]
|
||||
[test_intlUtils_getDisplayNames.html]
|
||||
[test_intlUtils_getLocaleInfo.html]
|
||||
[test_moving_nodeList.xul]
|
||||
[test_moving_xhr.xul]
|
||||
[test_MozDomFullscreen_event.xul]
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1346084
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 1346084 </title>
|
||||
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1346084 ">Mozilla Bug 1346084</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
<script>
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const localeService =
|
||||
Cc["@mozilla.org/intl/localeservice;1"].getService(Ci.mozILocaleService);
|
||||
const mozIntl = Cc["@mozilla.org/mozintl;1"].getService(Ci.mozIMozIntl);
|
||||
|
||||
let appLocale = localeService.getAppLocalesAsBCP47()[0];
|
||||
|
||||
let testData = [
|
||||
{
|
||||
locales: ["en-US"],
|
||||
expected: {
|
||||
locale: "en-US",
|
||||
direction: "ltr",
|
||||
}
|
||||
},
|
||||
{
|
||||
locales: ["fr"],
|
||||
expected: {
|
||||
locale: "fr",
|
||||
direction: "ltr",
|
||||
}
|
||||
},
|
||||
{
|
||||
locales: ["ar"],
|
||||
expected: {
|
||||
locale: "ar",
|
||||
direction: "rtl",
|
||||
}
|
||||
},
|
||||
// IntlUtils uses current app locales if locales is not provided.
|
||||
{
|
||||
locales: [],
|
||||
expected: {
|
||||
locale: appLocale,
|
||||
direction: mozIntl.getLocaleInfo(appLocale).direction,
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
let intlUtils = window.intlUtils;
|
||||
ok(intlUtils, "window.intlUtils should exist");
|
||||
|
||||
for (let { locales, expected } of testData) {
|
||||
let result = intlUtils.getLocaleInfo(locales);
|
||||
|
||||
is(result.locale, expected.locale, "locale is " + expected.locale);
|
||||
is(result.direction, expected.direction, "direction is " + expected.direction);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -13,6 +13,11 @@ dictionary DisplayNameResult {
|
|||
record<DOMString, DOMString> values;
|
||||
};
|
||||
|
||||
dictionary LocaleInfo {
|
||||
DOMString locale;
|
||||
DOMString direction;
|
||||
};
|
||||
|
||||
/**
|
||||
* The IntlUtils interface provides helper functions for localization.
|
||||
*/
|
||||
|
@ -47,4 +52,22 @@ interface IntlUtils {
|
|||
[Throws]
|
||||
DisplayNameResult getDisplayNames(sequence<DOMString> locales,
|
||||
optional DisplayNameOptions options);
|
||||
|
||||
/**
|
||||
* Helper function to retrieve useful information about a locale.
|
||||
*
|
||||
* The function takes one argument - locales which is a list of locale
|
||||
* strings.
|
||||
*
|
||||
* It returns an object with properties:
|
||||
*
|
||||
* locale:
|
||||
* a negotiated locale string
|
||||
*
|
||||
* direction:
|
||||
* text direction, "ltr" or "rtl"
|
||||
*
|
||||
*/
|
||||
[Throws]
|
||||
LocaleInfo getLocaleInfo(sequence<DOMString> locales);
|
||||
};
|
||||
|
|
|
@ -1034,7 +1034,7 @@ void SkGpuDevice::drawBitmapTile(const SkBitmap& bitmap,
|
|||
|
||||
SkMatrix texMatrix;
|
||||
// Compute a matrix that maps the rect we will draw to the src rect.
|
||||
texMatrix.setRectToRect(dstRect, srcRect, SkMatrix::kStart_ScaleToFit);
|
||||
texMatrix.setRectToRect(dstRect, srcRect, SkMatrix::kFill_ScaleToFit);
|
||||
texMatrix.postScale(iw, ih);
|
||||
|
||||
// Construct a GrPaint by setting the bitmap texture as the first effect and then configuring
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
// |jit-test| error: ReferenceError
|
||||
|
||||
for (let [k, map = send.log += "" + map] of map) {}
|
|
@ -1217,10 +1217,26 @@ GetPropIRGenerator::tryAttachStringChar(ValOperandId valId, ValOperandId indexId
|
|||
if (!val_.isString())
|
||||
return false;
|
||||
|
||||
JSString* str = val_.toString();
|
||||
int32_t index = idVal_.toInt32();
|
||||
if (size_t(index) >= str->length() ||
|
||||
!str->isLinear() ||
|
||||
if (index < 0)
|
||||
return false;
|
||||
|
||||
JSString* str = val_.toString();
|
||||
if (size_t(index) >= str->length())
|
||||
return false;
|
||||
|
||||
// This follows JSString::getChar, otherwise we fail to attach getChar in a lot of cases.
|
||||
if (str->isRope()) {
|
||||
JSRope* rope = &str->asRope();
|
||||
|
||||
// Make sure the left side contains the index.
|
||||
if (size_t(index) >= rope->leftChild()->length())
|
||||
return false;
|
||||
|
||||
str = rope->leftChild();
|
||||
}
|
||||
|
||||
if (!str->isLinear() ||
|
||||
str->asLinear().latin1OrTwoByteChar(index) >= StaticStrings::UNIT_STATIC_LIMIT)
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -1758,12 +1758,10 @@ CacheIRCompiler::emitLoadStringCharResult()
|
|||
if (!addFailurePath(&failure))
|
||||
return false;
|
||||
|
||||
masm.branchIfRope(str, failure->label());
|
||||
|
||||
// Bounds check, load string char.
|
||||
masm.branch32(Assembler::BelowOrEqual, Address(str, JSString::offsetOfLength()),
|
||||
index, failure->label());
|
||||
masm.loadStringChar(str, index, scratch1);
|
||||
masm.loadStringChar(str, index, scratch1, failure->label());
|
||||
|
||||
// Load StaticString for this char.
|
||||
masm.branch32(Assembler::AboveOrEqual, scratch1, Imm32(StaticStrings::UNIT_STATIC_LIMIT),
|
||||
|
|
|
@ -7966,10 +7966,7 @@ CodeGenerator::visitCharCodeAt(LCharCodeAt* lir)
|
|||
Register output = ToRegister(lir->output());
|
||||
|
||||
OutOfLineCode* ool = oolCallVM(CharCodeAtInfo, lir, ArgList(str, index), StoreRegisterTo(output));
|
||||
|
||||
masm.branchIfRope(str, ool->entry());
|
||||
masm.loadStringChar(str, index, output);
|
||||
|
||||
masm.loadStringChar(str, index, output, ool->entry());
|
||||
masm.bind(ool->rejoin());
|
||||
}
|
||||
|
||||
|
|
|
@ -3228,13 +3228,15 @@ IonBuilder::binaryArithTryConcat(bool* emitted, JSOp op, MDefinition* left, MDef
|
|||
|
||||
// The non-string input (if present) should be atleast easily coercible to string.
|
||||
if (right->type() != MIRType::String &&
|
||||
(right->mightBeType(MIRType::Symbol) || right->mightBeType(MIRType::Object)))
|
||||
(right->mightBeType(MIRType::Symbol) || right->mightBeType(MIRType::Object) ||
|
||||
right->mightBeMagicType()))
|
||||
{
|
||||
trackOptimizationOutcome(TrackedOutcome::OperandNotEasilyCoercibleToString);
|
||||
return Ok();
|
||||
}
|
||||
if (left->type() != MIRType::String &&
|
||||
(left->mightBeType(MIRType::Symbol) || left->mightBeType(MIRType::Object)))
|
||||
(left->mightBeType(MIRType::Symbol) || left->mightBeType(MIRType::Object) ||
|
||||
left->mightBeMagicType()))
|
||||
{
|
||||
trackOptimizationOutcome(TrackedOutcome::OperandNotEasilyCoercibleToString);
|
||||
return Ok();
|
||||
|
|
|
@ -395,6 +395,14 @@ MacroAssembler::branchIfRope(Register str, Label* label)
|
|||
branchTest32(Assembler::Zero, flags, Imm32(JSString::TYPE_FLAGS_MASK), label);
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssembler::branchIfNotRope(Register str, Label* label)
|
||||
{
|
||||
Address flags(str, JSString::offsetOfFlags());
|
||||
static_assert(JSString::ROPE_FLAGS == 0, "Rope type flags must be 0");
|
||||
branchTest32(Assembler::NonZero, flags, Imm32(JSString::TYPE_FLAGS_MASK), label);
|
||||
}
|
||||
|
||||
void
|
||||
MacroAssembler::branchLatin1String(Register string, Label* label)
|
||||
{
|
||||
|
|
|
@ -1383,12 +1383,29 @@ MacroAssembler::loadStringChars(Register str, Register dest)
|
|||
}
|
||||
|
||||
void
|
||||
MacroAssembler::loadStringChar(Register str, Register index, Register output)
|
||||
MacroAssembler::loadStringChar(Register str, Register index, Register output, Label* fail)
|
||||
{
|
||||
MOZ_ASSERT(str != output);
|
||||
MOZ_ASSERT(index != output);
|
||||
|
||||
loadStringChars(str, output);
|
||||
movePtr(str, output);
|
||||
|
||||
// This follows JSString::getChar.
|
||||
Label notRope;
|
||||
branchIfNotRope(str, ¬Rope);
|
||||
|
||||
// Load leftChild.
|
||||
loadPtr(Address(str, JSRope::offsetOfLeft()), output);
|
||||
|
||||
// Check if the index is contained in the leftChild.
|
||||
// Todo: Handle index in the rightChild.
|
||||
branch32(Assembler::BelowOrEqual, Address(output, JSString::offsetOfLength()), index, fail);
|
||||
|
||||
// If the left side is another rope, give up.
|
||||
branchIfRope(output, fail);
|
||||
|
||||
bind(¬Rope);
|
||||
loadStringChars(output, output);
|
||||
|
||||
Label isLatin1, done;
|
||||
branchLatin1String(str, &isLatin1);
|
||||
|
|
|
@ -1113,6 +1113,7 @@ class MacroAssembler : public MacroAssemblerSpecific
|
|||
inline void branchIfTrueBool(Register reg, Label* label);
|
||||
|
||||
inline void branchIfRope(Register str, Label* label);
|
||||
inline void branchIfNotRope(Register str, Label* label);
|
||||
|
||||
inline void branchLatin1String(Register string, Label* label);
|
||||
inline void branchTwoByteString(Register string, Label* label);
|
||||
|
@ -1493,7 +1494,7 @@ class MacroAssembler : public MacroAssemblerSpecific
|
|||
}
|
||||
|
||||
void loadStringChars(Register str, Register dest);
|
||||
void loadStringChar(Register str, Register index, Register output);
|
||||
void loadStringChar(Register str, Register index, Register output, Label* fail);
|
||||
|
||||
void loadJSContext(Register dest);
|
||||
void loadJitActivation(Register dest) {
|
||||
|
|
|
@ -1460,7 +1460,8 @@ class StringSegmentRange
|
|||
{
|
||||
// If malloc() shows up in any profiles from this vector, we can add a new
|
||||
// StackAllocPolicy which stashes a reusable freed-at-gc buffer in the cx.
|
||||
Rooted<StringVector> stack;
|
||||
using StackVector = JS::GCVector<JSString*, 16>;
|
||||
Rooted<StackVector> stack;
|
||||
RootedLinearString cur;
|
||||
|
||||
bool settle(JSString* str) {
|
||||
|
@ -1476,7 +1477,7 @@ class StringSegmentRange
|
|||
|
||||
public:
|
||||
explicit StringSegmentRange(JSContext* cx)
|
||||
: stack(cx, StringVector(cx)), cur(cx)
|
||||
: stack(cx, StackVector(cx)), cur(cx)
|
||||
{}
|
||||
|
||||
MOZ_MUST_USE bool init(JSString* str) {
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
#include "gfxPlatform.h"
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
#include "mozilla/dom/AnonymousContent.h"
|
||||
#include "mozilla/dom/HTMLVideoElement.h"
|
||||
#include "mozilla/dom/HTMLImageElement.h"
|
||||
#include "mozilla/dom/DOMRect.h"
|
||||
|
@ -1157,15 +1158,55 @@ GetDisplayPortFromMarginsData(nsIContent* aContent,
|
|||
}
|
||||
|
||||
static bool
|
||||
ShouldDisableApzForElement(nsIContent* aContent)
|
||||
HasVisibleAnonymousContents(nsIDocument* aDoc)
|
||||
{
|
||||
if (gfxPrefs::APZDisableForScrollLinkedEffects() && aContent) {
|
||||
nsIDocument* doc = aContent->GetComposedDoc();
|
||||
return (doc && doc->HasScrollLinkedEffect());
|
||||
for (RefPtr<AnonymousContent>& ac : aDoc->GetAnonymousContents()) {
|
||||
Element* elem = ac->GetContentNode();
|
||||
// We check to see if the anonymous content node has a frame. If it doesn't,
|
||||
// that means that's not visible to the user because e.g. it's display:none.
|
||||
// For now we assume that if it has a frame, it is visible. We might be able
|
||||
// to refine this further by adding complexity if it turns out this condition
|
||||
// results in a lot of false positives.
|
||||
if (elem && elem->GetPrimaryFrame()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
nsLayoutUtils::ShouldDisableApzForElement(nsIContent* aContent)
|
||||
{
|
||||
if (!aContent) {
|
||||
return false;
|
||||
}
|
||||
|
||||
nsIDocument* doc = aContent->GetComposedDoc();
|
||||
nsIPresShell* rootShell = APZCCallbackHelper::GetRootContentDocumentPresShellForContent(aContent);
|
||||
if (rootShell) {
|
||||
if (nsIDocument* rootDoc = rootShell->GetDocument()) {
|
||||
nsIContent* rootContent = rootShell->GetRootScrollFrame()
|
||||
? rootShell->GetRootScrollFrame()->GetContent()
|
||||
: rootDoc->GetDocumentElement();
|
||||
// For the AccessibleCaret: disable APZ on any scrollable subframes that
|
||||
// are not the root scrollframe of a document, if the document has any
|
||||
// visible anonymous contents.
|
||||
// If we find this is triggering in too many scenarios then we might
|
||||
// want to tighten this check further. The main use cases for which we want
|
||||
// to disable APZ as of this writing are listed in bug 1316318.
|
||||
if (aContent != rootContent && HasVisibleAnonymousContents(rootDoc)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!doc) {
|
||||
return false;
|
||||
}
|
||||
return gfxPrefs::APZDisableForScrollLinkedEffects() &&
|
||||
doc->HasScrollLinkedEffect();
|
||||
}
|
||||
|
||||
static bool
|
||||
GetDisplayPortData(nsIContent* aContent,
|
||||
DisplayPortPropertyData** aOutRectData,
|
||||
|
@ -1230,7 +1271,8 @@ GetDisplayPortImpl(nsIContent* aContent, nsRect* aResult, float aMultiplier)
|
|||
nsRect result;
|
||||
if (rectData) {
|
||||
result = GetDisplayPortFromRectData(aContent, rectData, aMultiplier);
|
||||
} else if (APZCCallbackHelper::IsDisplayportSuppressed() || ShouldDisableApzForElement(aContent)) {
|
||||
} else if (APZCCallbackHelper::IsDisplayportSuppressed() ||
|
||||
nsLayoutUtils::ShouldDisableApzForElement(aContent)) {
|
||||
DisplayPortMarginsPropertyData noMargins(ScreenMargin(), 1);
|
||||
result = GetDisplayPortFromMarginsData(aContent, &noMargins, aMultiplier);
|
||||
} else {
|
||||
|
|
|
@ -2684,6 +2684,14 @@ public:
|
|||
*/
|
||||
static float GetCurrentAPZResolutionScale(nsIPresShell* aShell);
|
||||
|
||||
/**
|
||||
* Returns true if we need to disable async scrolling for this particular
|
||||
* element. Note that this does a partial disabling - the displayport still
|
||||
* exists but uses a very small margin, and the compositor doesn't apply the
|
||||
* async transform. However, the content may still be layerized.
|
||||
*/
|
||||
static bool ShouldDisableApzForElement(nsIContent* aContent);
|
||||
|
||||
/**
|
||||
* Log a key/value pair for APZ testing during a paint.
|
||||
* @param aManager The data will be written to the APZTestData associated
|
||||
|
|
|
@ -2818,7 +2818,9 @@ ScrollFrameHelper::ScrollToImpl(nsPoint aPt, const nsRect& aRange, nsIAtom* aOri
|
|||
ScrollVisual();
|
||||
|
||||
bool schedulePaint = true;
|
||||
if (nsLayoutUtils::AsyncPanZoomEnabled(mOuter) && gfxPrefs::APZPaintSkipping()) {
|
||||
if (nsLayoutUtils::AsyncPanZoomEnabled(mOuter) &&
|
||||
!nsLayoutUtils::ShouldDisableApzForElement(content) &&
|
||||
gfxPrefs::APZPaintSkipping()) {
|
||||
// If APZ is enabled with paint-skipping, there are certain conditions in
|
||||
// which we can skip paints:
|
||||
// 1) If APZ triggered this scroll, and the tile-aligned displayport is
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
android:relinquishTaskIdentity="true"
|
||||
android:taskAffinity=""
|
||||
android:exported="true"
|
||||
android:excludeFromRecents="true" />
|
||||
|
||||
<!-- Fennec is shipped as the Android package named
|
||||
|
@ -316,6 +317,8 @@
|
|||
<activity android:name="org.mozilla.gecko.customtabs.CustomTabsActivity"
|
||||
android:theme="@style/GeckoCustomTabs" />
|
||||
#endif
|
||||
<activity android:name="org.mozilla.gecko.webapps.WebAppActivity"
|
||||
android:theme="@style/Theme.AppCompat.NoActionBar" />
|
||||
|
||||
<!-- Service to handle requests from overlays. -->
|
||||
<service android:name="org.mozilla.gecko.overlays.service.OverlayActionService" />
|
||||
|
|
|
@ -2037,10 +2037,11 @@ public class BrowserApp extends GeckoApp
|
|||
case "Website:AppInstalled":
|
||||
final String name = message.getString("name");
|
||||
final String startUrl = message.getString("start_url");
|
||||
final String manifestPath = message.getString("manifest_path");
|
||||
final Bitmap icon = FaviconDecoder
|
||||
.decodeDataURI(getContext(), message.getString("icon"))
|
||||
.getBestBitmap(GeckoAppShell.getPreferredIconSize());
|
||||
createShortcut(name, startUrl, icon);
|
||||
createAppShortcut(name, startUrl, manifestPath, icon);
|
||||
break;
|
||||
|
||||
case "Updater:Launch":
|
||||
|
|
|
@ -40,12 +40,14 @@ import org.mozilla.gecko.updater.UpdateServiceHelper;
|
|||
import org.mozilla.gecko.util.ActivityResultHandler;
|
||||
import org.mozilla.gecko.util.ActivityUtils;
|
||||
import org.mozilla.gecko.util.BundleEventListener;
|
||||
import org.mozilla.gecko.util.ColorUtil;
|
||||
import org.mozilla.gecko.util.EventCallback;
|
||||
import org.mozilla.gecko.util.FileUtils;
|
||||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
import org.mozilla.gecko.util.HardwareUtils;
|
||||
import org.mozilla.gecko.util.PrefUtils;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
import org.mozilla.gecko.webapps.WebAppActivity;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
|
@ -145,6 +147,7 @@ public abstract class GeckoApp
|
|||
|
||||
public static final String ACTION_ALERT_CALLBACK = "org.mozilla.gecko.ALERT_CALLBACK";
|
||||
public static final String ACTION_HOMESCREEN_SHORTCUT = "org.mozilla.gecko.BOOKMARK";
|
||||
public static final String ACTION_WEBAPP = "org.mozilla.gecko.WEBAPP";
|
||||
public static final String ACTION_DEBUG = "org.mozilla.gecko.DEBUG";
|
||||
public static final String ACTION_LAUNCH_SETTINGS = "org.mozilla.gecko.SETTINGS";
|
||||
public static final String ACTION_LOAD = "org.mozilla.gecko.LOAD";
|
||||
|
@ -2022,13 +2025,25 @@ public abstract class GeckoApp
|
|||
}
|
||||
|
||||
public void createShortcut(final String aTitle, final String aURI, final Bitmap aIcon) {
|
||||
// The intent to be launched by the shortcut.
|
||||
Intent shortcutIntent = new Intent();
|
||||
shortcutIntent.setAction(GeckoApp.ACTION_HOMESCREEN_SHORTCUT);
|
||||
shortcutIntent.setData(Uri.parse(aURI));
|
||||
shortcutIntent.setClassName(AppConstants.ANDROID_PACKAGE_NAME,
|
||||
AppConstants.MOZ_ANDROID_BROWSER_INTENT_CLASS);
|
||||
createHomescreenIcon(shortcutIntent, aTitle, aURI, aIcon);
|
||||
}
|
||||
|
||||
public void createAppShortcut(final String aTitle, final String aURI, final String manifestPath, final Bitmap aIcon) {
|
||||
Intent shortcutIntent = new Intent();
|
||||
shortcutIntent.setAction(GeckoApp.ACTION_WEBAPP);
|
||||
shortcutIntent.setData(Uri.parse(aURI));
|
||||
shortcutIntent.putExtra("MANIFEST_PATH", manifestPath);
|
||||
shortcutIntent.setClassName(AppConstants.ANDROID_PACKAGE_NAME, LauncherActivity.class.getName());
|
||||
createHomescreenIcon(shortcutIntent, aTitle, aURI, aIcon);
|
||||
}
|
||||
|
||||
public void createHomescreenIcon(final Intent shortcutIntent, final String aTitle,
|
||||
final String aURI, final Bitmap aIcon) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
|
||||
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, getLauncherIcon(aIcon, GeckoAppShell.getPreferredIconSize()));
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.os.Bundle;
|
|||
import android.support.annotation.NonNull;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
|
||||
import org.mozilla.gecko.webapps.WebAppActivity;
|
||||
import org.mozilla.gecko.customtabs.CustomTabsActivity;
|
||||
import org.mozilla.gecko.db.BrowserContract;
|
||||
import org.mozilla.gecko.mozglue.SafeIntent;
|
||||
|
@ -30,8 +31,12 @@ public class LauncherActivity extends Activity {
|
|||
|
||||
final SafeIntent safeIntent = new SafeIntent(getIntent());
|
||||
|
||||
// Is this web app?
|
||||
if (isWebAppIntent(safeIntent)) {
|
||||
dispatchWebAppIntent();
|
||||
|
||||
// If it's not a view intent, it won't be a custom tabs intent either. Just launch!
|
||||
if (!isViewIntentWithURL(safeIntent)) {
|
||||
} else if (!isViewIntentWithURL(safeIntent)) {
|
||||
dispatchNormalIntent();
|
||||
|
||||
// Is this a custom tabs intent, and are custom tabs enabled?
|
||||
|
@ -83,6 +88,15 @@ public class LauncherActivity extends Activity {
|
|||
startActivity(intent);
|
||||
}
|
||||
|
||||
private void dispatchWebAppIntent() {
|
||||
Intent intent = new Intent(getIntent());
|
||||
intent.setClassName(getApplicationContext(), WebAppActivity.class.getName());
|
||||
|
||||
filterFlags(intent);
|
||||
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
private static void filterFlags(Intent intent) {
|
||||
// Explicitly remove the new task and clear task flags (Our browser activity is a single
|
||||
// task activity and we never want to start a second task here). See bug 1280112.
|
||||
|
@ -104,6 +118,10 @@ public class LauncherActivity extends Activity {
|
|||
&& safeIntent.hasExtra(CustomTabsIntent.EXTRA_SESSION);
|
||||
}
|
||||
|
||||
private static boolean isWebAppIntent(@NonNull final SafeIntent safeIntent) {
|
||||
return GeckoApp.ACTION_WEBAPP.equals(safeIntent.getAction());
|
||||
}
|
||||
|
||||
private boolean isCustomTabsEnabled() {
|
||||
return GeckoSharedPrefs.forApp(this).getBoolean(GeckoPreferences.PREFS_CUSTOM_TABS, false);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import org.mozilla.gecko.distribution.Distribution;
|
|||
import org.mozilla.gecko.util.FileUtils;
|
||||
import org.mozilla.gecko.util.GeckoJarReader;
|
||||
import org.mozilla.gecko.util.HardwareUtils;
|
||||
import org.mozilla.gecko.util.IOUtils;
|
||||
import org.mozilla.gecko.util.RawResource;
|
||||
import org.mozilla.gecko.util.StringUtils;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
|
@ -42,6 +43,8 @@ import java.net.URL;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONArray;
|
||||
|
||||
/**
|
||||
* This class is not thread-safe, except where otherwise noted.
|
||||
|
@ -66,6 +69,9 @@ public class SearchEngineManager implements SharedPreferences.OnSharedPreference
|
|||
// URL for the geo-ip location service. Keep in sync with "browser.search.geoip.url" perference in Gecko.
|
||||
private static final String GEOIP_LOCATION_URL = "https://location.services.mozilla.com/v1/country?key=" + AppConstants.MOZ_MOZILLA_API_KEY;
|
||||
|
||||
// The API we're using requires a file size, so set an arbitrarily large one
|
||||
public static final int MAX_LISTJSON_SIZE = 8192;
|
||||
|
||||
// This should go through GeckoInterface to get the UA, but the search activity
|
||||
// doesn't use a GeckoView yet. Until it does, get the UA directly.
|
||||
private static final String USER_AGENT = HardwareUtils.isTablet() ?
|
||||
|
@ -559,7 +565,7 @@ public class SearchEngineManager implements SharedPreferences.OnSharedPreference
|
|||
/**
|
||||
* Creates a SearchEngine instance for a search plugin shipped in the locale.
|
||||
*
|
||||
* This method reads the list of search plugin file names from list.txt, then
|
||||
* This method reads the list of search plugin file names from list.json, then
|
||||
* iterates through the files, creating SearchEngine instances until it finds one
|
||||
* with the right name. Unfortunately, we need to do this because there is no
|
||||
* other way to map the search engine "name" to the file for the search plugin.
|
||||
|
@ -568,33 +574,42 @@ public class SearchEngineManager implements SharedPreferences.OnSharedPreference
|
|||
* @return SearchEngine instance for name.
|
||||
*/
|
||||
private SearchEngine createEngineFromLocale(String name) {
|
||||
final InputStream in = getInputStreamFromSearchPluginsJar("list.txt");
|
||||
final InputStream in = getInputStreamFromSearchPluginsJar("list.json");
|
||||
if (in == null) {
|
||||
return null;
|
||||
}
|
||||
final BufferedReader br = getBufferedReader(in);
|
||||
|
||||
JSONObject json;
|
||||
try {
|
||||
String identifier;
|
||||
while ((identifier = br.readLine()) != null) {
|
||||
final InputStream pluginIn = getInputStreamFromSearchPluginsJar(identifier + ".xml");
|
||||
// pluginIn can be null if the xml file doesn't exist which
|
||||
// can happen with :hidden plugins
|
||||
json = new JSONObject(FileUtils.readStringFromInputStreamAndCloseStream(in, MAX_LISTJSON_SIZE));
|
||||
} catch (IOException e) {
|
||||
Log.e(LOG_TAG, "Error reading list.json", e);
|
||||
return null;
|
||||
} catch (JSONException e) {
|
||||
Log.e(LOG_TAG, "Error parsing list.json", e);
|
||||
return null;
|
||||
} finally {
|
||||
IOUtils.safeStreamClose(in);
|
||||
}
|
||||
try {
|
||||
String region = GeckoSharedPrefs.forApp(context).getString(PREF_REGION_KEY, null);
|
||||
|
||||
JSONArray engines;
|
||||
if (json.has(region)) {
|
||||
engines = json.getJSONObject(region).getJSONArray("visibleDefaultEngines");
|
||||
} else {
|
||||
engines = json.getJSONObject("default").getJSONArray("visibleDefaultEngines");
|
||||
}
|
||||
for (int i = 0; i < engines.length(); i++) {
|
||||
final InputStream pluginIn = getInputStreamFromSearchPluginsJar(engines.getString(i) + ".xml");
|
||||
if (pluginIn != null) {
|
||||
final SearchEngine engine = createEngineFromInputStream(identifier, pluginIn);
|
||||
if (engine != null && engine.getName().equals(name)) {
|
||||
return engine;
|
||||
}
|
||||
final SearchEngine engine = createEngineFromInputStream(engines.getString(i), pluginIn);
|
||||
if (engine != null && engine.getName().equals(name)) {
|
||||
return engine;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Log.e(LOG_TAG, "Error creating shipped search engine from name: " + name, e);
|
||||
} finally {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
// Ignore.
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -29,6 +29,19 @@ public class ColorUtil {
|
|||
}
|
||||
}
|
||||
|
||||
public static Integer parseStringColor(final String color) {
|
||||
try {
|
||||
if (color.length() < 7) {
|
||||
return null;
|
||||
}
|
||||
return Color.argb(255,
|
||||
Integer.valueOf(color.substring(1, 3), 16),
|
||||
Integer.valueOf(color.substring(3, 5), 16),
|
||||
Integer.valueOf(color.substring(5, 7), 16));
|
||||
} catch (NumberFormatException e) { }
|
||||
return null;
|
||||
}
|
||||
|
||||
private static int darkenColor(final int color, final double fraction) {
|
||||
return (int) Math.max(color - (color * fraction), 0);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
|
||||
* 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/. */
|
||||
|
||||
package org.mozilla.gecko.webapps;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONException;
|
||||
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.EventDispatcher;
|
||||
import org.mozilla.gecko.GeckoApp;
|
||||
import org.mozilla.gecko.GeckoAppShell;
|
||||
import org.mozilla.gecko.GeckoProfile;
|
||||
import org.mozilla.gecko.icons.decoders.FaviconDecoder;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.util.ColorUtil;
|
||||
import org.mozilla.gecko.util.EventCallback;
|
||||
import org.mozilla.gecko.util.FileUtils;
|
||||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
|
||||
public class WebAppActivity extends GeckoApp {
|
||||
|
||||
public static final String INTENT_KEY = "IS_A_WEBAPP";
|
||||
public static final String MANIFEST_PATH = "MANIFEST_PATH";
|
||||
|
||||
private static final String LOGTAG = "WebAppActivity";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
String manifestPath = getIntent().getStringExtra(WebAppActivity.MANIFEST_PATH);
|
||||
if (manifestPath != null) {
|
||||
updateFromManifest(manifestPath);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayout() {
|
||||
return R.layout.webapp_activity;
|
||||
}
|
||||
|
||||
private void updateFromManifest(String manifestPath) {
|
||||
try {
|
||||
final File manifestFile = new File(manifestPath);
|
||||
final JSONObject manifest = FileUtils.readJSONObjectFromFile(manifestFile);
|
||||
final JSONObject manifestField = (JSONObject) manifest.get("manifest");
|
||||
final Integer color = readColorFromManifest(manifestField);
|
||||
final String name = readNameFromManifest(manifestField);
|
||||
final Bitmap icon = readIconFromManifest(manifest);
|
||||
final ActivityManager.TaskDescription taskDescription = (color == null)
|
||||
? new ActivityManager.TaskDescription(name, icon)
|
||||
: new ActivityManager.TaskDescription(name, icon, color);
|
||||
|
||||
updateStatusBarColor(color);
|
||||
setTaskDescription(taskDescription);
|
||||
|
||||
} catch (IOException | JSONException e) {
|
||||
Log.e(LOGTAG, "Failed to read manifest", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStatusBarColor(final Integer themeColor) {
|
||||
if (themeColor != null && !AppConstants.Versions.preLollipop) {
|
||||
final Window window = getWindow();
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
||||
window.setStatusBarColor(ColorUtil.darken(themeColor, 0.25));
|
||||
}
|
||||
}
|
||||
|
||||
private Integer readColorFromManifest(JSONObject manifest) throws JSONException {
|
||||
final String colorStr = (String) manifest.get("theme_color");
|
||||
if (colorStr != null) {
|
||||
return ColorUtil.parseStringColor(colorStr);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String readNameFromManifest(JSONObject manifest) throws JSONException {
|
||||
String name = (String) manifest.get("name");
|
||||
if (name == null) {
|
||||
name = (String) manifest.get("short_name");
|
||||
}
|
||||
if (name == null) {
|
||||
name = (String) manifest.get("start_url");
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
private Bitmap readIconFromManifest(JSONObject manifest) throws JSONException {
|
||||
final String iconStr = (String) manifest.get("cached_icon");
|
||||
if (iconStr != null) {
|
||||
return FaviconDecoder
|
||||
.decodeDataURI(getContext(), iconStr)
|
||||
.getBestBitmap(GeckoAppShell.getPreferredIconSize());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -789,6 +789,7 @@ gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
|||
'util/ResourceDrawableUtils.java',
|
||||
'util/TouchTargetUtil.java',
|
||||
'util/ViewUtil.java',
|
||||
'webapps/WebAppActivity.java',
|
||||
'widget/ActivityChooserModel.java',
|
||||
'widget/AllCapsTextView.java',
|
||||
'widget/AnchoredPopup.java',
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/root_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<!--
|
||||
This layout is quite complex because GeckoApp accesses all view groups
|
||||
in this tree. In a perfect world this should just include a GeckoView.
|
||||
-->
|
||||
|
||||
<view class="org.mozilla.gecko.GeckoApp$MainLayout"
|
||||
android:id="@+id/main_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_below="@+id/toolbar"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@android:color/transparent">
|
||||
|
||||
<RelativeLayout android:id="@+id/gecko_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@+id/tablet_tab_strip"
|
||||
android:layout_above="@+id/find_in_page">
|
||||
|
||||
<fragment class="org.mozilla.gecko.GeckoViewFragment"
|
||||
android:id="@+id/layer_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbars="none"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</view>
|
||||
|
||||
</RelativeLayout>
|
|
@ -2208,7 +2208,8 @@ async function installManifest(browser, manifestUrl, iconSize) {
|
|||
type: "Website:AppInstalled",
|
||||
icon,
|
||||
name: manifest.name,
|
||||
start_url: manifest.start_url
|
||||
start_url: manifest.start_url,
|
||||
manifest_path: manifest.path
|
||||
});
|
||||
} catch (err) {
|
||||
Cu.reportError("Failed to install: " + err.message);
|
||||
|
|
|
@ -46,8 +46,7 @@ search-jar-default: search-jar
|
|||
###########################################################################
|
||||
## Searchlist plugin config
|
||||
plugin-file-array = \
|
||||
$(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \
|
||||
$(srcdir)/en-US/searchplugins/list.txt \
|
||||
$(srcdir)/search/list.json \
|
||||
$(NULL)
|
||||
|
||||
###########################################################################
|
||||
|
@ -80,8 +79,7 @@ GARBAGE += $(search-jar) $(search-jar-ts) $(search-jar-common)
|
|||
# ---------------------------------------------------------------------------
|
||||
# search-jar contains a list of providers for the search plugin
|
||||
###########################################################################
|
||||
SEARCH_PLUGINS = $(shell cat $(plugin_file))
|
||||
SEARCH_PLUGINS := $(subst :hidden,,$(SEARCH_PLUGINS))
|
||||
SEARCH_PLUGINS := $(shell $(call py_action,output_searchplugins_list,$(srcdir)/search/list.json $(AB_CD)))
|
||||
$(call errorIfEmpty,SEARCH_PLUGINS)
|
||||
|
||||
search-jar-preqs = \
|
||||
|
@ -96,6 +94,7 @@ $(search-jar): $(search-jar-preqs)
|
|||
printf '$(AB_CD).jar:' > $@
|
||||
ln -fn $@ .
|
||||
printf '$(foreach plugin,$(SEARCH_PLUGINS),$(subst __PLUGIN_SUBST__,$(plugin), \n locale/$(AB_CD)/browser/searchplugins/__PLUGIN_SUBST__.xml (__PLUGIN_SUBST__.xml)))' >> $@
|
||||
printf '\n locale/$(AB_CD)/browser/searchplugins/list.json (list.json)' >> $@
|
||||
@echo >> $@
|
||||
|
||||
###################
|
||||
|
@ -115,10 +114,12 @@ search-preqs =\
|
|||
|
||||
.PHONY: searchplugins
|
||||
searchplugins: $(search-preqs)
|
||||
$(call py_action,generate_searchjson,$(srcdir)/search/list.json $(AB_CD) $(tgt-gendir)/list.json)
|
||||
$(call py_action,jar_maker,\
|
||||
$(QUIET) -d $(FINAL_TARGET) \
|
||||
-s $(topsrcdir)/$(relativesrcdir)/en-US/searchplugins \
|
||||
-s $(LOCALE_SRCDIR)/searchplugins \
|
||||
-s $(tgt-gendir) \
|
||||
$(MAKE_JARS_FLAGS) $(search-jar))
|
||||
$(TOUCH) $@
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
@AB_CD@.jar:
|
||||
% locale browser @AB_CD@ %locale/@AB_CD@/browser/
|
||||
locale/@AB_CD@/browser/region.properties (%chrome/region.properties)
|
||||
locale/@AB_CD@/browser/searchplugins/list.txt (%searchplugins/list.txt)
|
||||
|
||||
# Fennec-specific overrides of generic strings
|
||||
locale/@AB_CD@/browser/netError.dtd (%overrides/netError.dtd)
|
||||
|
|
|
@ -0,0 +1,696 @@
|
|||
{
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "duckduckgo", "twitter", "wikipedia"
|
||||
]
|
||||
},
|
||||
"regionOverrides": {
|
||||
"US": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"CA": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"KZ": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"BY": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"RU": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"TR": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"UA": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"CN": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"TW": {
|
||||
"google": "google-nocodes"
|
||||
},
|
||||
"HK": {
|
||||
"google": "google-nocodes"
|
||||
}
|
||||
},
|
||||
"locales": {
|
||||
"an": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-es", "bing", "twitter", "wikipedia-an"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ar": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "twitter", "wikipedia-ar"
|
||||
]
|
||||
}
|
||||
},
|
||||
"as": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "wikipedia-as"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ast": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-es", "bing", "amazondotcom", "twitter", "wikipedia-ast"
|
||||
]
|
||||
}
|
||||
},
|
||||
"az": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "bing", "amazondotcom", "azerdict", "duckduckgo", "wikipedia-az"
|
||||
]
|
||||
}
|
||||
},
|
||||
"be": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "be.wikipedia.org", "bing", "yahoo", "yandex.by"
|
||||
]
|
||||
}
|
||||
},
|
||||
"bg": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "wikipedia-bg"
|
||||
]
|
||||
}
|
||||
},
|
||||
"bn-IN": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazondotcom", "rediff", "wikipedia-bn"
|
||||
]
|
||||
}
|
||||
},
|
||||
"br": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-france", "bing", "twitter", "wikipedia-br"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ca": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia-ca", "diec2"
|
||||
]
|
||||
}
|
||||
},
|
||||
"cak": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-espanol", "amazondotcom", "duckduckgo", "wikipedia-es"
|
||||
]
|
||||
}
|
||||
},
|
||||
"cs": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "duckduckgo", "heureka-cz", "mapy-cz", "seznam-cz", "twitter", "wikipedia-cz"
|
||||
]
|
||||
}
|
||||
},
|
||||
"cy": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-en-GB", "bing", "amazon-en-GB", "duckduckgo", "wikipedia-cy"
|
||||
]
|
||||
}
|
||||
},
|
||||
"da": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazon-co-uk", "twitter", "wikipedia-da"
|
||||
]
|
||||
}
|
||||
},
|
||||
"de": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-de", "bing", "amazon-de", "duckduckgo", "qwant", "twitter", "wikipedia-de"
|
||||
]
|
||||
}
|
||||
},
|
||||
"dsb": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-de", "bing", "amazon-de", "twitter", "wikipedia-dsb"
|
||||
]
|
||||
}
|
||||
},
|
||||
"el": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "skroutz", "twitter", "wikipedia-el"
|
||||
]
|
||||
}
|
||||
},
|
||||
"en-GB": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-en-GB", "bing", "amazon-en-GB", "duckduckgo", "qwant", "twitter", "wikipedia"
|
||||
]
|
||||
}
|
||||
},
|
||||
"en-US": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "duckduckgo", "twitter", "wikipedia"
|
||||
]
|
||||
},
|
||||
"US": {
|
||||
"visibleDefaultEngines": [
|
||||
"yahoo", "google-nocodes", "bing", "amazondotcom", "duckduckgo", "twitter", "wikipedia"
|
||||
]
|
||||
},
|
||||
"CA": {
|
||||
"visibleDefaultEngines": [
|
||||
"google-nocodes", "yahoo", "bing", "amazondotcom", "duckduckgo", "twitter", "wikipedia"
|
||||
]
|
||||
}
|
||||
},
|
||||
"en-ZA": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia"
|
||||
]
|
||||
}
|
||||
},
|
||||
"eo": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "duckduckgo", "reta-vortaro", "twitter", "wikipedia-eo"
|
||||
]
|
||||
}
|
||||
},
|
||||
"es-AR": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "mercadolibre-ar", "twitter", "wikipedia-es"
|
||||
]
|
||||
}
|
||||
},
|
||||
"es-CL": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-cl", "bing", "drae", "mercadolibre-cl", "twitter", "wikipedia-es"
|
||||
]
|
||||
}
|
||||
},
|
||||
"es-ES": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-es", "bing", "duckduckgo", "twitter", "wikipedia-es"
|
||||
]
|
||||
}
|
||||
},
|
||||
"es-MX": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-mx", "bing", "amazondotcom", "duckduckgo", "mercadolibre-mx", "twitter", "wikipedia-es"
|
||||
]
|
||||
}
|
||||
},
|
||||
"et": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazon-co-uk", "twitter", "wikipedia-et"
|
||||
]
|
||||
}
|
||||
},
|
||||
"eu": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-es", "bing", "elebila", "wikipedia-eu"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fa": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "wikipedia-fa"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ff": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-france", "bing", "amazon-france", "wikipedia-fr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fi": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazondotcom", "twitter", "wikipedia-fi", "yahoo-fi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fr": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-france", "bing", "duckduckgo", "qwant", "twitter", "wikipedia-fr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fy-NL": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "wikipedia-fy-NL", "bolcom-fy-NL"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ga-IE": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazon-en-GB", "tearma", "twitter", "wikipedia-ga-IE"
|
||||
]
|
||||
}
|
||||
},
|
||||
"gd": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-en-GB", "bing", "duckduckgo", "faclair-beag", "wikipedia-gd"
|
||||
]
|
||||
}
|
||||
},
|
||||
"gl": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-es", "bing", "amazondotcom", "twitter", "wikipedia-gl"
|
||||
]
|
||||
}
|
||||
},
|
||||
"gn": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-espanol", "bing", "amazondotcom", "twitter", "wikipedia-gn"
|
||||
]
|
||||
}
|
||||
},
|
||||
"gu-IN": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "wikipedia-gu"
|
||||
]
|
||||
}
|
||||
},
|
||||
"he": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "twitter", "wikipedia-he"
|
||||
]
|
||||
}
|
||||
},
|
||||
"hi-IN": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "twitter", "wikipedia-hi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"hr": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazon-en-GB", "duckduckgo", "twitter", "wikipedia-hr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"hsb": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-de", "bing", "amazon-de", "twitter", "wikipedia-hsb"
|
||||
]
|
||||
}
|
||||
},
|
||||
"hu": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "sztaki-en-hu", "vatera", "twitter", "wikipedia-hu"
|
||||
]
|
||||
}
|
||||
},
|
||||
"hy-AM": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "list-am", "wikipedia-hy-AM"
|
||||
]
|
||||
}
|
||||
},
|
||||
"id": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-id", "bing", "twitter", "wikipedia-id"
|
||||
]
|
||||
}
|
||||
},
|
||||
"is": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "leit-is", "wikipedia-is"
|
||||
]
|
||||
}
|
||||
},
|
||||
"it": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia-it"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ja": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazon-jp", "bing", "twitter-ja", "wikipedia-ja", "yahoo-jp"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ka": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "duckduckgo", "wikipedia-ka"
|
||||
]
|
||||
}
|
||||
},
|
||||
"kab": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-france", "bing", "wikipedia-kab"
|
||||
]
|
||||
}
|
||||
},
|
||||
"kk": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"yandex", "google", "yahoo", "bing", "twitter", "wikipedia-kk"
|
||||
]
|
||||
}
|
||||
},
|
||||
"km": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "twitter", "wikipedia-km"
|
||||
]
|
||||
}
|
||||
},
|
||||
"kn": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "twitter", "wikipedia-kn", "wiktionary-kn"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ko": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "danawa-kr", "twitter", "daum-kr", "naver-kr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lij": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazondotcom", "twitter", "wikipedia"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lo": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "twitter", "wikipedia-lo"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lt": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia-lt"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lv": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "salidzinilv", "sslv", "twitter", "wikipedia-lv"
|
||||
]
|
||||
}
|
||||
},
|
||||
"mai": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "twitter", "wikipedia-hi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ml": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "duckduckgo", "twitter", "wikipedia-ml"
|
||||
]
|
||||
}
|
||||
},
|
||||
"mr": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "rediff", "wikipedia-mr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "twitter", "wikipedia-ms"
|
||||
]
|
||||
}
|
||||
},
|
||||
"my": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "twitter", "wikipedia-my"
|
||||
]
|
||||
}
|
||||
},
|
||||
"nb-NO": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "duckduckgo", "gulesider-mobile-NO", "twitter", "wikipedia-NO"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ne-NP": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "twitter", "wikipedia-ne"
|
||||
]
|
||||
}
|
||||
},
|
||||
"nl": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "wikipedia-nl", "bolcom-nl"
|
||||
]
|
||||
}
|
||||
},
|
||||
"nn-NO": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "duckduckgo", "gulesider-mobile-NO", "twitter", "wikipedia-NN"
|
||||
]
|
||||
}
|
||||
},
|
||||
"or": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "wikipedia-or", "wiktionary-or"
|
||||
]
|
||||
}
|
||||
},
|
||||
"pa-IN": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "wikipedia-pa"
|
||||
]
|
||||
}
|
||||
},
|
||||
"pl": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "bing", "duckduckgo", "twitter", "wikipedia-pl"
|
||||
]
|
||||
}
|
||||
},
|
||||
"pt-BR": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-br", "bing", "twitter", "wikipedia-br"
|
||||
]
|
||||
}
|
||||
},
|
||||
"pt-PT": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "wikipedia-ptpt"
|
||||
]
|
||||
}
|
||||
},
|
||||
"rm": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-ch", "bing", "duckduckgo", "leo_ende_de", "pledarigrond", "wikipedia-rm"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ro": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia-ro"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ru": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yandex-ru", "twitter", "wikipedia-ru"
|
||||
]
|
||||
}
|
||||
},
|
||||
"sk": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "azet-sk", "slovnik-sk", "twitter", "wikipedia-sk"
|
||||
]
|
||||
}
|
||||
},
|
||||
"sl": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "ceneje", "odpiralni", "twitter", "wikipedia-sl"
|
||||
]
|
||||
}
|
||||
},
|
||||
"son": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-france", "bing", "amazon-fr", "twitter", "wikipedia-fr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"sq": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazon-en-GB", "twitter", "wikipedia-sq"
|
||||
]
|
||||
}
|
||||
},
|
||||
"sr": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "duckduckgo", "twitter", "wikipedia-sr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"sv-SE": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "prisjakt-sv-SE", "twitter", "wikipedia-sv-SE"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ta": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "duckduckgo", "wikipedia-ta", "wiktionary-ta"
|
||||
]
|
||||
}
|
||||
},
|
||||
"te": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "wikipedia-te", "wiktionary-te"
|
||||
]
|
||||
}
|
||||
},
|
||||
"th": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia-th"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tr": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"yandex-tr", "google", "twitter", "wikipedia-tr"
|
||||
]
|
||||
}
|
||||
},
|
||||
"trs": {
|
||||
"default": {
|
||||
"searchDefault": "Google",
|
||||
"visibleDefaultEngines": [
|
||||
"amazondotcom", "bing", "google", "twitter", "wikipedia-es", "yahoo-espanol"
|
||||
]
|
||||
}
|
||||
},
|
||||
"uk": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "twitter", "wikipedia-uk", "yandex-market"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ur": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo-in", "bing", "amazon-in", "duckduckgo", "twitter", "wikipedia-ur"
|
||||
]
|
||||
}
|
||||
},
|
||||
"uz": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "amazondotcom", "twitter", "wikipedia-uz"
|
||||
]
|
||||
}
|
||||
},
|
||||
"vi": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "amazondotcom", "twitter", "wikipedia-vi"
|
||||
]
|
||||
}
|
||||
},
|
||||
"xh": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "yahoo", "bing", "twitter", "wikipedia"
|
||||
]
|
||||
}
|
||||
},
|
||||
"zh-CN": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "baidu", "bing", "taobao", "wikipedia-zh-CN"
|
||||
]
|
||||
}
|
||||
},
|
||||
"zh-TW": {
|
||||
"default": {
|
||||
"visibleDefaultEngines": [
|
||||
"google", "bing", "duckduckgo", "wikipedia-zh-TW"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -477,5 +477,9 @@ ChildProcessInit(int argc, char* argv[])
|
|||
extern "C" APKOPEN_EXPORT jboolean MOZ_JNICALL
|
||||
Java_org_mozilla_gecko_mozglue_GeckoLoader_neonCompatible(JNIEnv *jenv, jclass jc)
|
||||
{
|
||||
#ifdef __ARM_EABI__
|
||||
return mozilla::supports_neon();
|
||||
#else
|
||||
return true;
|
||||
#endif // __ARM_EABI__
|
||||
}
|
||||
|
|
|
@ -1157,4 +1157,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
|||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1497971135298000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1498057610195000);
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
0x0a.net: could not connect to host
|
||||
0x1337.eu: could not connect to host
|
||||
0x44.net: did not receive HSTS header
|
||||
0x90.in: could not connect to host
|
||||
0xa.in: could not connect to host
|
||||
0xacab.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
0xb612.org: could not connect to host
|
||||
|
@ -29,6 +28,7 @@
|
|||
1xcess.com: did not receive HSTS header
|
||||
206rc.net: max-age too low: 2592000
|
||||
247loan.com: max-age too low: 0
|
||||
247quickbooks.com: did not receive HSTS header
|
||||
24hourpaint.com: could not connect to host
|
||||
25daysof.io: could not connect to host
|
||||
263.info: could not connect to host
|
||||
|
@ -53,7 +53,6 @@
|
|||
3yearloans.com: max-age too low: 0
|
||||
404.sh: max-age too low: 0
|
||||
42ms.org: could not connect to host
|
||||
441jj.com: did not receive HSTS header
|
||||
4455software.com: did not receive HSTS header
|
||||
4679.space: could not connect to host
|
||||
47ronin.com: did not receive HSTS header
|
||||
|
@ -130,7 +129,7 @@ adhs-chaoten.net: did not receive HSTS header
|
|||
admin.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
admitcard.co.in: did not receive HSTS header
|
||||
admsel.ec: could not connect to host
|
||||
adopteunsiteflash.com: could not connect to host
|
||||
adopteunsiteflash.com: did not receive HSTS header
|
||||
adquisitio.co.uk: could not connect to host
|
||||
adquisitio.de: could not connect to host
|
||||
adquisitio.es: could not connect to host
|
||||
|
@ -153,6 +152,7 @@ afp548.tk: could not connect to host
|
|||
agalaxyfarfaraway.co.uk: could not connect to host
|
||||
agbremen.de: did not receive HSTS header
|
||||
agentseeker.ca: did not receive HSTS header
|
||||
agowa338.de: could not connect to host
|
||||
agrimap.com: did not receive HSTS header
|
||||
agrios.de: did not receive HSTS header
|
||||
agro-id.gov.ua: could not connect to host
|
||||
|
@ -190,13 +190,12 @@ alethearose.com: did not receive HSTS header
|
|||
alexandre.sh: did not receive HSTS header
|
||||
alexisabarca.com: did not receive HSTS header
|
||||
alexsergeyev.com: could not connect to host
|
||||
alexvetter.de: did not receive HSTS header
|
||||
alfa24.pro: could not connect to host
|
||||
alittlebitcheeky.com: did not receive HSTS header
|
||||
aljaspod.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
alkami.com: did not receive HSTS header
|
||||
all-subtitles.com: did not receive HSTS header
|
||||
all.tf: could not connect to host
|
||||
all.tf: did not receive HSTS header
|
||||
alldaymonitoring.com: could not connect to host
|
||||
allforyou.at: could not connect to host
|
||||
allinnote.com: could not connect to host
|
||||
|
@ -237,7 +236,6 @@ andiplusben.com: could not connect to host
|
|||
andreasbreitenlohner.de: did not receive HSTS header
|
||||
andreastoneman.com: could not connect to host
|
||||
andreigec.net: did not receive HSTS header
|
||||
andrew.london: did not receive HSTS header
|
||||
andrewbroekman.com: could not connect to host
|
||||
andrewmichaud.beer: could not connect to host
|
||||
andrewregan.me: could not connect to host
|
||||
|
@ -274,6 +272,7 @@ antoniomarques.eu: did not receive HSTS header
|
|||
antoniorequena.com.ve: could not connect to host
|
||||
antscript.com: did not receive HSTS header
|
||||
anycoin.me: could not connect to host
|
||||
aosc.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
apachelounge.com: did not receive HSTS header
|
||||
aparaatti.org: could not connect to host
|
||||
apeasternpower.com: could not connect to host
|
||||
|
@ -284,7 +283,6 @@ apis.world: did not receive HSTS header
|
|||
apmg-certified.com: did not receive HSTS header
|
||||
apmg-cyber.com: did not receive HSTS header
|
||||
apnakliyat.com: did not receive HSTS header
|
||||
apolloyl.com: could not connect to host
|
||||
aponkralsunucu.com: could not connect to host
|
||||
app-arena.com: did not receive HSTS header
|
||||
app.lookout.com: did not receive HSTS header
|
||||
|
@ -394,6 +392,7 @@ avinet.com: max-age too low: 0
|
|||
avqueen.cn: did not receive HSTS header
|
||||
avus-automobile.com: did not receive HSTS header
|
||||
awg-mode.de: did not receive HSTS header
|
||||
awxg.com: could not connect to host
|
||||
axado.com.br: did not receive HSTS header
|
||||
axeny.com: did not receive HSTS header
|
||||
axg.io: could not connect to host
|
||||
|
@ -402,6 +401,7 @@ azazy.net: max-age too low: 2592000
|
|||
azprep.us: could not connect to host
|
||||
azuxul.fr: could not connect to host
|
||||
b3orion.com: max-age too low: 0
|
||||
b422edu.com: could not connect to host
|
||||
b64.club: could not connect to host
|
||||
babettelandmesser.de: max-age too low: 0
|
||||
baby-click.de: did not receive HSTS header
|
||||
|
@ -852,7 +852,6 @@ clint.id.au: max-age too low: 0
|
|||
clintonbloodworth.com: did not receive HSTS header
|
||||
clintonbloodworth.io: could not connect to host
|
||||
clintwilson.technology: max-age too low: 2592000
|
||||
clip.mx: did not receive HSTS header
|
||||
clipped4u.com: could not connect to host
|
||||
cloud.wtf: could not connect to host
|
||||
cloudapi.vc: could not connect to host
|
||||
|
@ -862,16 +861,17 @@ clouddesktop.co.nz: could not connect to host
|
|||
cloudey.net: did not receive HSTS header
|
||||
cloudflare.com: did not receive HSTS header
|
||||
cloudia.org: could not connect to host
|
||||
cloudily.com: could not connect to host
|
||||
cloudimag.es: could not connect to host
|
||||
cloudlink.club: could not connect to host
|
||||
cloudns.com.au: could not connect to host
|
||||
cloudspotterapp.com: did not receive HSTS header
|
||||
cloudstoragemaus.com: could not connect to host
|
||||
cloudstorm.me: could not connect to host
|
||||
cloudup.com: did not receive HSTS header
|
||||
cloudwalk.io: did not receive HSTS header
|
||||
cloverleaf.net: max-age too low: 0
|
||||
clubmate.rocks: could not connect to host
|
||||
cluster.id: could not connect to host
|
||||
clvrwebdesign.com: did not receive HSTS header
|
||||
clycat.ru: could not connect to host
|
||||
clywedogmaths.co.uk: could not connect to host
|
||||
|
@ -908,7 +908,6 @@ codewiththepros.org: could not connect to host
|
|||
codiva.io: max-age too low: 2592000
|
||||
coffeeetc.co.uk: did not receive HSTS header
|
||||
coffeestrategies.com: max-age too low: 2592000
|
||||
cohesive.io: did not receive HSTS header
|
||||
coiffeurschnittstelle.ch: did not receive HSTS header
|
||||
coindam.com: could not connect to host
|
||||
coldlostsick.net: could not connect to host
|
||||
|
@ -923,6 +922,7 @@ coloradocomputernetworking.net: could not connect to host
|
|||
combron.nl: did not receive HSTS header
|
||||
comfortdom.ua: did not receive HSTS header
|
||||
comfortticket.de: did not receive HSTS header
|
||||
comfy.moe: did not receive HSTS header
|
||||
comicspines.com: could not connect to host
|
||||
comotalk.com: could not connect to host
|
||||
compalytics.com: could not connect to host
|
||||
|
@ -964,7 +964,6 @@ correctpaardbatterijnietje.nl: did not receive HSTS header
|
|||
corruption-mc.net: could not connect to host
|
||||
corruption-rsps.net: could not connect to host
|
||||
corruption-server.net: could not connect to host
|
||||
cosmeticasimple.com: could not connect to host
|
||||
count.sh: could not connect to host
|
||||
couragewhispers.ca: did not receive HSTS header
|
||||
coursdeprogrammation.com: could not connect to host
|
||||
|
@ -1029,6 +1028,7 @@ cumshots-video.ru: could not connect to host
|
|||
cunha.be: could not connect to host
|
||||
cuntflaps.me: did not receive HSTS header
|
||||
cuongquach.com: did not receive HSTS header
|
||||
cup.al: could not connect to host
|
||||
cupidmentor.com: did not receive HSTS header
|
||||
curlyroots.com: did not receive HSTS header
|
||||
curroapp.com: could not connect to host
|
||||
|
@ -1082,6 +1082,7 @@ dashburst.com: did not receive HSTS header
|
|||
dashnimorad.com: did not receive HSTS header
|
||||
data-abundance.com: could not connect to host
|
||||
datahove.no: did not receive HSTS header
|
||||
dataisme.com: did not receive HSTS header
|
||||
datajapan.co.jp: could not connect to host
|
||||
datarank.com: max-age too low: 0
|
||||
dataretention.solutions: could not connect to host
|
||||
|
@ -1135,6 +1136,7 @@ demdis.org: could not connect to host
|
|||
demilitarized.ninja: could not connect to host
|
||||
democracychronicles.com: did not receive HSTS header
|
||||
demotops.com: did not receive HSTS header
|
||||
dengchangdong.com: did not receive HSTS header
|
||||
dengyong.org: could not connect to host
|
||||
denh.am: did not receive HSTS header
|
||||
denisjean.fr: could not connect to host
|
||||
|
@ -1182,12 +1184,12 @@ digitalriver.tk: could not connect to host
|
|||
digitalskillswap.com: could not connect to host
|
||||
dim.lighting: could not connect to host
|
||||
dinamoelektrik.com: max-age too low: 0
|
||||
dingcc.com: did not receive HSTS header
|
||||
dinkum.online: could not connect to host
|
||||
discoveringdocker.com: did not receive HSTS header
|
||||
discovery.lookout.com: did not receive HSTS header
|
||||
dislocated.de: did not receive HSTS header
|
||||
disowned.net: max-age too low: 0
|
||||
dissectcyber.com: could not connect to host
|
||||
dissimulo.me: could not connect to host
|
||||
ditrutoancau.vn: could not connect to host
|
||||
dittvertshus.no: could not connect to host
|
||||
|
@ -1213,7 +1215,6 @@ do.search.yahoo.com: did not receive HSTS header
|
|||
dobet.in: could not connect to host
|
||||
docid.io: could not connect to host
|
||||
docket.news: could not connect to host
|
||||
docs.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
docset.io: could not connect to host
|
||||
docufiel.com: could not connect to host
|
||||
doeswindowssuckforeveryoneorjustme.com: could not connect to host
|
||||
|
@ -1259,9 +1260,7 @@ dreadbyte.com: could not connect to host
|
|||
dreid.org: did not receive HSTS header
|
||||
drhopeson.com: could not connect to host
|
||||
drishti.guru: could not connect to host
|
||||
drive.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
drkmtrx.xyz: could not connect to host
|
||||
drobniuch.pl: could not connect to host
|
||||
droidboss.com: did not receive HSTS header
|
||||
dropcam.com: did not receive HSTS header
|
||||
drtroyhendrickson.com: could not connect to host
|
||||
|
@ -1323,7 +1322,6 @@ edmodo.com: did not receive HSTS header
|
|||
edp-collaborative.com: max-age too low: 2500
|
||||
eduvance.in: did not receive HSTS header
|
||||
edwards.me.uk: could not connect to host
|
||||
eelzak.nl: could not connect to host
|
||||
effectiveosgi.com: could not connect to host
|
||||
efficienthealth.com: did not receive HSTS header
|
||||
effortlesshr.com: did not receive HSTS header
|
||||
|
@ -1335,6 +1333,7 @@ ehito.ovh: could not connect to host
|
|||
ehrenamt-skpfcw.de: could not connect to host
|
||||
eicfood.com: could not connect to host
|
||||
eidolonhost.com: did not receive HSTS header
|
||||
eisp.it: could not connect to host
|
||||
ekbanden.nl: could not connect to host
|
||||
elaintehtaat.fi: did not receive HSTS header
|
||||
elan-organics.com: did not receive HSTS header
|
||||
|
@ -1367,6 +1366,7 @@ emmable.com: could not connect to host
|
|||
emnitech.com: could not connect to host
|
||||
empleosentorreon.mx: could not connect to host
|
||||
empleostampico.com: did not receive HSTS header
|
||||
empty-r.com: could not connect to host
|
||||
enaah.de: could not connect to host
|
||||
enargia.jp: max-age too low: 0
|
||||
encode.host: did not receive HSTS header
|
||||
|
@ -1382,6 +1382,7 @@ enersec.co.uk: could not connect to host
|
|||
engelwerbung.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
engg.ca: could not connect to host
|
||||
enginepit.com: could not connect to host
|
||||
enginsight.com: did not receive HSTS header
|
||||
enigmacpt.com: did not receive HSTS header
|
||||
enigmail.net: did not receive HSTS header
|
||||
enjoy-nepal.de: max-age too low: 0
|
||||
|
@ -1439,10 +1440,12 @@ etula.ga: could not connect to host
|
|||
etula.me: could not connect to host
|
||||
euanbaines.com: did not receive HSTS header
|
||||
eucl3d.com: did not receive HSTS header
|
||||
euclideanpostulates.xyz: could not connect to host
|
||||
eulerpi.io: could not connect to host
|
||||
eupho.me: could not connect to host
|
||||
euroshop24.net: could not connect to host
|
||||
evafojtova.cz: did not receive HSTS header
|
||||
evalesc.com: could not connect to host
|
||||
evantage.org: could not connect to host
|
||||
evdenevenakliyatankara.pw: did not receive HSTS header
|
||||
everybooks.com: max-age too low: 60
|
||||
|
@ -1461,7 +1464,6 @@ exitus.jp: max-age too low: 0
|
|||
exno.co: could not connect to host
|
||||
exon.io: did not receive HSTS header
|
||||
exousiakaidunamis.xyz: did not receive HSTS header
|
||||
expatads.com: did not receive HSTS header
|
||||
expertmile.com: did not receive HSTS header
|
||||
expoundite.net: did not receive HSTS header
|
||||
expressfinance.co.za: did not receive HSTS header
|
||||
|
@ -1517,7 +1519,6 @@ fedux.com.ar: could not connect to host
|
|||
feezmodo.com: max-age too low: 0
|
||||
felisslovakia.sk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
feliwyn.fr: did not receive HSTS header
|
||||
felixklein.at: could not connect to host
|
||||
feminists.co: could not connect to host
|
||||
fenteo.com: could not connect to host
|
||||
feragon.net: did not receive HSTS header
|
||||
|
@ -1551,7 +1552,7 @@ firstdogonthemoon.com.au: did not receive HSTS header
|
|||
firstforex.co.uk: did not receive HSTS header
|
||||
fish2.me: did not receive HSTS header
|
||||
fit4medien.de: did not receive HSTS header
|
||||
fitbylo.com: could not connect to host
|
||||
fitbylo.com: did not receive HSTS header
|
||||
fitiapp.com: could not connect to host
|
||||
fitnesswerk.de: could not connect to host
|
||||
five.vn: did not receive HSTS header
|
||||
|
@ -1595,7 +1596,7 @@ foreignexchangeresource.com: did not receive HSTS header
|
|||
foreveralone.io: could not connect to host
|
||||
forex-dan.com: did not receive HSTS header
|
||||
forextimes.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
formazioneopen.it: did not receive HSTS header
|
||||
formazioneopen.it: could not connect to host
|
||||
formbetter.com: could not connect to host
|
||||
formula.cf: could not connect to host
|
||||
fotiu.com: could not connect to host
|
||||
|
@ -1613,6 +1614,7 @@ foxtrot.pw: could not connect to host
|
|||
fr33d0m.link: could not connect to host
|
||||
francevpn.xyz: could not connect to host
|
||||
frangor.info: did not receive HSTS header
|
||||
frank.fyi: could not connect to host
|
||||
frankwei.xyz: did not receive HSTS header
|
||||
franta.biz: did not receive HSTS header
|
||||
franta.email: did not receive HSTS header
|
||||
|
@ -1620,7 +1622,6 @@ franzt.de: could not connect to host
|
|||
frasys.io: did not receive HSTS header
|
||||
fredvoyage.fr: did not receive HSTS header
|
||||
freeflow.tv: could not connect to host
|
||||
freemanning.de: did not receive HSTS header
|
||||
freematthale.net: did not receive HSTS header
|
||||
freemedforms.com: did not receive HSTS header
|
||||
freesoftwaredriver.com: did not receive HSTS header
|
||||
|
@ -1632,6 +1633,7 @@ frenzel.dk: could not connect to host
|
|||
freqlabs.com: could not connect to host
|
||||
freshfind.xyz: could not connect to host
|
||||
freshlymind.com: did not receive HSTS header
|
||||
fretscha.com: could not connect to host
|
||||
frforms.com: did not receive HSTS header
|
||||
friendica.ch: could not connect to host
|
||||
friendlyfiregameshow.com: could not connect to host
|
||||
|
@ -1656,6 +1658,7 @@ furiffic.com: did not receive HSTS header
|
|||
furnation.com: could not connect to host
|
||||
furry.be: max-age too low: 86400
|
||||
fusedrops.com: could not connect to host
|
||||
fushee.com: could not connect to host
|
||||
fusionmate.com: could not connect to host
|
||||
futbol11.com: did not receive HSTS header
|
||||
futurenda.com: could not connect to host
|
||||
|
@ -1675,6 +1678,7 @@ g5led.nl: could not connect to host
|
|||
gabber.scot: could not connect to host
|
||||
gaelleetarnaud.com: did not receive HSTS header
|
||||
gafachi.com: could not connect to host
|
||||
gaiserik.com: could not connect to host
|
||||
gakkainavi.jp: did not receive HSTS header
|
||||
gakkainavi4.com: could not connect to host
|
||||
gakkainavi4.net: did not receive HSTS header
|
||||
|
@ -1840,7 +1844,6 @@ gregorytlee.me: did not receive HSTS header
|
|||
gremots.com: could not connect to host
|
||||
greplin.com: could not connect to host
|
||||
gresb.com: did not receive HSTS header
|
||||
greyline.se: could not connect to host
|
||||
gribani.com: could not connect to host
|
||||
grigalanzsoftware.com: could not connect to host
|
||||
gripopgriep.net: could not connect to host
|
||||
|
@ -1859,6 +1862,7 @@ gtlfsonlinepay.com: did not receive HSTS header
|
|||
gtraxapp.com: could not connect to host
|
||||
gts-schulsoftware.de: did not receive HSTS header
|
||||
guava.studio: did not receive HSTS header
|
||||
guge.gq: could not connect to host
|
||||
gugga.dk: did not receive HSTS header
|
||||
guilde-vindicta.fr: did not receive HSTS header
|
||||
gulenet.com: could not connect to host
|
||||
|
@ -1866,6 +1870,8 @@ gunnarhafdal.com: did not receive HSTS header
|
|||
gurom.lv: could not connect to host
|
||||
gurusupe.com: could not connect to host
|
||||
guso.gq: could not connect to host
|
||||
guso.ml: could not connect to host
|
||||
guso.tech: could not connect to host
|
||||
gussi.is: did not receive HSTS header
|
||||
gvt2.com: could not connect to host (error ignored - included regardless)
|
||||
gvt3.com: could not connect to host (error ignored - included regardless)
|
||||
|
@ -1885,7 +1891,6 @@ habbo.life: did not receive HSTS header
|
|||
hablemosdetecnologia.com.ve: could not connect to host
|
||||
hack.cz: could not connect to host
|
||||
hack.li: could not connect to host
|
||||
hackerchai.com: could not connect to host
|
||||
hackerforever.com: did not receive HSTS header
|
||||
hackerone-ext-adroll.com: could not connect to host
|
||||
hackest.org: did not receive HSTS header
|
||||
|
@ -2008,6 +2013,7 @@ hostedtalkgadget.google.com: did not receive HSTS header (error ignored - includ
|
|||
hostgarou.com: did not receive HSTS header
|
||||
hostinaus.com.au: could not connect to host
|
||||
hostisan.com: did not receive HSTS header
|
||||
hotartup.com: could not connect to host
|
||||
hotchillibox.com: max-age too low: 0
|
||||
hotchoc.io: did not receive HSTS header
|
||||
houkago-step.com: did not receive HSTS header
|
||||
|
@ -2018,6 +2024,7 @@ howtocuremysciatica.com: could not connect to host
|
|||
hr-intranet.com: did not receive HSTS header
|
||||
hsandbox.tech: max-age too low: 2592000
|
||||
hsir.me: could not connect to host
|
||||
hsts.com.br: could not connect to host
|
||||
hsts.date: could not connect to host
|
||||
http418.xyz: could not connect to host
|
||||
httpstatuscode418.xyz: could not connect to host
|
||||
|
@ -2031,6 +2038,7 @@ humeurs.net: could not connect to host
|
|||
humpi.at: could not connect to host
|
||||
humpteedumptee.in: did not receive HSTS header
|
||||
huntshomeinspections.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
hup.blue: could not connect to host
|
||||
hurricanelabs.com: did not receive HSTS header
|
||||
huskybutt.dog: could not connect to host
|
||||
hxying.com: could not connect to host
|
||||
|
@ -2094,7 +2102,7 @@ ilikerainbows.co: could not connect to host
|
|||
ilikerainbows.co.uk: could not connect to host
|
||||
ilmconpm.de: did not receive HSTS header
|
||||
ilona.graphics: max-age too low: 3600
|
||||
iluvscotland.co.uk: could not connect to host
|
||||
iluvscotland.co.uk: did not receive HSTS header
|
||||
imakepoems.net: could not connect to host
|
||||
imanolbarba.net: could not connect to host
|
||||
ime.moe: could not connect to host
|
||||
|
@ -2111,6 +2119,7 @@ immunicity.works: did not receive HSTS header
|
|||
immunicity.world: did not receive HSTS header
|
||||
imolug.org: did not receive HSTS header
|
||||
imouto.my: max-age too low: 5184000
|
||||
imouyang.com: did not receive HSTS header
|
||||
imperialwebsolutions.com: did not receive HSTS header
|
||||
imu.li: did not receive HSTS header
|
||||
imusic.dk: did not receive HSTS header
|
||||
|
@ -2138,7 +2147,6 @@ inksupply.com: did not receive HSTS header
|
|||
inleaked.com: could not connect to host
|
||||
inmyarea.com: max-age too low: 0
|
||||
innophate-security.nl: could not connect to host
|
||||
inquisitive.io: did not receive HSTS header
|
||||
ins1gn1a.com: did not receive HSTS header
|
||||
insane-bullets.com: could not connect to host
|
||||
insane.zone: could not connect to host
|
||||
|
@ -2146,11 +2154,13 @@ insite-feedback.com: did not receive HSTS header
|
|||
inspire-av.com: did not receive HSTS header
|
||||
inspiroinc.com: could not connect to host
|
||||
instacart.com: did not receive HSTS header
|
||||
installgentoo.net: could not connect to host
|
||||
instantdev.io: could not connect to host
|
||||
institutoflordelavida.com: could not connect to host
|
||||
intel.li: could not connect to host
|
||||
interference.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
interlun.com: could not connect to host
|
||||
internect.co.za: did not receive HSTS header
|
||||
internetcasinos.de: could not connect to host
|
||||
internetcensus.org: could not connect to host
|
||||
interserved.com: did not receive HSTS header
|
||||
|
@ -2165,6 +2175,7 @@ inverselink.com: could not connect to host
|
|||
invictusmc.uk: did not receive HSTS header
|
||||
invite24.pro: could not connect to host
|
||||
inwesttitle.com: max-age too low: 0
|
||||
ioiart.eu: could not connect to host
|
||||
ionx.co.uk: did not receive HSTS header
|
||||
iop.intuit.com: max-age too low: 86400
|
||||
iora.fr: could not connect to host
|
||||
|
@ -2177,7 +2188,7 @@ iprody.com: could not connect to host
|
|||
iptel.by: max-age too low: 0
|
||||
iptel.ro: could not connect to host
|
||||
ipv6cloud.club: could not connect to host
|
||||
iqcn.co: did not receive HSTS header
|
||||
iqcn.co: could not connect to host
|
||||
iqualtech.com: did not receive HSTS header
|
||||
iranianlawschool.com: could not connect to host
|
||||
iraqidinar.org: did not receive HSTS header
|
||||
|
@ -2201,7 +2212,6 @@ it-go.net: did not receive HSTS header
|
|||
itechgeek.com: max-age too low: 0
|
||||
ithakama.com: did not receive HSTS header
|
||||
ithakama.cz: did not receive HSTS header
|
||||
ithenrik.com: could not connect to host
|
||||
itos.asia: did not receive HSTS header
|
||||
itos.pl: did not receive HSTS header
|
||||
itriskltd.com: could not connect to host
|
||||
|
@ -2217,7 +2227,7 @@ ivi-fertility.com: max-age too low: 0
|
|||
ivi.es: max-age too low: 0
|
||||
ivk.website: could not connect to host
|
||||
ivo.co.za: could not connect to host
|
||||
ixec2.tk: did not receive HSTS header
|
||||
ixec2.tk: could not connect to host
|
||||
izdiwho.com: could not connect to host
|
||||
izolight.ch: could not connect to host
|
||||
izoox.com: did not receive HSTS header
|
||||
|
@ -2241,6 +2251,7 @@ jamesconroyfinn.com: did not receive HSTS header
|
|||
jamesdoell.com: could not connect to host
|
||||
jamesdoylephoto.com: did not receive HSTS header
|
||||
jamesf.xyz: could not connect to host
|
||||
jamesheald.com: did not receive HSTS header
|
||||
jamesmaurer.com: did not receive HSTS header
|
||||
jamesmorrison.me: did not receive HSTS header
|
||||
jamessan.com: did not receive HSTS header
|
||||
|
@ -2312,6 +2323,7 @@ joedavison.me: could not connect to host
|
|||
johannes-sprink.de: could not connect to host
|
||||
johners.me: could not connect to host
|
||||
johnrom.com: did not receive HSTS header
|
||||
jollausers.de: could not connect to host
|
||||
jonas-keidel.de: did not receive HSTS header
|
||||
jonasgroth.se: did not receive HSTS header
|
||||
jonathan.ir: could not connect to host
|
||||
|
@ -2319,7 +2331,6 @@ jonn.me: could not connect to host
|
|||
joostbovee.nl: did not receive HSTS header
|
||||
jordanhamilton.me: could not connect to host
|
||||
joretapo.fr: did not receive HSTS header
|
||||
jornane.no: could not connect to host
|
||||
josahrens.me: could not connect to host
|
||||
joshi.su: could not connect to host
|
||||
joshstroup.me: could not connect to host
|
||||
|
@ -2354,7 +2365,6 @@ k-dev.de: could not connect to host
|
|||
ka-clan.com: could not connect to host
|
||||
kabinapp.com: could not connect to host
|
||||
kabuabc.com: did not receive HSTS header
|
||||
kabus.org: could not connect to host
|
||||
kadioglumakina.com.tr: did not receive HSTS header
|
||||
kaela.design: could not connect to host
|
||||
kahopoon.net: could not connect to host
|
||||
|
@ -2459,7 +2469,6 @@ krayx.com: could not connect to host
|
|||
kreavis.com: did not receive HSTS header
|
||||
kredite.sale: could not connect to host
|
||||
kriegt.es: did not receive HSTS header
|
||||
kristikala.nl: could not connect to host
|
||||
krizevci.info: did not receive HSTS header
|
||||
kroetenfuchs.de: could not connect to host
|
||||
kropkait.pl: could not connect to host
|
||||
|
@ -2492,7 +2501,6 @@ kz.search.yahoo.com: did not receive HSTS header
|
|||
kzjnet.com: could not connect to host
|
||||
l2guru.ru: could not connect to host
|
||||
labaia.info: could not connect to host
|
||||
labfox.de: could not connect to host
|
||||
labina.com.tr: did not receive HSTS header
|
||||
laboiteapc.fr: did not receive HSTS header
|
||||
labordata.io: did not receive HSTS header
|
||||
|
@ -2534,6 +2542,7 @@ leadership9.com: could not connect to host
|
|||
leardev.de: did not receive HSTS header
|
||||
learnfrenchfluently.com: did not receive HSTS header
|
||||
learningorder.com: could not connect to host
|
||||
lebal.se: did not receive HSTS header
|
||||
lechiennoir.net: did not receive HSTS header
|
||||
ledgerscope.net: could not connect to host
|
||||
leermotorrijden.nl: max-age too low: 300
|
||||
|
@ -2584,7 +2593,6 @@ lianye6.cc: could not connect to host
|
|||
lianyexiuchang.in: could not connect to host
|
||||
liaoshuma.com: could not connect to host
|
||||
libanco.com: could not connect to host
|
||||
libbitcoin.org: could not connect to host
|
||||
libertyrp.org: could not connect to host
|
||||
library.linode.com: did not receive HSTS header
|
||||
librechan.net: could not connect to host
|
||||
|
@ -2621,7 +2629,6 @@ linuxforyou.com: could not connect to host
|
|||
linuxgeek.ro: could not connect to host
|
||||
linuxmonitoring.net: did not receive HSTS header
|
||||
liquorsanthe.in: could not connect to host
|
||||
lisonfan.com: did not receive HSTS header
|
||||
listafirmelor.com: could not connect to host
|
||||
litespeed.io: could not connect to host
|
||||
litz.ca: could not connect to host
|
||||
|
@ -2629,8 +2636,6 @@ litzenberger.ca: could not connect to host
|
|||
livedemo.io: could not connect to host
|
||||
livej.am: could not connect to host
|
||||
livi.co: did not receive HSTS header
|
||||
livnev.me: could not connect to host
|
||||
livnev.xyz: could not connect to host
|
||||
loadingdeck.com: did not receive HSTS header
|
||||
loadso.me: could not connect to host
|
||||
loafbox.com: could not connect to host
|
||||
|
@ -2666,6 +2671,7 @@ lt.search.yahoo.com: did not receive HSTS header
|
|||
ltbytes.com: could not connect to host
|
||||
lu.search.yahoo.com: did not receive HSTS header
|
||||
lucaterzini.com: could not connect to host
|
||||
ludwiggrill.de: could not connect to host
|
||||
lufthansaexperts.com: max-age too low: 2592000
|
||||
luine.xyz: did not receive HSTS header
|
||||
luis-checa.com: could not connect to host
|
||||
|
@ -2702,7 +2708,7 @@ mac-torrents.me: did not receive HSTS header
|
|||
macchaberrycream.com: could not connect to host
|
||||
macdj.tk: could not connect to host
|
||||
macgeneral.de: did not receive HSTS header
|
||||
macsandcheesedreams.com: did not receive HSTS header
|
||||
macsandcheesedreams.com: could not connect to host
|
||||
madars.org: did not receive HSTS header
|
||||
maddin.ga: could not connect to host
|
||||
madebymagnitude.com: did not receive HSTS header
|
||||
|
@ -2731,8 +2737,7 @@ mamaxi.org: did not receive HSTS header
|
|||
mammothmail.com: could not connect to host
|
||||
mammothmail.net: could not connect to host
|
||||
mammothmail.org: could not connect to host
|
||||
managemynetsuite.com: could not connect to host
|
||||
managewp.org: did not receive HSTS header
|
||||
managemynetsuite.com: did not receive HSTS header
|
||||
maniadeprazer.com.br: could not connect to host
|
||||
manifestbin.com: did not receive HSTS header
|
||||
manningbrothers.com: did not receive HSTS header
|
||||
|
@ -2741,14 +2746,17 @@ mansion-note.com: did not receive HSTS header
|
|||
maomaofuli.vip: could not connect to host
|
||||
maple5.com: did not receive HSTS header
|
||||
marchagen.nl: did not receive HSTS header
|
||||
marcoececilia.it: could not connect to host
|
||||
marcofinke.de: could not connect to host
|
||||
marcontrol.com: did not receive HSTS header
|
||||
marcosteixeira.tk: could not connect to host
|
||||
marcuskoh.com: did not receive HSTS header
|
||||
margaretrosefashions.co.uk: could not connect to host
|
||||
mariannematthew.com: could not connect to host
|
||||
marie-curie.fr: could not connect to host
|
||||
marie-elisabeth.dk: did not receive HSTS header
|
||||
marie-en-provence.com: did not receive HSTS header
|
||||
marie.club: could not connect to host
|
||||
markaconnor.com: could not connect to host
|
||||
markayapilandirma.com: could not connect to host
|
||||
market.android.com: did not receive HSTS header (error ignored - included regardless)
|
||||
|
@ -3032,6 +3040,7 @@ mypension.ca: could not connect to host
|
|||
myphonebox.de: could not connect to host
|
||||
mysecretrewards.com: did not receive HSTS header
|
||||
mystery-science-theater-3000.de: did not receive HSTS header
|
||||
mythslegendscollection.com: did not receive HSTS header
|
||||
mytweeps.com: could not connect to host
|
||||
myvirtualserver.com: max-age too low: 2592000
|
||||
myzone.com: did not receive HSTS header
|
||||
|
@ -3082,7 +3091,6 @@ nedzad.me: could not connect to host
|
|||
neels.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
neftaly.com: did not receive HSTS header
|
||||
neilgreen.net: did not receive HSTS header
|
||||
neillans.com: did not receive HSTS header
|
||||
neko-life.com: did not receive HSTS header
|
||||
neko-system.com: did not receive HSTS header
|
||||
nemno.de: could not connect to host
|
||||
|
@ -3097,6 +3105,7 @@ netherwind.eu: could not connect to host
|
|||
netloanusa.com: max-age too low: 0
|
||||
netmagik.com: did not receive HSTS header
|
||||
nettefoundation.com: could not connect to host
|
||||
networth.at: could not connect to host
|
||||
networx-online.de: could not connect to host
|
||||
netzbit.de: could not connect to host
|
||||
netzpolitik.org: did not receive HSTS header
|
||||
|
@ -3107,6 +3116,7 @@ neuronfactor.com: [Exception... "Component returned failure code: 0x80004005 (NS
|
|||
neutralox.com: did not receive HSTS header
|
||||
never-afk.de: did not receive HSTS header
|
||||
neveta.com: could not connect to host
|
||||
new.travel.pl: did not receive HSTS header
|
||||
newcitygas.ca: max-age too low: 0
|
||||
newgenerationplus.org: could not connect to host
|
||||
newhdmovies.io: did not receive HSTS header
|
||||
|
@ -3132,16 +3142,16 @@ nicoborghuis.nl: could not connect to host
|
|||
nicolasbettag.me: did not receive HSTS header
|
||||
niconiconi.xyz: could not connect to host
|
||||
niconode.com: could not connect to host
|
||||
niduxcomercial.com: could not connect to host
|
||||
nien.chat: could not connect to host
|
||||
nightwinds.tk: could not connect to host
|
||||
nightx.uk: 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 118" data: no]
|
||||
nikcub.com: could not connect to host
|
||||
niklas.pw: could not connect to host
|
||||
niklaslindblad.se: did not receive HSTS header
|
||||
nikomo.fi: could not connect to host
|
||||
ninchisho-online.com: did not receive HSTS header
|
||||
ninhs.org: could not connect to host
|
||||
ninhs.org: did not receive HSTS header
|
||||
nippler.org: did not receive HSTS header
|
||||
nippombashi.net: could not connect to host
|
||||
nipponcareers.com: did not receive HSTS header
|
||||
|
@ -3178,7 +3188,6 @@ notenoughtime.de: could not connect to host
|
|||
nottheonion.net: did not receive HSTS header
|
||||
nouvelle-vague-saint-cast.fr: did not receive HSTS header
|
||||
novacoast.com: did not receive HSTS header
|
||||
novascan.net: could not connect to host
|
||||
novatrucking.de: could not connect to host
|
||||
novawave.ca: did not receive HSTS header
|
||||
nowak.ninja: did not receive HSTS header
|
||||
|
@ -3267,6 +3276,7 @@ oneminutefilm.tv: could not connect to host
|
|||
onepluscamps.com: could not connect to host
|
||||
onespiritinc.com: did not receive HSTS header
|
||||
onet.space: could not connect to host
|
||||
onewpst.com: did not receive HSTS header
|
||||
oniichan.us: did not receive HSTS header
|
||||
online-casino.eu: did not receive HSTS header
|
||||
online-wetten.de: did not receive HSTS header
|
||||
|
@ -3299,7 +3309,7 @@ openshift.redhat.com: did not receive HSTS header
|
|||
opensrd.com: could not connect to host
|
||||
openxmpp.com: could not connect to host
|
||||
opim.ca: did not receive HSTS header
|
||||
opperwall.net: could not connect to host
|
||||
opperwall.net: did not receive HSTS header
|
||||
opsafewinter.net: could not connect to host
|
||||
opsbears.com: did not receive HSTS header
|
||||
optenhoefel.de: could not connect to host
|
||||
|
@ -3321,6 +3331,7 @@ orleika.ml: could not connect to host
|
|||
orthodoxy.lt: did not receive HSTS header
|
||||
orwell1984.today: could not connect to host
|
||||
osaiyuwu.com: could not connect to host
|
||||
oskuro.net: could not connect to host
|
||||
oslfoundation.org: could not connect to host
|
||||
oslinux.net: did not receive HSTS header
|
||||
osp.cx: could not connect to host
|
||||
|
@ -3350,6 +3361,7 @@ owncloud.help: could not connect to host
|
|||
ownmovies.fr: could not connect to host
|
||||
oxygenabsorbers.com: did not receive HSTS header
|
||||
oxynux.fr: could not connect to host
|
||||
oxynux.xyz: could not connect to host
|
||||
p.linode.com: could not connect to host
|
||||
p8r.de: could not connect to host
|
||||
pa.search.yahoo.com: did not receive HSTS header
|
||||
|
@ -3368,7 +3380,7 @@ pamplona.tv: could not connect to host
|
|||
pamsoft.pl: max-age too low: 0
|
||||
panaceallc.net: could not connect to host
|
||||
panamaequity.com: did not receive HSTS header
|
||||
panamateakforestry.com: could not connect to host
|
||||
panamateakforestry.com: did not receive HSTS header
|
||||
panoranordic.net: could not connect to host
|
||||
pansu.space: could not connect to host
|
||||
pants-off.xyz: could not connect to host
|
||||
|
@ -3454,6 +3466,7 @@ petsittersservices.com: could not connect to host
|
|||
pettsy.com: could not connect to host
|
||||
pewboards.com: could not connect to host
|
||||
pexieapp.com: did not receive HSTS header
|
||||
peytonfarrar.com: did not receive HSTS header
|
||||
pflege.de: did not receive HSTS header
|
||||
pgpm.io: could not connect to host
|
||||
pharmgkb.org: could not connect to host
|
||||
|
@ -3477,7 +3490,6 @@ piggott.me.uk: did not receive HSTS header
|
|||
pilgermaske.org: did not receive HSTS header
|
||||
piligrimname.com: could not connect to host
|
||||
pillowandpepper.com: did not receive HSTS header
|
||||
pimpmymac.ru: could not connect to host
|
||||
pincodeit.com: could not connect to host
|
||||
pippen.io: could not connect to host
|
||||
piratedb.com: could not connect to host
|
||||
|
@ -3506,6 +3518,7 @@ play.google.com: did not receive HSTS header (error ignored - included regardles
|
|||
playflick.com: did not receive HSTS header
|
||||
playkh.com: did not receive HSTS header
|
||||
playmaker.io: could not connect to host
|
||||
playmyplay.com: did not receive HSTS header
|
||||
playnation.io: could not connect to host
|
||||
pleier-it.de: did not receive HSTS header
|
||||
pleier.it: could not connect to host
|
||||
|
@ -3519,6 +3532,7 @@ ploup.net: could not connect to host
|
|||
pluff.nl: could not connect to host
|
||||
plur.com.au: did not receive HSTS header
|
||||
pmnts.io: could not connect to host
|
||||
pnona.cz: could not connect to host
|
||||
po.gl: did not receive HSTS header
|
||||
pocketsix.com: could not connect to host
|
||||
pocloud.homelinux.net: could not connect to host
|
||||
|
@ -3537,16 +3551,17 @@ polypho.nyc: could not connect to host
|
|||
pompompoes.com: could not connect to host
|
||||
pontualcomp.com: max-age too low: 2592000
|
||||
poolsandstuff.com: did not receive HSTS header
|
||||
poolvilla-margarita.net: did not receive HSTS header
|
||||
poolvilla-margarita.net: could not connect to host
|
||||
poon.tech: could not connect to host
|
||||
porno-gif.ru: did not receive HSTS header
|
||||
portalplatform.net: did not receive HSTS header
|
||||
poshpak.com: max-age too low: 86400
|
||||
postcodewise.co.uk: did not receive HSTS header
|
||||
posterspy.com: did not receive HSTS header
|
||||
postscheduler.org: could not connect to host
|
||||
posylka.de: did not receive HSTS header
|
||||
potatoheads.net: could not connect to host
|
||||
potbar.com: could not connect to host
|
||||
potlytics.com: could not connect to host
|
||||
poussinooz.fr: could not connect to host
|
||||
povitria.net: could not connect to host
|
||||
power99press.com: did not receive HSTS header
|
||||
|
@ -3672,10 +3687,11 @@ rastreador.com.es: did not receive HSTS header
|
|||
ratajczak.fr: could not connect to host
|
||||
rate-esport.de: could not connect to host
|
||||
rationalism.com: could not connect to host
|
||||
rauchenwald.net: did not receive HSTS header
|
||||
rauchenwald.net: could not connect to host
|
||||
raulfraile.net: could not connect to host
|
||||
raven.lipetsk.ru: could not connect to host
|
||||
rawet.se: could not connect to host
|
||||
rawoil.com: could not connect to host
|
||||
rawstorieslondon.com: could not connect to host
|
||||
raydan.space: could not connect to host
|
||||
raydobe.me: could not connect to host
|
||||
|
@ -3692,7 +3708,6 @@ realmic.net: could not connect to host
|
|||
realmofespionage.com: could not connect to host
|
||||
reaper.rip: could not connect to host
|
||||
reardenporn.com: could not connect to host
|
||||
recolic.net: did not receive HSTS header
|
||||
recommended.reviews: could not connect to host
|
||||
redable.hosting: could not connect to host
|
||||
redar.xyz: could not connect to host
|
||||
|
@ -3709,6 +3724,7 @@ regalpalms.com: did not receive HSTS header
|
|||
regenbogenwald.de: did not receive HSTS header
|
||||
regenerescence.com: did not receive HSTS header
|
||||
reggae-cdmx.com: did not receive HSTS header
|
||||
rei.ki: could not connect to host
|
||||
reic.me: could not connect to host
|
||||
reisyukaku.org: did not receive HSTS header
|
||||
reithguard-it.de: did not receive HSTS header
|
||||
|
@ -3844,6 +3860,7 @@ s.how: did not receive HSTS header
|
|||
safematix.com: could not connect to host
|
||||
safemovescheme.co.uk: did not receive HSTS header
|
||||
saferedirect.link: could not connect to host
|
||||
safetyrisk.net: did not receive HSTS header
|
||||
safewings-nh.nl: did not receive HSTS header
|
||||
sageth.com: max-age too low: 0
|
||||
sah3.net: could not connect to host
|
||||
|
@ -3946,7 +3963,6 @@ securityinet.net: did not receive HSTS header
|
|||
securityinet.org.il: did not receive HSTS header
|
||||
securiviera.ch: did not receive HSTS header
|
||||
sedrubal.de: could not connect to host
|
||||
sedziapilkarski.pl: could not connect to host
|
||||
seedboxers.net: did not receive HSTS header
|
||||
seele.ca: could not connect to host
|
||||
segulink.com: could not connect to host
|
||||
|
@ -4018,7 +4034,6 @@ shooshosha.com: did not receive HSTS header
|
|||
shopontarget.com: did not receive HSTS header
|
||||
shoprose.ru: could not connect to host
|
||||
shops.neonisi.com: could not connect to host
|
||||
shortpath.com: could not connect to host
|
||||
shortr.li: could not connect to host
|
||||
showkeeper.tv: did not receive HSTS header
|
||||
shu-kin.net: could not connect to host
|
||||
|
@ -4054,15 +4069,13 @@ simpleai.net: max-age too low: 600
|
|||
simplefraud.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
simplelearner.com: could not connect to host
|
||||
simplepractice.com: did not receive HSTS header
|
||||
simplixos.org: could not connect to host
|
||||
simply-premium.com: max-age too low: 0
|
||||
simply-premium.com: did not receive HSTS header
|
||||
sin30.net: could not connect to host
|
||||
sincron.org: could not connect to host
|
||||
sinful.pw: could not connect to host
|
||||
sinfulforums.net: could not connect to host
|
||||
singul4rity.com: could not connect to host
|
||||
sinosky.org: could not connect to host
|
||||
siraweb.org: did not receive HSTS header
|
||||
siriad.com: could not connect to host
|
||||
sirius-lee.net: could not connect to host
|
||||
sitennisclub.com: did not receive HSTS header
|
||||
|
@ -4087,15 +4100,16 @@ slash-dev.de: did not receive HSTS header
|
|||
slashand.co: did not receive HSTS header
|
||||
slashem.me: did not receive HSTS header
|
||||
slattery.co: could not connect to host
|
||||
slauber.de: did not receive HSTS header
|
||||
sleep10.com: could not connect to host
|
||||
slicketl.com: did not receive HSTS header
|
||||
slightfuture.click: could not connect to host
|
||||
slix.io: could not connect to host
|
||||
slope.haus: could not connect to host
|
||||
slovakiana.sk: did not receive HSTS header
|
||||
slowfood.es: could not connect to host
|
||||
sluitkampzeist.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
slycurity.de: could not connect to host
|
||||
smallchat.nl: could not connect to host
|
||||
smart-mirror.de: did not receive HSTS header
|
||||
smart-ov.nl: could not connect to host
|
||||
smartcoin.com.br: could not connect to host
|
||||
|
@ -4119,6 +4133,7 @@ snapworks.net: did not receive HSTS header
|
|||
snel4u.nl: could not connect to host
|
||||
snelwerk.be: did not receive HSTS header
|
||||
sng.my: could not connect to host
|
||||
sniderman.eu.org: could not connect to host
|
||||
snille.com: could not connect to host
|
||||
snip.host: could not connect to host
|
||||
snoozedds.com: max-age too low: 600
|
||||
|
@ -4151,7 +4166,6 @@ sonic.network: did not receive HSTS header
|
|||
sonicrainboom.rocks: could not connect to host
|
||||
soobi.org: did not receive HSTS header
|
||||
soondy.com: did not receive HSTS header
|
||||
sotiran.com: could not connect to host
|
||||
sotor.de: did not receive HSTS header
|
||||
soulema.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
soulfulglamour.uk: could not connect to host
|
||||
|
@ -4212,6 +4226,7 @@ ssl.rip: could not connect to host
|
|||
ssmato.me: could not connect to host
|
||||
ssnc.org: max-age too low: 300
|
||||
sss3s.com: could not connect to host
|
||||
sstewartgallus.com: could not connect to host
|
||||
ssworld.ga: could not connect to host
|
||||
stabletoken.com: could not connect to host
|
||||
stadjerspasonline.nl: could not connect to host
|
||||
|
@ -4225,6 +4240,7 @@ starsam80.net: could not connect to host
|
|||
starttraffic.com: did not receive HSTS header
|
||||
startuponcloud.com: max-age too low: 2678400
|
||||
startuppeople.co.uk: did not receive HSTS header
|
||||
stash.ai: did not receive HSTS header
|
||||
state-sponsored-actors.net: could not connect to host
|
||||
statementinsertsforless.com: did not receive HSTS header
|
||||
stateofexception.io: could not connect to host
|
||||
|
@ -4258,6 +4274,7 @@ stocktrade.de: could not connect to host
|
|||
stoffe-monster.de: did not receive HSTS header
|
||||
stole-my.bike: could not connect to host
|
||||
stole-my.tv: could not connect to host
|
||||
stomt.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
stopwoodfin.org: could not connect to host
|
||||
storecove.com: did not receive HSTS header
|
||||
storefrontify.com: did not receive HSTS header
|
||||
|
@ -4288,12 +4305,12 @@ studybay.com: did not receive HSTS header
|
|||
studydrive.net: did not receive HSTS header
|
||||
studyhub.cf: did not receive HSTS header
|
||||
stugb.de: did not receive HSTS header
|
||||
stuntmen.xyz: could not connect to host
|
||||
stw-group.at: could not connect to host
|
||||
stylenda.com: could not connect to host
|
||||
styles.pm: could not connect to host
|
||||
subbing.work: could not connect to host
|
||||
subdimension.org: could not connect to host
|
||||
subeesu.com: could not connect to host
|
||||
subrosa.io: could not connect to host
|
||||
subsys.no: did not receive HSTS header
|
||||
subtitle.rip: could not connect to host
|
||||
|
@ -4345,6 +4362,7 @@ syntheticmotoroil.org: did not receive HSTS header
|
|||
syriatalk.biz: could not connect to host
|
||||
syriatalk.org: could not connect to host
|
||||
syrocon.ch: could not connect to host
|
||||
sysadmin.pm: could not connect to host
|
||||
sysadmin.xyz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
syso.name: could not connect to host
|
||||
szaszm.tk: max-age too low: 0
|
||||
|
@ -4448,6 +4466,7 @@ theamateurs.net: did not receive HSTS header
|
|||
theater.cf: could not connect to host
|
||||
theberkshirescompany.com: did not receive HSTS header
|
||||
thebigfail.net: could not connect to host
|
||||
thebigwave.de: could not connect to host
|
||||
thebrotherswarde.com: could not connect to host
|
||||
thecapitalbank.com: did not receive HSTS header
|
||||
thecharlestonwaldorf.com: did not receive HSTS header
|
||||
|
@ -4458,6 +4477,7 @@ thecrochetcottage.net: could not connect to host
|
|||
thediaryofadam.com: did not receive HSTS header
|
||||
theendofzion.com: did not receive HSTS header
|
||||
theescapistswiki.com: could not connect to host
|
||||
theeyeopener.com: did not receive HSTS header
|
||||
theflowerbasketonline.com: could not connect to host
|
||||
thefootballanalyst.com: could not connect to host
|
||||
thefrozenfire.com: did not receive HSTS header
|
||||
|
@ -4511,13 +4531,14 @@ tickreport.com: did not receive HSTS header
|
|||
ticktock.today: did not receive HSTS header
|
||||
tictactux.de: could not connect to host
|
||||
tidmore.us: could not connect to host
|
||||
tie-online.org: did not receive HSTS header
|
||||
tiensnet.com: did not receive HSTS header
|
||||
tightlineproductions.com: did not receive HSTS header
|
||||
tikutiku.pl: could not connect to host
|
||||
tildebot.com: could not connect to host
|
||||
tilkah.com.au: could not connect to host
|
||||
timbeilby.com: could not connect to host
|
||||
timbuktutimber.com: could not connect to host
|
||||
timbuktutimber.com: did not receive HSTS header
|
||||
timcamara.com: did not receive HSTS header
|
||||
time-river.xyz: could not connect to host
|
||||
timestamp.io: did not receive HSTS header
|
||||
|
@ -4527,6 +4548,7 @@ timotrans.eu: did not receive HSTS header
|
|||
timowi.de: could not connect to host
|
||||
timowi.net: could not connect to host
|
||||
timwittenberg.com: could not connect to host
|
||||
timysewyn.be: could not connect to host
|
||||
tink.network: could not connect to host
|
||||
tipbox.is: could not connect to host
|
||||
tipsyk.ru: could not connect to host
|
||||
|
@ -4548,6 +4570,7 @@ tmitchell.io: could not connect to host
|
|||
tmprod.com: did not receive HSTS header
|
||||
tncnanet.com.br: could not connect to host
|
||||
tnrsca.jp: did not receive HSTS header
|
||||
toast.al: could not connect to host
|
||||
tobias-bielefeld.de: did not receive HSTS header
|
||||
tobiasmathes.com: could not connect to host
|
||||
tobiasmathes.name: could not connect to host
|
||||
|
@ -4659,6 +4682,7 @@ tzappa.net: could not connect to host
|
|||
u-blox.com: max-age too low: 0
|
||||
ua.search.yahoo.com: did not receive HSTS header
|
||||
uadp.pw: did not receive HSTS header
|
||||
ubanquity.com: could not connect to host
|
||||
uberfunction.com: did not receive HSTS header
|
||||
ubicloud.de: could not connect to host
|
||||
ubicv.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
|
@ -4704,7 +4728,7 @@ unknownphenomena.net: could not connect to host
|
|||
unmanaged.space: did not receive HSTS header
|
||||
unplugg3r.dk: could not connect to host
|
||||
unravel.ie: could not connect to host
|
||||
unsystem.net: could not connect to host
|
||||
unsystem.net: did not receive HSTS header
|
||||
unterschicht.tv: could not connect to host
|
||||
unwiredbrain.com: could not connect to host
|
||||
unyq.me: could not connect to host
|
||||
|
@ -4717,7 +4741,6 @@ uprotect.it: could not connect to host
|
|||
upstats.eu: could not connect to host
|
||||
ur-lauber.de: did not receive HSTS header
|
||||
urandom.eu.org: did not receive HSTS header
|
||||
urbanstylestaging.com: did not receive HSTS header
|
||||
urphp.com: could not connect to host
|
||||
us-immigration.com: did not receive HSTS header
|
||||
usaa.com: did not receive HSTS header
|
||||
|
@ -4732,7 +4755,7 @@ ustr.gov: max-age too low: 86400
|
|||
utilitarianism.net: did not receive HSTS header
|
||||
utleieplassen.no: could not connect to host
|
||||
utopiagalaxy.space: could not connect to host
|
||||
utopianhomespa.com: could not connect to host
|
||||
utopianhomespa.com: did not receive HSTS header
|
||||
utumno.ch: could not connect to host
|
||||
utvbloggen.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
uvarov.pw: did not receive HSTS header
|
||||
|
@ -4775,6 +4798,7 @@ venixplays-stream.ml: could not connect to host
|
|||
verifikatorindonesia.com: could not connect to host
|
||||
vermontcareergateway.org: could not connect to host
|
||||
versia.ru: did not receive HSTS header
|
||||
verspai.de: could not connect to host
|
||||
veryhax.de: could not connect to host
|
||||
vetmgmt.com: could not connect to host
|
||||
vfree.org: could not connect to host
|
||||
|
@ -4794,7 +4818,6 @@ vigilo.ga: could not connect to host
|
|||
vijos.org: did not receive HSTS header
|
||||
viktor-machnik.de: could not connect to host
|
||||
viktorsvantesson.net: did not receive HSTS header
|
||||
vinasec.se: could not connect to host
|
||||
vincentkooijman.at: did not receive HSTS header
|
||||
vincentkooijman.nl: did not receive HSTS header
|
||||
vincentpancol.com: could not connect to host
|
||||
|
@ -4861,7 +4884,7 @@ wapjt.cn: could not connect to host
|
|||
warandpeace.xyz: could not connect to host
|
||||
warehost.de: did not receive HSTS header
|
||||
warhistoryonline.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
warlions.info: could not connect to host
|
||||
warlions.info: did not receive HSTS header
|
||||
warped.com: did not receive HSTS header
|
||||
warsentech.com: did not receive HSTS header
|
||||
washingtonviews.com: did not receive HSTS header
|
||||
|
@ -4947,7 +4970,6 @@ wilf1rst.com: could not connect to host
|
|||
willcipriano.com: could not connect to host
|
||||
william.si: did not receive HSTS header
|
||||
willosagiede.com: did not receive HSTS header
|
||||
willow.technology: could not connect to host
|
||||
wimake.solutions: did not receive HSTS header
|
||||
winaes.com: did not receive HSTS header
|
||||
winclient.cn: could not connect to host
|
||||
|
@ -4985,7 +5007,6 @@ wonderfall.xyz: could not connect to host
|
|||
wonderhost.info: could not connect to host
|
||||
wondershift.biz: did not receive HSTS header
|
||||
woodmafia.com.au: max-age too low: 0
|
||||
woontegelwinkel.nl: did not receive HSTS header
|
||||
woording.com: could not connect to host
|
||||
wootton95.com: could not connect to host
|
||||
woresite.jp: did not receive HSTS header
|
||||
|
@ -5000,7 +5021,6 @@ wphostingspot.com: did not receive HSTS header
|
|||
wpmetadatastandardsproject.org: could not connect to host
|
||||
writeapp.me: could not connect to host
|
||||
wsscompany.com.ve: could not connect to host
|
||||
wth.in: could not connect to host
|
||||
wufu.org: did not receive HSTS header
|
||||
wuhengmin.com: did not receive HSTS header
|
||||
wurzelzwerg.net: could not connect to host
|
||||
|
@ -5029,7 +5049,7 @@ www.surfeasy.com: did not receive HSTS header
|
|||
www.zenpayroll.com: did not receive HSTS header
|
||||
www3.info: did not receive HSTS header
|
||||
wxukang.cn: could not connect to host
|
||||
wyzphoto.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no]
|
||||
wyzphoto.nl: could not connect to host
|
||||
x2w.io: could not connect to host
|
||||
x3led.com: could not connect to host
|
||||
x509.pub: could not connect to host
|
||||
|
@ -5051,6 +5071,7 @@ xiaody.me: could not connect to host
|
|||
xiaolvmu.me: could not connect to host
|
||||
xiaoxiao.im: could not connect to host
|
||||
ximens.me: did not receive HSTS header
|
||||
xing.ml: could not connect to host
|
||||
xisa.it: could not connect to host
|
||||
xiyu.moe: could not connect to host
|
||||
xmppwocky.net: could not connect to host
|
||||
|
@ -5066,7 +5087,7 @@ xn--80aaihqncaejjobbu6v.xn--p1ai: max-age too low: 10000
|
|||
xn--9pr52k0p5a.com: did not receive HSTS header
|
||||
xn--datenrettung-mnchen-jbc.com: did not receive HSTS header
|
||||
xn--dmonenjger-q5ag.net: could not connect to host
|
||||
xn--fischereiverein-mnsterhausen-i7c.de: could not connect to host
|
||||
xn--knstler-n2a.tips: could not connect to host
|
||||
xn--lgb3a8bcpn.cf: could not connect to host
|
||||
xn--lgb3a8bcpn.ga: could not connect to host
|
||||
xn--lgb3a8bcpn.gq: could not connect to host
|
||||
|
@ -5135,6 +5156,7 @@ yu.gg: did not receive HSTS header
|
|||
yuan.ga: did not receive HSTS header
|
||||
yuhen.ru: did not receive HSTS header
|
||||
yuko.moe: could not connect to host
|
||||
yunpan.blue: could not connect to host
|
||||
yunzhu.li: did not receive HSTS header
|
||||
yunzhu.org: could not connect to host
|
||||
yutabon.com: could not connect to host
|
||||
|
@ -5150,7 +5172,6 @@ zamorano.edu: could not connect to host
|
|||
zao.fi: could not connect to host
|
||||
zap.yt: could not connect to host
|
||||
zarooba.com: could not connect to host
|
||||
zberger.com: could not connect to host
|
||||
zbigniewgalucki.eu: did not receive HSTS header
|
||||
zebrababy.cn: did not receive HSTS header
|
||||
zefiris.org: did not receive HSTS header
|
||||
|
@ -5187,12 +5208,12 @@ zoo24.de: did not receive HSTS header
|
|||
zoomingin.net: max-age too low: 5184000
|
||||
zoommailing.com: did not receive HSTS header
|
||||
zorasvobodova.cz: did not receive HSTS header
|
||||
zorgclustertool.nl: could not connect to host
|
||||
zortium.report: could not connect to host
|
||||
zoznamrealit.sk: did not receive HSTS header
|
||||
zqhong.com: could not connect to host
|
||||
ztan.tk: could not connect to host
|
||||
ztcaoll222.cn: did not receive HSTS header
|
||||
zten.org: could not connect to host
|
||||
zulu7.com: could not connect to host
|
||||
zvncloud.com: did not receive HSTS header
|
||||
zwollemagazine.nl: did not receive HSTS header
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -9,4 +9,3 @@ crlf
|
|||
{"id":"crlf"}
|
||||
lfcr
00:00:00.000 --> 00:00:01.000
|
||||
{"id":"lfcr"}
|
||||
|
|
@ -18,6 +18,7 @@ skip-if = (os == 'android') # android doesn't have devtools
|
|||
[test_chrome_ext_background_page.html]
|
||||
skip-if = (toolkit == 'android') # android doesn't have devtools
|
||||
[test_chrome_ext_eventpage_warning.html]
|
||||
[test_chrome_ext_contentscript_data_uri.html]
|
||||
[test_chrome_ext_contentscript_unrecognizedprop_warning.html]
|
||||
[test_chrome_ext_hybrid_addons.html]
|
||||
[test_chrome_ext_trustworthy_origin.html]
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test content script matching a data: URI</title>
|
||||
<script src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
|
||||
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="chrome://mochikit/content/tests/SimpleTest/ExtensionTestUtils.js"></script>
|
||||
<script src="head.js"></script>
|
||||
<link rel="stylesheet" href="chrome://mochikit/contents/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
add_task(function* test_contentscript_data_uri() {
|
||||
const target = ExtensionTestUtils.loadExtension({
|
||||
files: {
|
||||
"page.html": `<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<iframe id="inherited" src="data:text/html;charset=utf-8,inherited"></iframe>
|
||||
`,
|
||||
},
|
||||
background() {
|
||||
browser.test.sendMessage("page", browser.runtime.getURL("page.html"));
|
||||
},
|
||||
});
|
||||
|
||||
const scripts = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
permissions: ["webNavigation"],
|
||||
content_scripts: [{
|
||||
all_frames: true,
|
||||
matches: ["<all_urls>"],
|
||||
run_at: "document_start",
|
||||
css: ["all_urls.css"],
|
||||
js: ["all_urls.js"],
|
||||
}],
|
||||
},
|
||||
files: {
|
||||
"all_urls.css": `
|
||||
body { background: yellow; }
|
||||
`,
|
||||
"all_urls.js": function() {
|
||||
document.body.style.color = "red";
|
||||
browser.test.assertTrue(location.protocol !== "data:",
|
||||
`Matched document not a data URI: ${location.href}`);
|
||||
},
|
||||
},
|
||||
background() {
|
||||
browser.webNavigation.onCompleted.addListener(({url, frameId}) => {
|
||||
browser.test.log(`Document loading complete: ${url}`);
|
||||
if (frameId === 0) {
|
||||
browser.test.sendMessage("tab-ready", url);
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
yield target.startup();
|
||||
yield scripts.startup();
|
||||
|
||||
// Test extension page with a data: iframe.
|
||||
const page = yield target.awaitMessage("page");
|
||||
const win = window.open(page);
|
||||
|
||||
yield scripts.awaitMessage("tab-ready");
|
||||
is(win.location.href, page, "Extension page loaded into a tab");
|
||||
is(win.document.readyState, "complete", "Page finished loading");
|
||||
|
||||
const iframe = win.document.getElementById("inherited").contentWindow;
|
||||
is(iframe.document.readyState, "complete", "iframe finished loading");
|
||||
|
||||
const style1 = iframe.getComputedStyle(iframe.document.body);
|
||||
is(style1.color, "rgb(0, 0, 0)", "iframe text color is unmodified");
|
||||
is(style1.backgroundColor, "rgba(0, 0, 0, 0)", "iframe background unmodified");
|
||||
|
||||
// Test extension tab navigated to a data: URI.
|
||||
const data = "data:text/html;charset=utf-8,also-inherits";
|
||||
win.location.href = data;
|
||||
|
||||
yield scripts.awaitMessage("tab-ready");
|
||||
is(win.location.href, data, "Extension tab navigated to a data: URI");
|
||||
is(win.document.readyState, "complete", "Tab finished loading");
|
||||
|
||||
const style2 = win.getComputedStyle(win.document.body);
|
||||
is(style2.color, "rgb(0, 0, 0)", "Tab text color is unmodified");
|
||||
is(style2.backgroundColor, "rgba(0, 0, 0, 0)", "Tab background unmodified");
|
||||
|
||||
win.close();
|
||||
yield target.unload();
|
||||
yield scripts.unload();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -152,6 +152,16 @@ var snapshotFormatters = {
|
|||
}));
|
||||
},
|
||||
|
||||
features: function features(data) {
|
||||
$.append($("features-tbody"), data.map(function(feature) {
|
||||
return $.new("tr", [
|
||||
$.new("td", feature.name),
|
||||
$.new("td", feature.version),
|
||||
$.new("td", feature.id),
|
||||
]);
|
||||
}));
|
||||
},
|
||||
|
||||
experiments: function experiments(data) {
|
||||
$.append($("experiments-tbody"), data.map(function(experiment) {
|
||||
return $.new("tr", [
|
||||
|
|
|
@ -299,6 +299,30 @@
|
|||
#endif
|
||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||
|
||||
<h2 class="major-section">
|
||||
&aboutSupport.featuresTitle;
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
&aboutSupport.featureName;
|
||||
</th>
|
||||
<th>
|
||||
&aboutSupport.featureVersion;
|
||||
</th>
|
||||
<th>
|
||||
&aboutSupport.featureId;
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="features-tbody">
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||
|
||||
<h2 class="major-section">
|
||||
&aboutSupport.extensionsTitle;
|
||||
</h2>
|
||||
|
|
|
@ -25,6 +25,11 @@ This is likely the same like id.heading in crashes.dtd. -->
|
|||
<!ENTITY aboutSupport.extensionVersion "Version">
|
||||
<!ENTITY aboutSupport.extensionId "ID">
|
||||
|
||||
<!ENTITY aboutSupport.featuresTitle "&brandShortName; Features">
|
||||
<!ENTITY aboutSupport.featureName "Name">
|
||||
<!ENTITY aboutSupport.featureVersion "Version">
|
||||
<!ENTITY aboutSupport.featureId "ID">
|
||||
|
||||
<!ENTITY aboutSupport.experimentsTitle "Experimental Features">
|
||||
<!ENTITY aboutSupport.experimentName "Name">
|
||||
<!ENTITY aboutSupport.experimentId "ID">
|
||||
|
|
|
@ -242,6 +242,7 @@ var dataProviders = {
|
|||
|
||||
extensions: function extensions(done) {
|
||||
AddonManager.getAddonsByTypes(["extension"], function(extensions) {
|
||||
extensions = extensions.filter(e => !e.isSystem);
|
||||
extensions.sort(function(a, b) {
|
||||
if (a.isActive != b.isActive)
|
||||
return b.isActive ? 1 : -1;
|
||||
|
@ -266,6 +267,30 @@ var dataProviders = {
|
|||
});
|
||||
},
|
||||
|
||||
features: function features(done) {
|
||||
AddonManager.getAddonsByTypes(["extension"], function(features) {
|
||||
features = features.filter(f => f.isSystem);
|
||||
features.sort(function(a, b) {
|
||||
// In some unfortunate cases addon names can be null.
|
||||
let aname = a.name || null;
|
||||
let bname = b.name || null;
|
||||
let lc = aname.localeCompare(bname);
|
||||
if (lc != 0)
|
||||
return lc;
|
||||
if (a.version != b.version)
|
||||
return a.version > b.version ? 1 : -1;
|
||||
return 0;
|
||||
});
|
||||
let props = ["name", "version", "id"];
|
||||
done(features.map(function(f) {
|
||||
return props.reduce(function(fData, prop) {
|
||||
fData[prop] = f[prop];
|
||||
return fData;
|
||||
}, {});
|
||||
}));
|
||||
});
|
||||
},
|
||||
|
||||
experiments: function experiments(done) {
|
||||
if (Experiments === undefined) {
|
||||
done([]);
|
||||
|
|
|
@ -205,6 +205,27 @@ const SNAPSHOT_SCHEMA = {
|
|||
},
|
||||
},
|
||||
},
|
||||
features: {
|
||||
required: true,
|
||||
type: "array",
|
||||
items: {
|
||||
type: "object",
|
||||
properties: {
|
||||
name: {
|
||||
required: true,
|
||||
type: "string",
|
||||
},
|
||||
version: {
|
||||
required: true,
|
||||
type: "string",
|
||||
},
|
||||
id: {
|
||||
required: true,
|
||||
type: "string",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
modifiedPreferences: {
|
||||
required: true,
|
||||
type: "object",
|
||||
|
|
Загрузка…
Ссылка в новой задаче