mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-12 06:52:25 +00:00
Merge m-c to b2g-inbound a=merge CLOSED TREE
This commit is contained in:
commit
eed7347e24
@ -1277,7 +1277,6 @@ pref("services.sync.prefs.sync.privacy.clearOnShutdown.passwords", true);
|
||||
pref("services.sync.prefs.sync.privacy.clearOnShutdown.sessions", true);
|
||||
pref("services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings", true);
|
||||
pref("services.sync.prefs.sync.privacy.donottrackheader.enabled", true);
|
||||
pref("services.sync.prefs.sync.privacy.donottrackheader.value", true);
|
||||
pref("services.sync.prefs.sync.privacy.sanitize.sanitizeOnShutdown", true);
|
||||
pref("services.sync.prefs.sync.privacy.trackingprotection.enabled", true);
|
||||
pref("services.sync.prefs.sync.security.OCSP.enabled", true);
|
||||
|
@ -74,6 +74,10 @@ addMessageListener("Browser:Reload", function(message) {
|
||||
}
|
||||
});
|
||||
|
||||
addMessageListener("MixedContent:ReenableProtection", function() {
|
||||
docShell.mixedContentChannel = null;
|
||||
});
|
||||
|
||||
addEventListener("DOMFormHasPassword", function(event) {
|
||||
InsecurePasswordUtils.checkForInsecurePasswords(event.target);
|
||||
LoginManagerContent.onFormPassword(event);
|
||||
|
@ -503,7 +503,6 @@ skip-if = e10s
|
||||
[browser_addCertException.js]
|
||||
skip-if = e10s # Bug ?????? - test directly manipulates content (content.document.getElementById)
|
||||
[browser_bug1045809.js]
|
||||
skip-if = e10s # Bug 1068360 - [e10s] Mixed content blocker doorhanger doesn't work
|
||||
[browser_e10s_switchbrowser.js]
|
||||
[browser_blockHPKP.js]
|
||||
skip-if = e10s # bug ?????? - test directly manipulates content (content.document.getElementById)
|
||||
|
@ -1853,8 +1853,8 @@
|
||||
</method>
|
||||
<method name="enableMixedContentProtection">
|
||||
<body><![CDATA[
|
||||
let docShell = gBrowser.webNavigation.QueryInterface(Ci.nsIDocShell);
|
||||
docShell.mixedContentChannel = null;
|
||||
gBrowser.selectedBrowser.messageManager.sendAsyncMessage(
|
||||
"MixedContent:ReenableProtection", {});
|
||||
BrowserReload();
|
||||
]]></body>
|
||||
</method>
|
||||
|
@ -1369,7 +1369,7 @@ BrowserGlue.prototype = {
|
||||
},
|
||||
|
||||
_migrateUI: function BG__migrateUI() {
|
||||
const UI_VERSION = 24;
|
||||
const UI_VERSION = 25;
|
||||
const BROWSER_DOCURL = "chrome://browser/content/browser.xul";
|
||||
let currentUIVersion = 0;
|
||||
try {
|
||||
@ -1617,6 +1617,20 @@ BrowserGlue.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
if (currentUIVersion < 25) {
|
||||
// Make sure the doNotTrack value conforms to the conversion from
|
||||
// three-state to two-state. (This reverts a setting of "please track me"
|
||||
// to the default "don't say anything").
|
||||
try {
|
||||
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") &&
|
||||
Services.prefs.getIntPref("privacy.donottrackheader.value") != 1) {
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.value");
|
||||
}
|
||||
}
|
||||
catch (ex) {}
|
||||
}
|
||||
|
||||
// Update the migration version.
|
||||
Services.prefs.setIntPref("browser.migration.version", UI_VERSION);
|
||||
},
|
||||
|
@ -162,43 +162,6 @@ var gPrivacyPane = {
|
||||
document.getElementById("historyPane").selectedIndex = selectedIndex;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the Tracking preferences based on controls.
|
||||
*/
|
||||
setTrackingPrefs: function PPP_setTrackingPrefs()
|
||||
{
|
||||
let dntRadioGroup = document.getElementById("doNotTrackSelection"),
|
||||
dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if the selected radio button says "no preference", set on/off pref to
|
||||
// false and don't change the value pref.
|
||||
if (dntRadioGroup.selectedItem.value == -1) {
|
||||
dntEnabledPref.value = false;
|
||||
return dntValuePref.value;
|
||||
}
|
||||
|
||||
dntEnabledPref.value = true;
|
||||
return dntRadioGroup.selectedItem.value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Obtain the tracking preference value and reflect it in the UI.
|
||||
*/
|
||||
getTrackingPrefs: function PPP_getTrackingPrefs()
|
||||
{
|
||||
// XXX avoid using bindings that might not be attached, see bug 859982
|
||||
let dntValue = Services.prefs.getIntPref("privacy.donottrackheader.value"),
|
||||
dntEnabled = Services.prefs.getBoolPref("privacy.donottrackheader.enabled");
|
||||
|
||||
// if DNT is enbaled, select the value from the selected radio
|
||||
// button, otherwise choose the "no preference" radio button
|
||||
if (dntEnabled)
|
||||
return dntValue;
|
||||
|
||||
return document.getElementById("dntnopref").value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the private browsing auto-start pref and the history mode
|
||||
* micro-management prefs based on the history mode menulist
|
||||
|
@ -13,9 +13,6 @@
|
||||
<preference id="privacy.donottrackheader.enabled"
|
||||
name="privacy.donottrackheader.enabled"
|
||||
type="bool"/>
|
||||
<preference id="privacy.donottrackheader.value"
|
||||
name="privacy.donottrackheader.value"
|
||||
type="int"/>
|
||||
|
||||
<!-- XXX button prefs -->
|
||||
<preference id="pref.privacy.disable_button.cookie_exceptions"
|
||||
@ -74,21 +71,20 @@
|
||||
<!-- Tracking -->
|
||||
<groupbox id="trackingGroup" data-category="panePrivacy" hidden="true" align="start">
|
||||
<caption><label>&tracking.label;</label></caption>
|
||||
<radiogroup id="doNotTrackSelection" orient="vertical" align="start"
|
||||
preference="privacy.donottrackheader.value"
|
||||
onsynctopreference="return gPrivacyPane.setTrackingPrefs()"
|
||||
onsyncfrompreference="return gPrivacyPane.getTrackingPrefs()">
|
||||
<radio id="dntnotrack" value="1" label="&dntTrackingNotOkay.label2;"
|
||||
accesskey="&dntTrackingNotOkay.accesskey;" />
|
||||
<radio id="dntdotrack" value="0" label="&dntTrackingOkay.label2;"
|
||||
accesskey="&dntTrackingOkay.accesskey;" />
|
||||
<radio id="dntnopref" value="-1" label="&dntTrackingNopref.label2;"
|
||||
accesskey="&dntTrackingNopref.accesskey;" />
|
||||
</radiogroup>
|
||||
<label class="text-link" id="doNotTrackInfo"
|
||||
href="https://www.mozilla.org/dnt">
|
||||
&doNotTrackInfo.label;
|
||||
</label>
|
||||
<checkbox id="privacyDoNotTrackCheckbox"
|
||||
label="&dntTrackingNotOkay.label2;"
|
||||
accesskey="&dntTrackingNotOkay.accesskey;"
|
||||
preference="privacy.donottrackheader.enabled"/>
|
||||
<separator class="thin"/>
|
||||
<vbox>
|
||||
<hbox pack="end">
|
||||
<spacer flex="1"/>
|
||||
<label class="text-link" id="doNotTrackInfo"
|
||||
href="https://www.mozilla.org/dnt">
|
||||
&doNotTrackInfo.label;
|
||||
</label>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
|
||||
<!-- History -->
|
||||
|
@ -124,42 +124,6 @@ var gPrivacyPane = {
|
||||
document.getElementById("historyPane").selectedIndex = selectedIndex;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the Tracking preferences based on controls.
|
||||
*/
|
||||
setTrackingPrefs: function PPP_setTrackingPrefs()
|
||||
{
|
||||
let dntRadioGroup = document.getElementById("doNotTrackSelection"),
|
||||
dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if the selected radio button says "no preference", set on/off pref to
|
||||
// false and don't change the value pref.
|
||||
if (dntRadioGroup.selectedItem.value == -1) {
|
||||
dntEnabledPref.value = false;
|
||||
return dntValuePref.value;
|
||||
}
|
||||
|
||||
dntEnabledPref.value = true;
|
||||
return dntRadioGroup.selectedItem.value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Obtain the tracking preference value and reflect it in the UI.
|
||||
*/
|
||||
getTrackingPrefs: function PPP_getTrackingPrefs()
|
||||
{
|
||||
let dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if DNT is enbaled, select the value from the selected radio
|
||||
// button, otherwise choose the "no preference" radio button
|
||||
if (dntEnabledPref.value)
|
||||
return dntValuePref.value;
|
||||
|
||||
return document.getElementById("dntnopref").value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the private browsing auto-start pref and the history mode
|
||||
* micro-management prefs based on the history mode menulist
|
||||
|
@ -26,9 +26,6 @@
|
||||
<preference id="privacy.donottrackheader.enabled"
|
||||
name="privacy.donottrackheader.enabled"
|
||||
type="bool"/>
|
||||
<preference id="privacy.donottrackheader.value"
|
||||
name="privacy.donottrackheader.value"
|
||||
type="int"/>
|
||||
|
||||
<!-- XXX button prefs -->
|
||||
<preference id="pref.privacy.disable_button.cookie_exceptions"
|
||||
@ -84,20 +81,19 @@
|
||||
<!-- Tracking -->
|
||||
<groupbox id="trackingGroup" align="start">
|
||||
<caption label="&tracking.label;"/>
|
||||
<radiogroup id="doNotTrackSelection" orient="vertical"
|
||||
preference="privacy.donottrackheader.value"
|
||||
onsynctopreference="return gPrivacyPane.setTrackingPrefs()"
|
||||
onsyncfrompreference="return gPrivacyPane.getTrackingPrefs()">
|
||||
<radio id="dntnotrack" value="1" label="&dntTrackingNotOkay.label2;"
|
||||
accesskey="&dntTrackingNotOkay.accesskey;" />
|
||||
<radio id="dntdotrack" value="0" label="&dntTrackingOkay.label2;"
|
||||
accesskey="&dntTrackingOkay.accesskey;" />
|
||||
<radio id="dntnopref" value="-1" label="&dntTrackingNopref.label2;"
|
||||
accesskey="&dntTrackingNopref.accesskey;" />
|
||||
</radiogroup>
|
||||
<label class="text-link" id="doNotTrackInfo"
|
||||
href="https://www.mozilla.org/dnt"
|
||||
value="&doNotTrackInfo.label;"/>
|
||||
<checkbox id="privacyDoNotTrackCheckbox"
|
||||
label="&dntTrackingNotOkay.label2;"
|
||||
accesskey="&dntTrackingNotOkay.accesskey;"
|
||||
preference="privacy.donottrackheader.enabled"/>
|
||||
<separator class="thin"/>
|
||||
<vbox>
|
||||
<hbox pack="end">
|
||||
<spacer flex="1"/>
|
||||
<label class="text-link" id="doNotTrackInfo"
|
||||
href="https://www.mozilla.org/dnt"
|
||||
value="&doNotTrackInfo.label;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
||||
</groupbox>
|
||||
|
||||
|
@ -4,12 +4,8 @@
|
||||
|
||||
<!ENTITY tracking.label "Tracking">
|
||||
|
||||
<!ENTITY dntTrackingNopref.label2 "Do not tell sites anything about my tracking preferences">
|
||||
<!ENTITY dntTrackingNopref.accesskey "o">
|
||||
<!ENTITY dntTrackingNotOkay.label2 "Tell sites that I do not want to be tracked">
|
||||
<!ENTITY dntTrackingNotOkay.accesskey "n">
|
||||
<!ENTITY dntTrackingOkay.label2 "Tell sites that I want to be tracked">
|
||||
<!ENTITY dntTrackingOkay.accesskey "h">
|
||||
<!ENTITY trackingProtection.label "Prevent sites from tracking me">
|
||||
<!ENTITY trackingProtection.accesskey "m">
|
||||
<!ENTITY trackingProtectionLearnMore.label "Learn more">
|
||||
|
@ -137,8 +137,7 @@ let DirectoryLinksProvider = {
|
||||
let enhanced = true;
|
||||
try {
|
||||
// Default to not enhanced if DNT is set to tell websites to not track
|
||||
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") &&
|
||||
Services.prefs.getIntPref("privacy.donottrackheader.value") == 1) {
|
||||
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled")) {
|
||||
enhanced = false;
|
||||
}
|
||||
}
|
||||
|
@ -614,19 +614,14 @@ add_task(function test_DirectoryLinksProvider_setDefaultEnhanced() {
|
||||
do_check_eq(Services.prefs.getBoolPref(kNewtabEnhancedPref), expected);
|
||||
}
|
||||
|
||||
// Use the default donottrack prefs (enabled = false, value = 1)
|
||||
// Use the default donottrack prefs (enabled = false)
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.value");
|
||||
checkDefault(true);
|
||||
|
||||
// Turn on DNT - no track
|
||||
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true);
|
||||
checkDefault(false);
|
||||
|
||||
// Set DNT - do track
|
||||
Services.prefs.setIntPref("privacy.donottrackheader.value", 0);
|
||||
checkDefault(true);
|
||||
|
||||
// Turn off DNT header
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
|
||||
checkDefault(true);
|
||||
|
@ -822,13 +822,6 @@ nsCSPParser::directive()
|
||||
return;
|
||||
}
|
||||
|
||||
if (mCurDir.Length() < 2) {
|
||||
const char16_t* params[] = { mCurToken.get() };
|
||||
logWarningErrorToConsole(nsIScriptError::warningFlag, "failedToParseUnrecognizedSource",
|
||||
params, ArrayLength(params));
|
||||
return;
|
||||
}
|
||||
|
||||
// Try to create a new CSPDirective
|
||||
nsCSPDirective* cspDir = directiveName();
|
||||
if (!cspDir) {
|
||||
@ -840,13 +833,11 @@ nsCSPParser::directive()
|
||||
nsTArray<nsCSPBaseSrc*> srcs;
|
||||
directiveValue(srcs);
|
||||
|
||||
// If we can not parse any srcs; it's not worth having a directive; delete and return
|
||||
// If we can not parse any srcs; we let the source expression be the empty set ('none')
|
||||
// see, http://www.w3.org/TR/CSP11/#source-list-parsing
|
||||
if (srcs.Length() == 0) {
|
||||
const char16_t* params[] = { mCurToken.get() };
|
||||
logWarningErrorToConsole(nsIScriptError::warningFlag, "failedToParseUnrecognizedSource",
|
||||
params, ArrayLength(params));
|
||||
delete cspDir;
|
||||
return;
|
||||
nsCSPKeywordSrc *keyword = new nsCSPKeywordSrc(CSP_NONE);
|
||||
srcs.AppendElement(keyword);
|
||||
}
|
||||
|
||||
// Add the newly created srcs to the directive and add the directive to the policy
|
||||
|
@ -438,9 +438,9 @@ nsresult TestSimplePolicies() {
|
||||
return runTestSuite(policies, policyCount, 1);
|
||||
}
|
||||
|
||||
// ============================= TestPoliciesThatLogWarning ========================
|
||||
// ============================= TestPoliciesWithInvalidSrc ========================
|
||||
|
||||
nsresult TestPoliciesThatLogWarning() {
|
||||
nsresult TestPoliciesWithInvalidSrc() {
|
||||
|
||||
static const PolicyTest policies[] =
|
||||
{
|
||||
@ -448,6 +448,50 @@ nsresult TestPoliciesThatLogWarning() {
|
||||
"script-src http://www.selfuri.com" },
|
||||
{ "script-src 'none' test.com; script-src example.com",
|
||||
"script-src http://test.com" },
|
||||
{ "default-src **",
|
||||
"default-src 'none'" },
|
||||
{ "default-src 'self",
|
||||
"default-src 'none'" },
|
||||
{ "default-src 'unsafe-inlin' ",
|
||||
"default-src 'none'" },
|
||||
{ "default-src */",
|
||||
"default-src 'none'" },
|
||||
{ "default-src",
|
||||
"default-src 'none'" },
|
||||
{ "default-src 'unsafe-inlin' ",
|
||||
"default-src 'none'" },
|
||||
{ "default-src :88",
|
||||
"default-src 'none'" },
|
||||
{ "script-src abc::::::88",
|
||||
"script-src 'none'" },
|
||||
{ "script-src *.*:*",
|
||||
"script-src 'none'" },
|
||||
{ "img-src *::88",
|
||||
"img-src 'none'" },
|
||||
{ "object-src http://localhost:",
|
||||
"object-src 'none'" },
|
||||
{ "script-src test..com",
|
||||
"script-src 'none'" },
|
||||
{ "script-src sub1.sub2.example+",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com//",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:88path-1/",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:88//",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:88//path-1",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:88//path-1",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:88/.js",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:88.js",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:*.js",
|
||||
"script-src 'none'" },
|
||||
{ "script-src http://www.example.com:*.",
|
||||
"script-src 'none'" },
|
||||
};
|
||||
|
||||
uint32_t policyCount = sizeof(policies) / sizeof(PolicyTest);
|
||||
@ -460,34 +504,12 @@ nsresult TestBadPolicies() {
|
||||
|
||||
static const PolicyTest policies[] =
|
||||
{
|
||||
{ "default-src **", "" },
|
||||
{ "default-src 'self", "" },
|
||||
{ "script-sr 'self", "" },
|
||||
{ "default-src 'unsafe-inlin' ", "" },
|
||||
{ "default-src */", "" },
|
||||
{ "default-src", "" },
|
||||
{ "", "" },
|
||||
{ "; ; ; ; ; ; ;", "" },
|
||||
{ "defaut-src asdf", "" },
|
||||
{ "default-src: aaa", "" },
|
||||
{ "default-src 'unsafe-inlin' ", "" },
|
||||
{ "default-src :88", "" },
|
||||
{ "script-src abc::::::88", "" },
|
||||
{ "asdf http://test.com", ""},
|
||||
{ "script-src *.*:*", "" },
|
||||
{ "img-src *::88", "" },
|
||||
{ "object-src http://localhost:", "" },
|
||||
{ "script-src test..com", "" },
|
||||
{ "script-src sub1.sub2.example+", "" },
|
||||
{ "script-src http://www.example.com//", "" },
|
||||
{ "script-src http://www.example.com:88path-1/", "" },
|
||||
{ "script-src http://www.example.com:88//", "" },
|
||||
{ "script-src http://www.example.com:88//path-1", "" },
|
||||
{ "script-src http://www.example.com:88//path-1", "" },
|
||||
{ "script-src http://www.example.com:88/.js", "" },
|
||||
{ "script-src http://www.example.com:88.js", "" },
|
||||
{ "script-src http://www.example.com:*.js", "" },
|
||||
{ "script-src http://www.example.com:*.", "" },
|
||||
};
|
||||
|
||||
uint32_t policyCount = sizeof(policies) / sizeof(PolicyTest);
|
||||
@ -748,8 +770,6 @@ nsresult TestBadGeneratedPolicies() {
|
||||
{ "http://other:pass1@self.com/foo", ""},
|
||||
{ "http://user1:pass1@self.com/foo", ""},
|
||||
{ "http://username:password@self.com/bar", ""},
|
||||
{ "default-src ", ""},
|
||||
{ "img-src ", ""}
|
||||
};
|
||||
|
||||
uint32_t policyCount = sizeof(policies) / sizeof(PolicyTest);
|
||||
@ -884,17 +904,24 @@ nsresult TestBadGeneratedPoliciesForPathHandling() {
|
||||
|
||||
static const PolicyTest policies[] =
|
||||
{
|
||||
{ "img-src test1.example.com:88path-1/", "" },
|
||||
{ "img-src test1.example.com:80.js", "" },
|
||||
{ "img-src test1.example.com:*.js", "" },
|
||||
{ "img-src test1.example.com:*.", "" },
|
||||
{ "img-src http://test1.example.com//", "" },
|
||||
{ "img-src http://test1.example.com:80//", "" },
|
||||
{ "img-src http://test1.example.com:80abc", "" },
|
||||
{ "img-src test1.example.com:88path-1/",
|
||||
"img-src 'none'" },
|
||||
{ "img-src test1.example.com:80.js",
|
||||
"img-src 'none'" },
|
||||
{ "img-src test1.example.com:*.js",
|
||||
"img-src 'none'" },
|
||||
{ "img-src test1.example.com:*.",
|
||||
"img-src 'none'" },
|
||||
{ "img-src http://test1.example.com//",
|
||||
"img-src 'none'" },
|
||||
{ "img-src http://test1.example.com:80//",
|
||||
"img-src 'none'" },
|
||||
{ "img-src http://test1.example.com:80abc",
|
||||
"img-src 'none'" },
|
||||
};
|
||||
|
||||
uint32_t policyCount = sizeof(policies) / sizeof(PolicyTest);
|
||||
return runTestSuite(policies, policyCount, 0);
|
||||
return runTestSuite(policies, policyCount, 1);
|
||||
}
|
||||
|
||||
// ============================= TestFuzzyPolicies ========================
|
||||
@ -1058,7 +1085,7 @@ int main(int argc, char** argv) {
|
||||
if (NS_FAILED(TestIgnoreUpperLowerCasePolicies())) { return 1; }
|
||||
if (NS_FAILED(TestIgnorePaths())) { return 1; }
|
||||
if (NS_FAILED(TestSimplePolicies())) { return 1; }
|
||||
if (NS_FAILED(TestPoliciesThatLogWarning())) { return 1; }
|
||||
if (NS_FAILED(TestPoliciesWithInvalidSrc())) { return 1; }
|
||||
if (NS_FAILED(TestBadPolicies())) { return 1; }
|
||||
if (NS_FAILED(TestGoodGeneratedPolicies())) { return 1; }
|
||||
if (NS_FAILED(TestBadGeneratedPolicies())) { return 1; }
|
||||
|
@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Bug 1086612 - CSP: Let source expression be the empty set in case no valid source can be parsed</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="testdiv">blocked</div>
|
||||
<!-- Note, we reuse file_csp_path_matching.js which only updates the testdiv to 'allowed' if loaded !-->
|
||||
<script src="http://test1.example.com/tests/content/base/test/csp/file_csp_path_matching.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -36,6 +36,7 @@ support-files =
|
||||
file_CSP_inlinestyle_main.html^headers^
|
||||
file_CSP_inlinestyle_main_allowed.html
|
||||
file_CSP_inlinestyle_main_allowed.html^headers^
|
||||
file_csp_invalid_source_expression.html
|
||||
file_CSP_main.html
|
||||
file_CSP_main.html^headers^
|
||||
file_CSP_main.js
|
||||
@ -111,6 +112,7 @@ support-files =
|
||||
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug)) || toolkit == 'android' # Times out, not sure why (bug 1008445)
|
||||
[test_CSP_inlinescript.html]
|
||||
[test_CSP_inlinestyle.html]
|
||||
[test_csp_invalid_source_expression.html]
|
||||
[test_bug836922_npolicies.html]
|
||||
[test_bug886164.html]
|
||||
[test_csp_redirects.html]
|
||||
|
@ -0,0 +1,57 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Bug 1086612 - CSP: Let source expression be the empty set in case no valid source can be parsed</title>
|
||||
<!-- Including SimpleTest.js so we can use waitForExplicitFinish !-->
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="visibility: hidden">
|
||||
<iframe style="width:100%;" id="testframe"></iframe>
|
||||
</div>
|
||||
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
/* Description of the test:
|
||||
* We try to parse a policy:
|
||||
* script-src bankid:/*
|
||||
* where the source expression (bankid:/*) is invalid. In that case the source-expression
|
||||
* should be the empty set ('none'), see: http://www.w3.org/TR/CSP11/#source-list-parsing
|
||||
* We confirm that the script is blocked by CSP.
|
||||
*/
|
||||
|
||||
const policy = "script-src bankid:/*";
|
||||
|
||||
function runTest() {
|
||||
var src = "file_csp_testserver.sjs";
|
||||
// append the file that should be served
|
||||
src += "?file=" + escape("tests/content/base/test/csp/file_csp_invalid_source_expression.html");
|
||||
// append the CSP that should be used to serve the file
|
||||
src += "&csp=" + escape(policy);
|
||||
|
||||
document.getElementById("testframe").addEventListener("load", test, false);
|
||||
document.getElementById("testframe").src = src;
|
||||
}
|
||||
|
||||
function test() {
|
||||
try {
|
||||
document.getElementById("testframe").removeEventListener('load', test, false);
|
||||
var testframe = document.getElementById("testframe");
|
||||
var divcontent = testframe.contentWindow.document.getElementById('testdiv').innerHTML;
|
||||
is(divcontent, "blocked", "should be 'blocked'!");
|
||||
}
|
||||
catch (e) {
|
||||
ok(false, "ERROR: could not access content!");
|
||||
}
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
runTest();
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -112,7 +112,6 @@ namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
static bool sDoNotTrackEnabled = false;
|
||||
static uint32_t sDoNotTrackValue = 1;
|
||||
static bool sVibratorEnabled = false;
|
||||
static uint32_t sMaxVibrateMS = 0;
|
||||
static uint32_t sMaxVibrateListLen = 0;
|
||||
@ -124,9 +123,6 @@ Navigator::Init()
|
||||
Preferences::AddBoolVarCache(&sDoNotTrackEnabled,
|
||||
"privacy.donottrackheader.enabled",
|
||||
false);
|
||||
Preferences::AddUintVarCache(&sDoNotTrackValue,
|
||||
"privacy.donottrackheader.value",
|
||||
1);
|
||||
Preferences::AddBoolVarCache(&sVibratorEnabled,
|
||||
"dom.vibrator.enabled", true);
|
||||
Preferences::AddUintVarCache(&sMaxVibrateMS,
|
||||
@ -628,11 +624,7 @@ NS_IMETHODIMP
|
||||
Navigator::GetDoNotTrack(nsAString &aResult)
|
||||
{
|
||||
if (sDoNotTrackEnabled) {
|
||||
if (sDoNotTrackValue == 0) {
|
||||
aResult.AssignLiteral("0");
|
||||
} else {
|
||||
aResult.AssignLiteral("1");
|
||||
}
|
||||
aResult.AssignLiteral("1");
|
||||
} else {
|
||||
aResult.AssignLiteral("unspecified");
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=629535
|
||||
<script type="application/javascript">
|
||||
|
||||
const dntPref = 'privacy.donottrackheader.enabled';
|
||||
const dntValuePref = 'privacy.donottrackheader.value';
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
@ -39,8 +38,6 @@ tests.push(function testDefaultValues() {
|
||||
'DNT should be disabled by default');
|
||||
is(navigator.doNotTrack, 'unspecified',
|
||||
'navigator.doNotTrack should initially be "unspecified".');
|
||||
is(SpecialPowers.getIntPref(dntValuePref), isB2G ? -1 : 1,
|
||||
'DNT value should be "1" by default');
|
||||
|
||||
nextTest();
|
||||
});
|
||||
@ -59,34 +56,6 @@ tests.push(function setEnabled() {
|
||||
});
|
||||
});
|
||||
|
||||
tests.push(function clearedValue() {
|
||||
SpecialPowers.pushPrefEnv({"clear": [[dntValuePref]]}, function() {
|
||||
is(navigator.doNotTrack, "1", 'after clearing value pref');
|
||||
nextTest();
|
||||
});
|
||||
});
|
||||
|
||||
tests.push(function setValue0() {
|
||||
SpecialPowers.pushPrefEnv({"set": [[dntValuePref, 0]]}, function() {
|
||||
is(navigator.doNotTrack, "0", 'after setting value pref');
|
||||
nextTest();
|
||||
});
|
||||
});
|
||||
|
||||
tests.push(function setValue42() {
|
||||
SpecialPowers.pushPrefEnv({"set": [[dntValuePref, 42]]}, function() {
|
||||
is(navigator.doNotTrack, "1", 'after setting value pref');
|
||||
nextTest();
|
||||
});
|
||||
});
|
||||
|
||||
tests.push(function clearValueAgain() {
|
||||
SpecialPowers.pushPrefEnv({"clear": [[dntValuePref]]}, function() {
|
||||
is(navigator.doNotTrack, "1", 'after clearing value pref');
|
||||
nextTest();
|
||||
});
|
||||
});
|
||||
|
||||
tests.push(function setDisabled() {
|
||||
SpecialPowers.pushPrefEnv({"set": [[dntPref, false]]}, function() {
|
||||
is(navigator.doNotTrack, "unspecified", 'after setting pref to false');
|
||||
|
@ -66,6 +66,50 @@ LayerHasCheckerboardingAPZC(Layer* aLayer, gfxRGBA* aOutColor)
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a rectangle of content painted opaquely by aLayer. Very consertative;
|
||||
* bails by returning an empty rect in any tricky situations.
|
||||
*/
|
||||
static nsIntRect
|
||||
GetOpaqueRect(Layer* aLayer)
|
||||
{
|
||||
nsIntRect result;
|
||||
gfx::Matrix matrix;
|
||||
bool is2D = aLayer->AsLayerComposite()->GetShadowTransform().Is2D(&matrix);
|
||||
|
||||
// Just bail if there's anything difficult to handle.
|
||||
if (!is2D || aLayer->GetMaskLayer() ||
|
||||
aLayer->GetIsFixedPosition() ||
|
||||
aLayer->GetIsStickyPosition() ||
|
||||
aLayer->GetEffectiveOpacity() != 1.0f ||
|
||||
matrix.HasNonIntegerTranslation()) {
|
||||
return result;
|
||||
}
|
||||
|
||||
if (aLayer->GetContentFlags() & Layer::CONTENT_OPAQUE) {
|
||||
result = aLayer->GetEffectiveVisibleRegion().GetLargestRectangle();
|
||||
} else {
|
||||
// Drill down into RefLayers because that's what we particularly care about;
|
||||
// layer construction for aLayer will not have known about the opaqueness
|
||||
// of any RefLayer subtrees.
|
||||
RefLayer* refLayer = aLayer->AsRefLayer();
|
||||
if (refLayer && refLayer->GetFirstChild()) {
|
||||
result = GetOpaqueRect(refLayer->GetFirstChild());
|
||||
}
|
||||
}
|
||||
|
||||
// Translate our opaque region to cover the child
|
||||
gfx::Point point = matrix.GetTranslation();
|
||||
result.MoveBy(static_cast<int>(point.x), static_cast<int>(point.y));
|
||||
|
||||
const nsIntRect* clipRect = aLayer->GetEffectiveClipRect();
|
||||
if (clipRect) {
|
||||
result.IntersectRect(result, *clipRect);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static void DrawLayerInfo(const RenderTargetIntRect& aClipRect,
|
||||
LayerManagerComposite* aManager,
|
||||
Layer* aLayer)
|
||||
@ -118,10 +162,12 @@ static void PrintUniformityInfo(Layer* aLayer)
|
||||
/* all of the per-layer prepared data we need to maintain */
|
||||
struct PreparedLayer
|
||||
{
|
||||
PreparedLayer(LayerComposite *aLayer, RenderTargetIntRect aClipRect) :
|
||||
mLayer(aLayer), mClipRect(aClipRect) {}
|
||||
PreparedLayer(LayerComposite *aLayer, RenderTargetIntRect aClipRect, bool aRestoreVisibleRegion, nsIntRegion &aVisibleRegion) :
|
||||
mLayer(aLayer), mClipRect(aClipRect), mRestoreVisibleRegion(aRestoreVisibleRegion), mSavedVisibleRegion(aVisibleRegion) {}
|
||||
LayerComposite* mLayer;
|
||||
RenderTargetIntRect mClipRect;
|
||||
bool mRestoreVisibleRegion;
|
||||
nsIntRegion mSavedVisibleRegion;
|
||||
};
|
||||
|
||||
/* all of the prepared data that we need in RenderLayer() */
|
||||
@ -177,8 +223,38 @@ ContainerPrepare(ContainerT* aContainer,
|
||||
|
||||
CULLING_LOG("Preparing sublayer %p\n", layerToRender->GetLayer());
|
||||
|
||||
nsIntRegion savedVisibleRegion;
|
||||
bool restoreVisibleRegion = false;
|
||||
gfx::Matrix matrix;
|
||||
bool is2D = layerToRender->GetLayer()->GetBaseTransform().Is2D(&matrix);
|
||||
if (i + 1 < children.Length() &&
|
||||
is2D && !matrix.HasNonIntegerTranslation()) {
|
||||
LayerComposite* nextLayer = static_cast<LayerComposite*>(children.ElementAt(i + 1)->ImplData());
|
||||
CULLING_LOG("Culling against %p\n", nextLayer->GetLayer());
|
||||
nsIntRect nextLayerOpaqueRect;
|
||||
if (nextLayer && nextLayer->GetLayer()) {
|
||||
nextLayerOpaqueRect = GetOpaqueRect(nextLayer->GetLayer());
|
||||
gfx::Point point = matrix.GetTranslation();
|
||||
nextLayerOpaqueRect.MoveBy(static_cast<int>(-point.x), static_cast<int>(-point.y));
|
||||
CULLING_LOG(" point %i, %i\n", static_cast<int>(-point.x), static_cast<int>(-point.y));
|
||||
CULLING_LOG(" opaque rect %i, %i, %i, %i\n", nextLayerOpaqueRect.x, nextLayerOpaqueRect.y, nextLayerOpaqueRect.width, nextLayerOpaqueRect.height);
|
||||
}
|
||||
if (!nextLayerOpaqueRect.IsEmpty()) {
|
||||
CULLING_LOG(" draw\n");
|
||||
savedVisibleRegion = layerToRender->GetShadowVisibleRegion();
|
||||
nsIntRegion visibleRegion;
|
||||
visibleRegion.Sub(savedVisibleRegion, nextLayerOpaqueRect);
|
||||
if (visibleRegion.IsEmpty()) {
|
||||
continue;
|
||||
}
|
||||
layerToRender->SetShadowVisibleRegion(visibleRegion);
|
||||
restoreVisibleRegion = true;
|
||||
} else {
|
||||
CULLING_LOG(" skip\n");
|
||||
}
|
||||
}
|
||||
layerToRender->Prepare(clipRect);
|
||||
aContainer->mPrepared->mLayers.AppendElement(PreparedLayer(layerToRender, clipRect));
|
||||
aContainer->mPrepared->mLayers.AppendElement(PreparedLayer(layerToRender, clipRect, restoreVisibleRegion, savedVisibleRegion));
|
||||
}
|
||||
|
||||
CULLING_LOG("Preparing container layer %p\n", aContainer->GetLayer());
|
||||
@ -249,6 +325,11 @@ RenderLayers(ContainerT* aContainer,
|
||||
layerToRender->RenderLayer(RenderTargetPixel::ToUntyped(clipRect));
|
||||
}
|
||||
|
||||
if (preparedData.mRestoreVisibleRegion) {
|
||||
// Restore the region in case it's not covered by opaque content next time
|
||||
layerToRender->SetShadowVisibleRegion(preparedData.mSavedVisibleRegion);
|
||||
}
|
||||
|
||||
if (gfxPrefs::UniformityInfo()) {
|
||||
PrintUniformityInfo(layer);
|
||||
}
|
||||
|
@ -197,55 +197,6 @@ LayerManagerComposite::BeginTransactionWithDrawTarget(DrawTarget* aTarget, const
|
||||
mTargetBounds = aRect;
|
||||
}
|
||||
|
||||
void
|
||||
LayerManagerComposite::ApplyOcclusionCulling(Layer* aLayer, nsIntRegion& aOpaqueRegion)
|
||||
{
|
||||
nsIntRegion localOpaque;
|
||||
Matrix transform2d;
|
||||
bool isTranslation = false;
|
||||
// If aLayer has a simple transform (only an integer translation) then we
|
||||
// can easily convert aOpaqueRegion into pre-transform coordinates and include
|
||||
// that region.
|
||||
if (aLayer->GetLocalTransform().Is2D(&transform2d)) {
|
||||
if (transform2d.IsIntegerTranslation()) {
|
||||
isTranslation = true;
|
||||
localOpaque = aOpaqueRegion;
|
||||
localOpaque.MoveBy(-transform2d._31, -transform2d._32);
|
||||
}
|
||||
}
|
||||
|
||||
// Subtract any areas that we know to be opaque from our
|
||||
// visible region.
|
||||
LayerComposite *composite = aLayer->AsLayerComposite();
|
||||
if (!localOpaque.IsEmpty()) {
|
||||
nsIntRegion visible = composite->GetShadowVisibleRegion();
|
||||
visible.Sub(visible, localOpaque);
|
||||
composite->SetShadowVisibleRegion(visible);
|
||||
}
|
||||
|
||||
// Compute occlusions for our descendants (in front-to-back order) and allow them to
|
||||
// contribute to localOpaque.
|
||||
for (Layer* child = aLayer->GetLastChild(); child; child = child->GetPrevSibling()) {
|
||||
ApplyOcclusionCulling(child, localOpaque);
|
||||
}
|
||||
|
||||
// If we have a simple transform, then we can add our opaque area into
|
||||
// aOpaqueRegion.
|
||||
if (isTranslation &&
|
||||
!aLayer->GetMaskLayer() &&
|
||||
aLayer->GetLocalOpacity() == 1.0f) {
|
||||
if (aLayer->GetContentFlags() & Layer::CONTENT_OPAQUE) {
|
||||
localOpaque.Or(localOpaque, composite->GetShadowVisibleRegion());
|
||||
}
|
||||
localOpaque.MoveBy(transform2d._31, transform2d._32);
|
||||
const nsIntRect* clip = aLayer->GetEffectiveClipRect();
|
||||
if (clip) {
|
||||
localOpaque.And(localOpaque, *clip);
|
||||
}
|
||||
aOpaqueRegion.Or(aOpaqueRegion, localOpaque);
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
LayerManagerComposite::EndEmptyTransaction(EndTransactionFlags aFlags)
|
||||
{
|
||||
@ -306,9 +257,6 @@ LayerManagerComposite::EndTransaction(DrawPaintedLayerCallback aCallback,
|
||||
// so we don't need to pass any global transform here.
|
||||
mRoot->ComputeEffectiveTransforms(gfx::Matrix4x4());
|
||||
|
||||
nsIntRegion opaque;
|
||||
ApplyOcclusionCulling(mRoot, opaque);
|
||||
|
||||
Render();
|
||||
mGeometryChanged = false;
|
||||
} else {
|
||||
|
@ -165,13 +165,6 @@ public:
|
||||
|
||||
virtual const char* Name() const MOZ_OVERRIDE { return ""; }
|
||||
|
||||
/**
|
||||
* Restricts the shadow visible region of layers that are covered with
|
||||
* opaque content. aOpaqueRegion is the region already known to be covered
|
||||
* with opaque content, in the post-transform coordinate space of aLayer.
|
||||
*/
|
||||
void ApplyOcclusionCulling(Layer* aLayer, nsIntRegion& aOpaqueRegion);
|
||||
|
||||
/**
|
||||
* RAII helper class to add a mask effect with the compositable from aMaskLayer
|
||||
* to the EffectChain aEffect and notify the compositable when we are done.
|
||||
|
@ -792,26 +792,6 @@ CompositorParent::CompositeCallback(TimeStamp aScheduleTime)
|
||||
CompositeToTarget(nullptr);
|
||||
}
|
||||
|
||||
// Go down the composite layer tree, setting properties to match their
|
||||
// content-side counterparts.
|
||||
static void
|
||||
SetShadowProperties(Layer* aLayer)
|
||||
{
|
||||
// FIXME: Bug 717688 -- Do these updates in LayerTransactionParent::RecvUpdate.
|
||||
LayerComposite* layerComposite = aLayer->AsLayerComposite();
|
||||
// Set the layerComposite's base transform to the layer's base transform.
|
||||
layerComposite->SetShadowTransform(aLayer->GetBaseTransform());
|
||||
layerComposite->SetShadowTransformSetByAnimation(false);
|
||||
layerComposite->SetShadowVisibleRegion(aLayer->GetVisibleRegion());
|
||||
layerComposite->SetShadowClipRect(aLayer->GetClipRect());
|
||||
layerComposite->SetShadowOpacity(aLayer->GetOpacity());
|
||||
|
||||
for (Layer* child = aLayer->GetFirstChild();
|
||||
child; child = child->GetNextSibling()) {
|
||||
SetShadowProperties(child);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CompositorParent::CompositeToTarget(DrawTarget* aTarget, const nsIntRect* aRect)
|
||||
{
|
||||
@ -837,7 +817,6 @@ CompositorParent::CompositeToTarget(DrawTarget* aTarget, const nsIntRect* aRect)
|
||||
}
|
||||
|
||||
AutoResolveRefLayers resolve(mCompositionManager);
|
||||
SetShadowProperties(mLayerManager->GetRoot());
|
||||
|
||||
if (aTarget) {
|
||||
mLayerManager->BeginTransactionWithDrawTarget(aTarget, *aRect);
|
||||
@ -925,6 +904,26 @@ CompositorParent::CanComposite()
|
||||
!mPaused;
|
||||
}
|
||||
|
||||
// Go down the composite layer tree, setting properties to match their
|
||||
// content-side counterparts.
|
||||
static void
|
||||
SetShadowProperties(Layer* aLayer)
|
||||
{
|
||||
// FIXME: Bug 717688 -- Do these updates in LayerTransactionParent::RecvUpdate.
|
||||
LayerComposite* layerComposite = aLayer->AsLayerComposite();
|
||||
// Set the layerComposite's base transform to the layer's base transform.
|
||||
layerComposite->SetShadowTransform(aLayer->GetBaseTransform());
|
||||
layerComposite->SetShadowTransformSetByAnimation(false);
|
||||
layerComposite->SetShadowVisibleRegion(aLayer->GetVisibleRegion());
|
||||
layerComposite->SetShadowClipRect(aLayer->GetClipRect());
|
||||
layerComposite->SetShadowOpacity(aLayer->GetOpacity());
|
||||
|
||||
for (Layer* child = aLayer->GetFirstChild();
|
||||
child; child = child->GetNextSibling()) {
|
||||
SetShadowProperties(child);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
CompositorParent::ScheduleRotationOnCompositorThread(const TargetConfig& aTargetConfig,
|
||||
bool aIsFirstPaint)
|
||||
@ -972,6 +971,9 @@ CompositorParent::ShadowLayersUpdated(LayerTransactionParent* aLayerTree,
|
||||
MOZ_ASSERT(aTransactionId > mPendingTransaction);
|
||||
mPendingTransaction = aTransactionId;
|
||||
|
||||
if (root) {
|
||||
SetShadowProperties(root);
|
||||
}
|
||||
if (aScheduleComposite) {
|
||||
ScheduleComposition();
|
||||
if (mPaused) {
|
||||
@ -989,7 +991,6 @@ CompositorParent::ShadowLayersUpdated(LayerTransactionParent* aLayerTree,
|
||||
mCompositorVsyncObserver->NeedsComposite()));
|
||||
if (needTestComposite) {
|
||||
AutoResolveRefLayers resolve(mCompositionManager);
|
||||
SetShadowProperties(mLayerManager->GetRoot());
|
||||
bool requestNextFrame =
|
||||
mCompositionManager->TransformShadowTree(mTestTime);
|
||||
if (!requestNextFrame) {
|
||||
@ -1026,7 +1027,6 @@ CompositorParent::SetTestSampleTime(LayerTransactionParent* aLayerTree,
|
||||
// Update but only if we were already scheduled to animate
|
||||
if (testComposite) {
|
||||
AutoResolveRefLayers resolve(mCompositionManager);
|
||||
SetShadowProperties(mLayerManager->GetRoot());
|
||||
bool requestNextFrame = mCompositionManager->TransformShadowTree(aTime);
|
||||
if (!requestNextFrame) {
|
||||
CancelCurrentCompositeTask();
|
||||
@ -1589,6 +1589,9 @@ CrossProcessCompositorParent::ShadowLayersUpdated(
|
||||
state->mParent->ScheduleRotationOnCompositorThread(aTargetConfig, aIsFirstPaint);
|
||||
|
||||
Layer* shadowRoot = aLayerTree->GetRoot();
|
||||
if (shadowRoot) {
|
||||
SetShadowProperties(shadowRoot);
|
||||
}
|
||||
UpdateIndirectTree(id, shadowRoot, aTargetConfig);
|
||||
|
||||
state->mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite,
|
||||
|
@ -100,7 +100,7 @@ function ToLength(v) {
|
||||
return 0;
|
||||
|
||||
// Math.pow(2, 53) - 1 = 0x1fffffffffffff
|
||||
return v < 0x1fffffffffffff ? v : 0x1fffffffffffff;
|
||||
return std_Math_min(v, 0x1fffffffffffff);
|
||||
}
|
||||
|
||||
/********** Testing code **********/
|
||||
|
@ -5571,9 +5571,11 @@ CodeGenerator::visitIsNullOrLikeUndefined(LIsNullOrLikeUndefined *lir)
|
||||
}
|
||||
|
||||
Register tag = masm.splitTagForTest(value);
|
||||
|
||||
masm.branchTestNull(Assembler::Equal, tag, nullOrLikeUndefined);
|
||||
masm.branchTestUndefined(Assembler::Equal, tag, nullOrLikeUndefined);
|
||||
MDefinition *input = lir->mir()->lhs();
|
||||
if (input->mightBeType(MIRType_Null))
|
||||
masm.branchTestNull(Assembler::Equal, tag, nullOrLikeUndefined);
|
||||
if (input->mightBeType(MIRType_Undefined))
|
||||
masm.branchTestUndefined(Assembler::Equal, tag, nullOrLikeUndefined);
|
||||
|
||||
if (ool) {
|
||||
// Check whether it's a truthy object or a falsy object that emulates
|
||||
@ -5652,8 +5654,11 @@ CodeGenerator::visitIsNullOrLikeUndefinedAndBranch(LIsNullOrLikeUndefinedAndBran
|
||||
Label *ifTrueLabel = getJumpLabelForBranch(ifTrue);
|
||||
Label *ifFalseLabel = getJumpLabelForBranch(ifFalse);
|
||||
|
||||
masm.branchTestNull(Assembler::Equal, tag, ifTrueLabel);
|
||||
masm.branchTestUndefined(Assembler::Equal, tag, ifTrueLabel);
|
||||
MDefinition *input = lir->cmpMir()->lhs();
|
||||
if (input->mightBeType(MIRType_Null))
|
||||
masm.branchTestNull(Assembler::Equal, tag, ifTrueLabel);
|
||||
if (input->mightBeType(MIRType_Undefined))
|
||||
masm.branchTestUndefined(Assembler::Equal, tag, ifTrueLabel);
|
||||
|
||||
if (ool) {
|
||||
masm.branchTestObject(Assembler::NotEqual, tag, ifFalseLabel);
|
||||
|
@ -1147,31 +1147,64 @@ IonBuilder::inlineMathFRound(CallInfo &callInfo)
|
||||
IonBuilder::InliningStatus
|
||||
IonBuilder::inlineMathMinMax(CallInfo &callInfo, bool max)
|
||||
{
|
||||
if (callInfo.argc() < 2 || callInfo.constructing())
|
||||
if (callInfo.argc() < 1 || callInfo.constructing())
|
||||
return InliningStatus_NotInlined;
|
||||
|
||||
MIRType returnType = getInlineReturnType();
|
||||
if (!IsNumberType(returnType))
|
||||
return InliningStatus_NotInlined;
|
||||
|
||||
MDefinitionVector int32_cases(alloc());
|
||||
for (unsigned i = 0; i < callInfo.argc(); i++) {
|
||||
MIRType argType = callInfo.getArg(i)->type();
|
||||
if (!IsNumberType(argType))
|
||||
return InliningStatus_NotInlined;
|
||||
MDefinition *arg = callInfo.getArg(i);
|
||||
|
||||
// When one of the arguments is double, do a double MMinMax.
|
||||
if (returnType == MIRType_Int32 && IsFloatingPointType(argType))
|
||||
switch (arg->type()) {
|
||||
case MIRType_Int32:
|
||||
if (!int32_cases.append(arg))
|
||||
return InliningStatus_Error;
|
||||
break;
|
||||
case MIRType_Double:
|
||||
case MIRType_Float32:
|
||||
// Don't force a double MMinMax for arguments that would be a NOP
|
||||
// when doing an integer MMinMax.
|
||||
if (arg->isConstant()) {
|
||||
double cte = arg->toConstant()->value().toDouble();
|
||||
// min(int32, cte >= INT32_MAX) = int32
|
||||
if (cte >= INT32_MAX && !max)
|
||||
break;
|
||||
// max(int32, cte <= INT32_MIN) = int32
|
||||
if (cte <= INT32_MIN && max)
|
||||
break;
|
||||
}
|
||||
|
||||
// Force double MMinMax if argument is a "effectfull" double.
|
||||
returnType = MIRType_Double;
|
||||
break;
|
||||
default:
|
||||
return InliningStatus_NotInlined;
|
||||
}
|
||||
}
|
||||
|
||||
if (int32_cases.length() == 0)
|
||||
returnType = MIRType_Double;
|
||||
|
||||
callInfo.setImplicitlyUsedUnchecked();
|
||||
|
||||
MDefinitionVector &cases = (returnType == MIRType_Int32) ? int32_cases : callInfo.argv();
|
||||
|
||||
if (cases.length() == 1) {
|
||||
MLimitedTruncate *limit = MLimitedTruncate::New(alloc(), cases[0], MDefinition::NoTruncate);
|
||||
current->add(limit);
|
||||
current->push(limit);
|
||||
return InliningStatus_Inlined;
|
||||
}
|
||||
|
||||
// Chain N-1 MMinMax instructions to compute the MinMax.
|
||||
MMinMax *last = MMinMax::New(alloc(), callInfo.getArg(0), callInfo.getArg(1), returnType, max);
|
||||
MMinMax *last = MMinMax::New(alloc(), cases[0], cases[1], returnType, max);
|
||||
current->add(last);
|
||||
|
||||
for (unsigned i = 2; i < callInfo.argc(); i++) {
|
||||
MMinMax *ins = MMinMax::New(alloc(), last, callInfo.getArg(i), returnType, max);
|
||||
for (unsigned i = 2; i < cases.length(); i++) {
|
||||
MMinMax *ins = MMinMax::New(alloc(), last, cases[2], returnType, max);
|
||||
current->add(ins);
|
||||
last = ins;
|
||||
}
|
||||
|
@ -1830,6 +1830,41 @@ MMinMax::trySpecializeFloat32(TempAllocator &alloc)
|
||||
setResultType(MIRType_Float32);
|
||||
}
|
||||
|
||||
MDefinition *
|
||||
MMinMax::foldsTo(TempAllocator &alloc)
|
||||
{
|
||||
if (!lhs()->isConstant() && !rhs()->isConstant())
|
||||
return this;
|
||||
|
||||
MDefinition *operand = lhs()->isConstant() ? rhs() : lhs();
|
||||
MConstant *constant = lhs()->isConstant() ? lhs()->toConstant() : rhs()->toConstant();
|
||||
|
||||
if (operand->isToDouble() && operand->getOperand(0)->type() == MIRType_Int32) {
|
||||
const js::Value &val = constant->value();
|
||||
|
||||
// min(int32, cte >= INT32_MAX) = int32
|
||||
if (val.isDouble() && val.toDouble() >= INT32_MAX && !isMax()) {
|
||||
MLimitedTruncate *limit =
|
||||
MLimitedTruncate::New(alloc, operand->getOperand(0), MDefinition::NoTruncate);
|
||||
block()->insertBefore(this, limit);
|
||||
MToDouble *toDouble = MToDouble::New(alloc, limit);
|
||||
block()->insertBefore(this, toDouble);
|
||||
return toDouble;
|
||||
}
|
||||
|
||||
// max(int32, cte <= INT32_MIN) = int32
|
||||
if (val.isDouble() && val.toDouble() < INT32_MIN && isMax()) {
|
||||
MLimitedTruncate *limit =
|
||||
MLimitedTruncate::New(alloc, operand->getOperand(0), MDefinition::NoTruncate);
|
||||
block()->insertBefore(this, limit);
|
||||
MToDouble *toDouble = MToDouble::New(alloc, limit);
|
||||
block()->insertBefore(this, toDouble);
|
||||
return toDouble;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
bool
|
||||
MAbs::fallible() const
|
||||
{
|
||||
@ -2976,7 +3011,7 @@ MCompare::tryFold(bool *result)
|
||||
}
|
||||
|
||||
bool
|
||||
MCompare::evaluateConstantOperands(bool *result)
|
||||
MCompare::evaluateConstantOperands(TempAllocator &alloc, bool *result)
|
||||
{
|
||||
if (type() != MIRType_Boolean && type() != MIRType_Int32)
|
||||
return false;
|
||||
@ -2984,6 +3019,73 @@ MCompare::evaluateConstantOperands(bool *result)
|
||||
MDefinition *left = getOperand(0);
|
||||
MDefinition *right = getOperand(1);
|
||||
|
||||
if (compareType() == Compare_Double) {
|
||||
// Optimize "MCompare MConstant (MToDouble SomethingInInt32Range).
|
||||
// In most cases the MToDouble was added, because the constant is
|
||||
// a double.
|
||||
// e.g. v < 9007199254740991, where v is an int32 is always true.
|
||||
if (!lhs()->isConstant() && !rhs()->isConstant())
|
||||
return false;
|
||||
|
||||
MDefinition *operand = left->isConstant() ? right : left;
|
||||
MConstant *constant = left->isConstant() ? left->toConstant() : right->toConstant();
|
||||
MOZ_ASSERT(constant->value().isDouble());
|
||||
double cte = constant->value().toDouble();
|
||||
|
||||
if (operand->isToDouble() && operand->getOperand(0)->type() == MIRType_Int32) {
|
||||
bool replaced = false;
|
||||
switch (jsop_) {
|
||||
case JSOP_LT:
|
||||
if (cte > INT32_MAX || cte < INT32_MIN) {
|
||||
*result = !((constant == lhs()) ^ (cte < INT32_MIN));
|
||||
replaced = true;
|
||||
}
|
||||
break;
|
||||
case JSOP_LE:
|
||||
if (cte >= INT32_MAX || cte <= INT32_MIN) {
|
||||
*result = !((constant == lhs()) ^ (cte <= INT32_MIN));
|
||||
replaced = true;
|
||||
}
|
||||
break;
|
||||
case JSOP_GT:
|
||||
if (cte > INT32_MAX || cte < INT32_MIN) {
|
||||
*result = !((constant == rhs()) ^ (cte < INT32_MIN));
|
||||
replaced = true;
|
||||
}
|
||||
break;
|
||||
case JSOP_GE:
|
||||
if (cte >= INT32_MAX || cte <= INT32_MIN) {
|
||||
*result = !((constant == rhs()) ^ (cte <= INT32_MIN));
|
||||
replaced = true;
|
||||
}
|
||||
break;
|
||||
case JSOP_STRICTEQ: // Fall through.
|
||||
case JSOP_EQ:
|
||||
if (cte > INT32_MAX || cte < INT32_MIN) {
|
||||
*result = false;
|
||||
replaced = true;
|
||||
}
|
||||
break;
|
||||
case JSOP_STRICTNE: // Fall through.
|
||||
case JSOP_NE:
|
||||
if (cte > INT32_MAX || cte < INT32_MIN) {
|
||||
*result = true;
|
||||
replaced = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
MOZ_CRASH("Unexpected op.");
|
||||
}
|
||||
if (replaced) {
|
||||
MLimitedTruncate *limit =
|
||||
MLimitedTruncate::New(alloc, operand->getOperand(0), MDefinition::NoTruncate);
|
||||
limit->setGuardUnchecked();
|
||||
block()->insertBefore(this, limit);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!left->isConstant() || !right->isConstant())
|
||||
return false;
|
||||
|
||||
@ -3092,7 +3194,7 @@ MCompare::foldsTo(TempAllocator &alloc)
|
||||
{
|
||||
bool result;
|
||||
|
||||
if (tryFold(&result) || evaluateConstantOperands(&result)) {
|
||||
if (tryFold(&result) || evaluateConstantOperands(alloc, &result)) {
|
||||
if (type() == MIRType_Int32)
|
||||
return MConstant::New(alloc, Int32Value(result));
|
||||
|
||||
|
@ -3643,7 +3643,7 @@ class MCompare
|
||||
CompareType compareType);
|
||||
|
||||
bool tryFold(bool *result);
|
||||
bool evaluateConstantOperands(bool *result);
|
||||
bool evaluateConstantOperands(TempAllocator &alloc, bool *result);
|
||||
MDefinition *foldsTo(TempAllocator &alloc);
|
||||
void filtersUndefinedOrNull(bool trueBranch, MDefinition **subject, bool *filtersUndefined,
|
||||
bool *filtersNull);
|
||||
@ -5008,6 +5008,7 @@ class MMinMax
|
||||
AliasSet getAliasSet() const {
|
||||
return AliasSet::None();
|
||||
}
|
||||
MDefinition *foldsTo(TempAllocator &alloc);
|
||||
void computeRange(TempAllocator &alloc);
|
||||
bool writeRecoverData(CompactBufferWriter &writer) const;
|
||||
bool canRecoverOnBailout() const {
|
||||
|
@ -947,40 +947,47 @@ nsCSSRendering::PaintFocus(nsPresContext* aPresContext,
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Computes the placement of a background image.
|
||||
*
|
||||
* @param aOriginBounds is the box to which the tiling position should be
|
||||
* relative
|
||||
* This should correspond to 'background-origin' for the frame,
|
||||
* except when painting on the canvas, in which case the origin bounds
|
||||
* should be the bounds of the root element's frame.
|
||||
* @param aTopLeft the top-left corner where an image tile should be drawn
|
||||
* @param aAnchorPoint a point which should be pixel-aligned by
|
||||
* nsLayoutUtils::DrawImage. This is the same as aTopLeft, unless CSS
|
||||
* specifies a percentage (including 'right' or 'bottom'), in which case
|
||||
* it's that percentage within of aOriginBounds. So 'right' would set
|
||||
* aAnchorPoint.x to aOriginBounds.XMost().
|
||||
*
|
||||
* Points are returned relative to aOriginBounds.
|
||||
* Helper for ComputeObjectAnchorPoint; parameters are the same as for
|
||||
* that function, except they're for a single coordinate / a single size
|
||||
* dimension. (so, x/width vs. y/height)
|
||||
*/
|
||||
typedef nsStyleBackground::Position::PositionCoord PositionCoord;
|
||||
static void
|
||||
ComputeBackgroundAnchorPoint(const nsStyleBackground::Layer& aLayer,
|
||||
const nsSize& aOriginBounds,
|
||||
const nsSize& aImageSize,
|
||||
nsPoint* aTopLeft,
|
||||
nsPoint* aAnchorPoint)
|
||||
ComputeObjectAnchorCoord(const PositionCoord& aCoord,
|
||||
const nscoord aOriginBounds,
|
||||
const nscoord aImageSize,
|
||||
nscoord* aTopLeftCoord,
|
||||
nscoord* aAnchorPointCoord)
|
||||
{
|
||||
double percentX = aLayer.mPosition.mXPosition.mPercent;
|
||||
nscoord lengthX = aLayer.mPosition.mXPosition.mLength;
|
||||
aAnchorPoint->x = lengthX + NSToCoordRound(percentX*aOriginBounds.width);
|
||||
aTopLeft->x = lengthX +
|
||||
NSToCoordRound(percentX*(aOriginBounds.width - aImageSize.width));
|
||||
*aAnchorPointCoord = aCoord.mLength;
|
||||
*aTopLeftCoord = aCoord.mLength;
|
||||
|
||||
double percentY = aLayer.mPosition.mYPosition.mPercent;
|
||||
nscoord lengthY = aLayer.mPosition.mYPosition.mLength;
|
||||
aAnchorPoint->y = lengthY + NSToCoordRound(percentY*aOriginBounds.height);
|
||||
aTopLeft->y = lengthY +
|
||||
NSToCoordRound(percentY*(aOriginBounds.height - aImageSize.height));
|
||||
if (aCoord.mHasPercent) {
|
||||
// Adjust aTopLeftCoord by the specified % of the extra space.
|
||||
nscoord extraSpace = aOriginBounds - aImageSize;
|
||||
*aTopLeftCoord += NSToCoordRound(aCoord.mPercent * extraSpace);
|
||||
|
||||
// The anchor-point doesn't care about our image's size; just the size
|
||||
// of the region we're rendering into.
|
||||
*aAnchorPointCoord += NSToCoordRound(aCoord.mPercent * aOriginBounds);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsImageRenderer::ComputeObjectAnchorPoint(
|
||||
const nsStyleBackground::Position& aPos,
|
||||
const nsSize& aOriginBounds,
|
||||
const nsSize& aImageSize,
|
||||
nsPoint* aTopLeft,
|
||||
nsPoint* aAnchorPoint)
|
||||
{
|
||||
ComputeObjectAnchorCoord(aPos.mXPosition,
|
||||
aOriginBounds.width, aImageSize.width,
|
||||
&aTopLeft->x, &aAnchorPoint->x);
|
||||
|
||||
ComputeObjectAnchorCoord(aPos.mYPosition,
|
||||
aOriginBounds.height, aImageSize.height,
|
||||
&aTopLeft->y, &aAnchorPoint->y);
|
||||
}
|
||||
|
||||
nsIFrame*
|
||||
@ -3167,8 +3174,9 @@ nsCSSRendering::PrepareBackgroundLayer(nsPresContext* aPresContext,
|
||||
|
||||
// Compute the position of the background now that the background's size is
|
||||
// determined.
|
||||
ComputeBackgroundAnchorPoint(aLayer, bgPositionSize, imageSize,
|
||||
&imageTopLeft, &state.mAnchor);
|
||||
nsImageRenderer::ComputeObjectAnchorPoint(aLayer.mPosition,
|
||||
bgPositionSize, imageSize,
|
||||
&imageTopLeft, &state.mAnchor);
|
||||
imageTopLeft += bgPositioningArea.TopLeft();
|
||||
state.mAnchor += bgPositioningArea.TopLeft();
|
||||
|
||||
|
@ -138,6 +138,33 @@ public:
|
||||
*/
|
||||
mozilla::CSSSizeOrRatio ComputeIntrinsicSize();
|
||||
|
||||
/**
|
||||
* Computes the placement for a background image, or for the image data
|
||||
* inside of a replaced element.
|
||||
*
|
||||
* @param aPos The CSS <position> value that specifies the image's position.
|
||||
* @param aOriginBounds The box to which the tiling position should be
|
||||
* relative. For background images, this should correspond to
|
||||
* 'background-origin' for the frame, except when painting on the
|
||||
* canvas, in which case the origin bounds should be the bounds
|
||||
* of the root element's frame. For a replaced element, this should
|
||||
* be the element's content-box.
|
||||
* @param aTopLeft [out] The top-left corner where an image tile should be
|
||||
* drawn.
|
||||
* @param aAnchorPoint [out] A point which should be pixel-aligned by
|
||||
* nsLayoutUtils::DrawImage. This is the same as aTopLeft, unless
|
||||
* CSS specifies a percentage (including 'right' or 'bottom'), in
|
||||
* which case it's that percentage within of aOriginBounds. So
|
||||
* 'right' would set aAnchorPoint.x to aOriginBounds.XMost().
|
||||
*
|
||||
* Points are returned relative to aOriginBounds.
|
||||
*/
|
||||
static void ComputeObjectAnchorPoint(const nsStyleBackground::Position& aPos,
|
||||
const nsSize& aOriginBounds,
|
||||
const nsSize& aImageSize,
|
||||
nsPoint* aTopLeft,
|
||||
nsPoint* aAnchorPoint);
|
||||
|
||||
/**
|
||||
* Compute the size of the rendered image using either the 'cover' or
|
||||
* 'contain' constraints (aFitType).
|
||||
|
15
layout/reftests/bugs/1081072-1-ref.html
Normal file
15
layout/reftests/bugs/1081072-1-ref.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
.container {
|
||||
border: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div>T</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
34
layout/reftests/bugs/1081072-1.html
Normal file
34
layout/reftests/bugs/1081072-1.html
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<style>
|
||||
.container {
|
||||
display: flex;
|
||||
overflow-y: auto;
|
||||
border: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
<script type='text/javascript'>
|
||||
window.addEventListener("MozReftestInvalidate", startTest);
|
||||
|
||||
function startTest() {
|
||||
// NOTE: setTimeout in tests is evil, but it's necessary here -- we need
|
||||
// to wait until the scrollbars have finished fading, and there's no
|
||||
// event we can listen for to signal that, AFAIK. Fortunately, there
|
||||
// shouldn't be *visible* scrollbars in this testcase, so even if our
|
||||
// setTimeout fires too early/late, the test will still pass. (So, there
|
||||
// shouldn't be spurious failures; any failures that happen will be real.)
|
||||
setTimeout(endTest, 800);
|
||||
}
|
||||
|
||||
function endTest() {
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div>T</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1837,4 +1837,5 @@ fails-if(Android) == 1062792-1.html 1062792-1-ref.html
|
||||
test-pref(dom.webcomponents.enabled,true) == 1066554-1.html 1066554-1-ref.html
|
||||
== 1069716-1.html 1069716-1-ref.html
|
||||
== 1078262-1.html about:blank
|
||||
== 1081072-1.html 1081072-1-ref.html
|
||||
== 1081185-1.html 1081185-1-ref.html
|
||||
|
@ -172,10 +172,8 @@
|
||||
<!ENTITY pref_cookies_not_accept_foreign "Enabled, excluding 3rd party">
|
||||
<!ENTITY pref_cookies_disabled "Disabled">
|
||||
|
||||
<!ENTITY pref_donottrack_menu "Tracking">
|
||||
<!ENTITY pref_donottrack_disallow_tracking "Tell sites that I do not want to be tracked">
|
||||
<!ENTITY pref_donottrack_allow_tracking "Tell sites that I want to be tracked">
|
||||
<!ENTITY pref_donottrack_no_pref "Do not tell sites anything about my tracking preferences">
|
||||
<!ENTITY pref_donottrack_title "Do not track">
|
||||
<!ENTITY pref_donottrack_summary "&brandShortName; will tell sites that you do not want to be tracked">
|
||||
|
||||
<!ENTITY pref_char_encoding "Character encoding">
|
||||
<!ENTITY pref_char_encoding_on "Show menu">
|
||||
|
@ -54,16 +54,6 @@
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
</string-array>
|
||||
<string-array name="pref_donottrack_entries">
|
||||
<item>@string/pref_donottrack_disallow_tracking</item>
|
||||
<item>@string/pref_donottrack_allow_tracking</item>
|
||||
<item>@string/pref_donottrack_no_pref</item>
|
||||
</string-array>
|
||||
<string-array name="pref_donottrack_values">
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>0</item>
|
||||
</string-array>
|
||||
<string-array name="pref_import_android_entries">
|
||||
<item>@string/bookmarks_title</item>
|
||||
|
@ -8,11 +8,11 @@
|
||||
android:title="@string/pref_category_privacy_short"
|
||||
android:enabled="false">
|
||||
|
||||
<ListPreference android:key="privacy.donottrackheader"
|
||||
android:title="@string/pref_donottrack_menu"
|
||||
android:entries="@array/pref_donottrack_entries"
|
||||
android:entryValues="@array/pref_donottrack_values"
|
||||
android:persistent="false" />
|
||||
<CheckBoxPreference android:key="privacy.donottrackheader.enabled"
|
||||
android:title="@string/pref_donottrack_title"
|
||||
android:summary="@string/pref_donottrack_summary"
|
||||
android:defaultValue="false"
|
||||
android:persistent="false" />
|
||||
|
||||
<ListPreference android:key="network.cookie.cookieBehavior"
|
||||
android:title="@string/pref_cookies_menu"
|
||||
|
@ -181,10 +181,8 @@
|
||||
<string name="pref_cookies_not_accept_foreign">&pref_cookies_not_accept_foreign;</string>
|
||||
<string name="pref_cookies_disabled">&pref_cookies_disabled;</string>
|
||||
|
||||
<string name="pref_donottrack_menu">&pref_donottrack_menu;</string>
|
||||
<string name="pref_donottrack_disallow_tracking">&pref_donottrack_disallow_tracking;</string>
|
||||
<string name="pref_donottrack_allow_tracking">&pref_donottrack_allow_tracking;</string>
|
||||
<string name="pref_donottrack_no_pref">&pref_donottrack_no_pref;</string>
|
||||
<string name="pref_donottrack_title">&pref_donottrack_title;</string>
|
||||
<string name="pref_donottrack_summary">&pref_donottrack_summary;</string>
|
||||
|
||||
<string name="pref_char_encoding">&pref_char_encoding;</string>
|
||||
<string name="pref_char_encoding_on">&pref_char_encoding_on;</string>
|
||||
|
@ -171,7 +171,7 @@ public class StringHelper {
|
||||
public static final String SHOW_PAGE_ADDRESS_LABEL = "Show page address";
|
||||
|
||||
// Privacy
|
||||
public static final String TRACKING_LABEL = "Tracking";
|
||||
public static final String TRACKING_LABEL = "Do not track";
|
||||
public static final String COOKIES_LABEL = "Cookies";
|
||||
public static final String REMEMBER_PASSWORDS_LABEL = "Remember passwords";
|
||||
public static final String MASTER_PASSWORD_LABEL = "Use master password";
|
||||
|
@ -60,7 +60,7 @@ public class testSettingsMenuItems extends PixelTest {
|
||||
// Privacy menu items.
|
||||
String[] PATH_PRIVACY = { StringHelper.PRIVACY_SECTION_LABEL };
|
||||
String[][] OPTIONS_PRIVACY = {
|
||||
{ StringHelper.TRACKING_LABEL, "Do not tell sites anything about my tracking preferences", "Tell sites that I do not want to be tracked", "Tell sites that I want to be tracked", "Do not tell sites anything about my tracking preferences" },
|
||||
{ StringHelper.TRACKING_LABEL },
|
||||
{ StringHelper.COOKIES_LABEL, "Enabled", "Enabled, excluding 3rd party", "Disabled" },
|
||||
{ StringHelper.REMEMBER_PASSWORDS_LABEL },
|
||||
{ StringHelper.MASTER_PASSWORD_LABEL },
|
||||
|
@ -198,12 +198,6 @@ const kDefaultCSSViewportHeight = 480;
|
||||
|
||||
const kViewportRemeasureThrottle = 500;
|
||||
|
||||
const kDoNotTrackPrefState = Object.freeze({
|
||||
NO_PREF: "0",
|
||||
DISALLOW_TRACKING: "1",
|
||||
ALLOW_TRACKING: "2",
|
||||
});
|
||||
|
||||
let Log = Cu.import("resource://gre/modules/AndroidLog.jsm", {}).AndroidLog;
|
||||
|
||||
// Define the "dump" function as a binding of the Log.d function so it specifies
|
||||
@ -838,6 +832,20 @@ var BrowserApp = {
|
||||
Services.prefs.clearUserPref("plugins.click_to_play");
|
||||
}
|
||||
|
||||
// Migrate the "privacy.donottrackheader.value" pref. See bug 1042135.
|
||||
if (Services.prefs.prefHasUserValue("privacy.donottrackheader.value")) {
|
||||
// Make sure the doNotTrack value conforms to the conversion from
|
||||
// three-state to two-state. (This reverts a setting of "please track me"
|
||||
// to the default "don't say anything").
|
||||
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") &&
|
||||
(Services.prefs.getIntPref("privacy.donottrackheader.value") != 1)) {
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
|
||||
}
|
||||
|
||||
// This pref has been removed, so always clear it.
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.value");
|
||||
}
|
||||
|
||||
// Set the search activity default pref on app upgrade if it has not been set already.
|
||||
if (this._startupStatus === "upgrade" &&
|
||||
!Services.prefs.prefHasUserValue("searchActivity.default.migrated")) {
|
||||
@ -1281,21 +1289,6 @@ var BrowserApp = {
|
||||
case "privacy.masterpassword.enabled":
|
||||
pref.type = "bool";
|
||||
pref.value = MasterPassword.enabled;
|
||||
prefs.push(pref);
|
||||
continue;
|
||||
// Handle do-not-track preference
|
||||
case "privacy.donottrackheader":
|
||||
pref.type = "string";
|
||||
|
||||
let enableDNT = Services.prefs.getBoolPref("privacy.donottrackheader.enabled");
|
||||
if (!enableDNT) {
|
||||
pref.value = kDoNotTrackPrefState.NO_PREF;
|
||||
} else {
|
||||
let dntState = Services.prefs.getIntPref("privacy.donottrackheader.value");
|
||||
pref.value = (dntState === 0) ? kDoNotTrackPrefState.ALLOW_TRACKING :
|
||||
kDoNotTrackPrefState.DISALLOW_TRACKING;
|
||||
}
|
||||
|
||||
prefs.push(pref);
|
||||
continue;
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
@ -1379,27 +1372,6 @@ var BrowserApp = {
|
||||
MasterPassword.setPassword(json.value);
|
||||
return;
|
||||
|
||||
// "privacy.donottrackheader" is not "real" pref name, it's used in the setting menu.
|
||||
case "privacy.donottrackheader":
|
||||
switch (json.value) {
|
||||
// Don't tell anything about tracking me
|
||||
case kDoNotTrackPrefState.NO_PREF:
|
||||
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", false);
|
||||
Services.prefs.clearUserPref("privacy.donottrackheader.value");
|
||||
break;
|
||||
// Accept tracking me
|
||||
case kDoNotTrackPrefState.ALLOW_TRACKING:
|
||||
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true);
|
||||
Services.prefs.setIntPref("privacy.donottrackheader.value", 0);
|
||||
break;
|
||||
// Not accept tracking me
|
||||
case kDoNotTrackPrefState.DISALLOW_TRACKING:
|
||||
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true);
|
||||
Services.prefs.setIntPref("privacy.donottrackheader.value", 1);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
// Enabling or disabling suggestions will prevent future prompts
|
||||
case SearchEngines.PREF_SUGGEST_ENABLED:
|
||||
Services.prefs.setBoolPref(SearchEngines.PREF_SUGGEST_PROMPTED, true);
|
||||
|
@ -940,11 +940,8 @@ pref("content.sink.pending_event_mode", 0);
|
||||
// 2 = openAbused
|
||||
pref("privacy.popups.disable_from_plugins", 2);
|
||||
|
||||
// "do not track" HTTP header, disabled by default
|
||||
// send "do not track" HTTP header, disabled by default
|
||||
pref("privacy.donottrackheader.enabled", false);
|
||||
// 0 = tracking is acceptable
|
||||
// 1 = tracking is unacceptable
|
||||
pref("privacy.donottrackheader.value", 1);
|
||||
// Enforce tracking protection
|
||||
pref("privacy.trackingprotection.enabled", false);
|
||||
|
||||
|
@ -83,8 +83,6 @@ extern PRThread *gSocketThread;
|
||||
#define INTL_ACCEPT_LANGUAGES "intl.accept_languages"
|
||||
#define BROWSER_PREF_PREFIX "browser.cache."
|
||||
#define DONOTTRACK_HEADER_ENABLED "privacy.donottrackheader.enabled"
|
||||
#define DONOTTRACK_HEADER_VALUE "privacy.donottrackheader.value"
|
||||
#define DONOTTRACK_VALUE_UNSET 2
|
||||
#define TELEMETRY_ENABLED "toolkit.telemetry.enabled"
|
||||
#define ALLOW_EXPERIMENTS "network.allow-experiments"
|
||||
#define SAFE_HINT_HEADER_VALUE "safeHint.enabled"
|
||||
@ -175,7 +173,6 @@ nsHttpHandler::nsHttpHandler()
|
||||
, mSendSecureXSiteReferrer(true)
|
||||
, mEnablePersistentHttpsCaching(false)
|
||||
, mDoNotTrackEnabled(false)
|
||||
, mDoNotTrackValue(1)
|
||||
, mSafeHintEnabled(false)
|
||||
, mParentalControlEnabled(false)
|
||||
, mTelemetryEnabled(false)
|
||||
@ -274,7 +271,6 @@ nsHttpHandler::Init()
|
||||
prefBranch->AddObserver(INTL_ACCEPT_LANGUAGES, this, true);
|
||||
prefBranch->AddObserver(BROWSER_PREF("disk_cache_ssl"), this, true);
|
||||
prefBranch->AddObserver(DONOTTRACK_HEADER_ENABLED, this, true);
|
||||
prefBranch->AddObserver(DONOTTRACK_HEADER_VALUE, this, true);
|
||||
prefBranch->AddObserver(TELEMETRY_ENABLED, this, true);
|
||||
prefBranch->AddObserver(HTTP_PREF("tcp_keepalive.short_lived_connections"), this, true);
|
||||
prefBranch->AddObserver(HTTP_PREF("tcp_keepalive.long_lived_connections"), this, true);
|
||||
@ -427,8 +423,7 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpHeaderArray *request)
|
||||
|
||||
// Add the "Do-Not-Track" header
|
||||
if (mDoNotTrackEnabled) {
|
||||
rv = request->SetHeader(nsHttp::DoNotTrack,
|
||||
nsPrintfCString("%d", mDoNotTrackValue));
|
||||
rv = request->SetHeader(nsHttp::DoNotTrack, NS_LITERAL_CSTRING("1"));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
|
||||
@ -1356,14 +1351,6 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
||||
mDoNotTrackEnabled = cVar;
|
||||
}
|
||||
}
|
||||
if (PREF_CHANGED(DONOTTRACK_HEADER_VALUE)) {
|
||||
val = 1;
|
||||
rv = prefs->GetIntPref(DONOTTRACK_HEADER_VALUE, &val);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
mDoNotTrackValue = val;
|
||||
}
|
||||
}
|
||||
|
||||
// Hint option
|
||||
if (PREF_CHANGED(SAFE_HINT_HEADER_VALUE)) {
|
||||
cVar = false;
|
||||
@ -1860,9 +1847,9 @@ nsHttpHandler::Observe(nsISupports *subject,
|
||||
mSessionStartTime = NowInSeconds();
|
||||
|
||||
if (!mDoNotTrackEnabled) {
|
||||
Telemetry::Accumulate(Telemetry::DNT_USAGE, DONOTTRACK_VALUE_UNSET);
|
||||
Telemetry::Accumulate(Telemetry::DNT_USAGE, 2);
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::DNT_USAGE, mDoNotTrackValue);
|
||||
Telemetry::Accumulate(Telemetry::DNT_USAGE, 1);
|
||||
}
|
||||
} else if (!strcmp(topic, "profile-change-net-restore")) {
|
||||
// initialize connection manager
|
||||
|
@ -450,7 +450,6 @@ private:
|
||||
|
||||
// For broadcasting tracking preference
|
||||
bool mDoNotTrackEnabled;
|
||||
uint8_t mDoNotTrackValue;
|
||||
|
||||
// for broadcasting safe hint;
|
||||
bool mSafeHintEnabled;
|
||||
|
@ -1040,9 +1040,10 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
||||
{ "media.mozilla.com", true, false, true, -1, &kPinset_mozilla },
|
||||
{ "mobile.twitter.com", true, false, false, -1, &kPinset_twitterCom },
|
||||
{ "oauth.twitter.com", true, false, false, -1, &kPinset_twitterCom },
|
||||
{ "passwords.google.com", true, false, false, -1, &kPinset_google_root_pems },
|
||||
{ "pinningtest.appspot.com", true, false, false, -1, &kPinset_test },
|
||||
{ "platform.twitter.com", true, false, false, -1, &kPinset_twitterCDN },
|
||||
{ "play.google.com", false, false, false, -1, &kPinset_google_root_pems },
|
||||
{ "play.google.com", true, false, false, -1, &kPinset_google_root_pems },
|
||||
{ "plus.google.com", true, false, false, -1, &kPinset_google_root_pems },
|
||||
{ "plus.sandbox.google.com", true, false, false, -1, &kPinset_google_root_pems },
|
||||
{ "profiles.google.com", true, false, false, -1, &kPinset_google_root_pems },
|
||||
@ -1088,8 +1089,8 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
||||
{ "ytimg.com", true, false, false, -1, &kPinset_google_root_pems },
|
||||
};
|
||||
|
||||
// Pinning Preload List Length = 331;
|
||||
// Pinning Preload List Length = 332;
|
||||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1422094197058000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1422478437605000);
|
||||
|
@ -1,6 +1,9 @@
|
||||
admin.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
adsfund.org: could not connect to host
|
||||
airbnb.com: did not receive HSTS header
|
||||
aiticon.de: did not receive HSTS header
|
||||
alpha.irccloud.com: could not connect to host
|
||||
amigogeek.net: could not connect to host
|
||||
api.lookout.com: could not connect to host
|
||||
api.mega.co.nz: could not connect to host
|
||||
api.recurly.com: did not receive HSTS header
|
||||
@ -8,36 +11,63 @@ apis.google.com: did not receive HSTS header (error ignored - included regardles
|
||||
app.manilla.com: could not connect to host
|
||||
appengine.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
appseccalifornia.org: did not receive HSTS header
|
||||
at.search.yahoo.com: did not receive HSTS header
|
||||
au.search.yahoo.com: did not receive HSTS header
|
||||
az.search.yahoo.com: did not receive HSTS header
|
||||
azprep.us: did not receive HSTS header
|
||||
bassh.net: did not receive HSTS header
|
||||
bccx.com: could not connect to host
|
||||
be.search.yahoo.com: did not receive HSTS header
|
||||
bedeta.de: could not connect to host
|
||||
betnet.fr: could not connect to host
|
||||
bi.search.yahoo.com: did not receive HSTS header
|
||||
bigshinylock.minazo.net: could not connect to host
|
||||
bitfarm-archiv.com: did not receive HSTS header
|
||||
bitfarm-archiv.de: did not receive HSTS header
|
||||
blog.lookout.com: did not receive HSTS header
|
||||
boxcryptor.com: could not connect to host
|
||||
br.search.yahoo.com: did not receive HSTS header
|
||||
braintreegateway.com: did not receive HSTS header
|
||||
braintreepayments.com: did not receive HSTS header
|
||||
browserid.org: did not receive HSTS header
|
||||
business.medbank.com.mt: did not receive HSTS header
|
||||
calyxinstitute.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 126" data: no]
|
||||
ca.search.yahoo.com: did not receive HSTS header
|
||||
calibreapp.com: did not receive HSTS header
|
||||
calyxinstitute.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 134" data: no]
|
||||
carlolly.co.uk: did not receive HSTS header
|
||||
cartucce24.it: could not connect to host
|
||||
cd.search.yahoo.com: did not receive HSTS header
|
||||
celltek-server.de: did not receive HSTS header
|
||||
cert.se: max-age too low: 2628001
|
||||
cg.search.yahoo.com: did not receive HSTS header
|
||||
ch.search.yahoo.com: did not receive HSTS header
|
||||
checkout.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
chfr.search.yahoo.com: did not receive HSTS header
|
||||
chit.search.yahoo.com: did not receive HSTS header
|
||||
chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
|
||||
chrome.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
cimballa.com: did not receive HSTS header
|
||||
cl.search.yahoo.com: did not receive HSTS header
|
||||
cloud.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
cn.search.yahoo.com: did not receive HSTS header
|
||||
co.search.yahoo.com: did not receive HSTS header
|
||||
code.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
codereview.chromium.org: did not receive HSTS header (error ignored - included regardless)
|
||||
cr.search.yahoo.com: did not receive HSTS header
|
||||
crate.io: did not receive HSTS header
|
||||
crbug.com: did not receive HSTS header
|
||||
crowdcurity.com: did not receive HSTS header
|
||||
crypto.is: did not receive HSTS header
|
||||
csawctf.poly.edu: did not receive HSTS header
|
||||
ct.search.yahoo.com: did not receive HSTS header
|
||||
cube.de: max-age too low: 0
|
||||
daylightcompany.com: could not connect to host
|
||||
de.search.yahoo.com: did not receive HSTS header
|
||||
decibelios.li: did not receive HSTS header
|
||||
digitaldaddy.net: could not connect to host
|
||||
discovery.lookout.com: did not receive HSTS header
|
||||
dk.search.yahoo.com: did not receive HSTS header
|
||||
dl.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
do.search.yahoo.com: did not receive HSTS header
|
||||
docs.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
drive.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
dropbox.com: max-age too low: 2592000
|
||||
@ -45,56 +75,95 @@ dropcam.com: did not receive HSTS header
|
||||
ed.gs: did not receive HSTS header
|
||||
edmodo.com: did not receive HSTS header
|
||||
email.lookout.com: could not connect to host
|
||||
en-maktoob.search.yahoo.com: did not receive HSTS header
|
||||
encrypted.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
epoxate.com: did not receive HSTS header
|
||||
es.search.yahoo.com: did not receive HSTS header
|
||||
espanol.search.yahoo.com: did not receive HSTS header
|
||||
espra.com: could not connect to host
|
||||
f-droid.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 126" data: no]
|
||||
f-droid.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 134" data: no]
|
||||
fatzebra.com.au: did not receive HSTS header
|
||||
fi.search.yahoo.com: did not receive HSTS header
|
||||
filedir.com: did not receive HSTS header
|
||||
fj.search.yahoo.com: did not receive HSTS header
|
||||
fr.search.yahoo.com: did not receive HSTS header
|
||||
freenetproject.org: max-age too low: 864000
|
||||
gamesdepartment.co.uk: did not receive HSTS header
|
||||
get.zenpayroll.com: did not receive HSTS header
|
||||
getlantern.org: did not receive HSTS header
|
||||
gl.search.yahoo.com: did not receive HSTS header
|
||||
glass.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
globalcs.co.uk: did not receive HSTS header
|
||||
gm.search.yahoo.com: did not receive HSTS header
|
||||
gmail.com: did not receive HSTS header (error ignored - included regardless)
|
||||
googlemail.com: did not receive HSTS header (error ignored - included regardless)
|
||||
googleplex.com: could not connect to host
|
||||
googleplex.com: could not connect to host (error ignored - included regardless)
|
||||
goto.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
gparent.org: did not receive HSTS header
|
||||
gr.search.yahoo.com: did not receive HSTS header
|
||||
greplin.com: could not connect to host
|
||||
groups.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
hackerone-user-content.com: could not connect to host
|
||||
haste.ch: could not connect to host
|
||||
history.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
hk.search.yahoo.com: did not receive HSTS header
|
||||
hn.search.yahoo.com: did not receive HSTS header
|
||||
hoerbuecher-und-hoerspiele.de: did not receive HSTS header
|
||||
honeytracks.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 126" data: no]
|
||||
honeytracks.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 134" data: no]
|
||||
horosho.in: did not receive HSTS header
|
||||
hostedtalkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
howrandom.org: could not connect to host
|
||||
hu.search.yahoo.com: did not receive HSTS header
|
||||
id.search.yahoo.com: did not receive HSTS header
|
||||
ie.search.yahoo.com: did not receive HSTS header
|
||||
ilmconpm.de: did not receive HSTS header
|
||||
in.search.yahoo.com: did not receive HSTS header
|
||||
in.xero.com: max-age too low: 3600
|
||||
intercom.io: did not receive HSTS header
|
||||
iop.intuit.com: max-age too low: 86400
|
||||
irccloud.com: did not receive HSTS header
|
||||
irccloud.com: could not connect to host
|
||||
it.search.yahoo.com: did not receive HSTS header
|
||||
itriskltd.com: did not receive HSTS header
|
||||
jottit.com: could not connect to host
|
||||
keymaster.lookout.com: did not receive HSTS header
|
||||
khmath.com: did not receive HSTS header
|
||||
kiwiirc.com: max-age too low: 5256000
|
||||
klaxn.org: could not connect to host
|
||||
knowledgehook.com: did not receive HSTS header
|
||||
kr.search.yahoo.com: did not receive HSTS header
|
||||
kz.search.yahoo.com: did not receive HSTS header
|
||||
ledgerscope.net: did not receive HSTS header
|
||||
li.search.yahoo.com: did not receive HSTS header
|
||||
liberty.lavabit.com: could not connect to host
|
||||
lifeguard.aecom.com: did not receive HSTS header
|
||||
lifeguard.aecom.com: max-age too low: 86400
|
||||
lists.mayfirst.org: did not receive HSTS header
|
||||
logentries.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 126" data: no]
|
||||
logentries.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 134" data: no]
|
||||
login.corp.google.com: max-age too low: 7776000 (error ignored - included regardless)
|
||||
logotype.se: did not receive HSTS header
|
||||
ludwig.im: [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 126" data: no]
|
||||
lumi.do: [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 126" data: no]
|
||||
lovelycorral.com: did not receive HSTS header
|
||||
lt.search.yahoo.com: did not receive HSTS header
|
||||
lu.search.yahoo.com: did not receive HSTS header
|
||||
ludwig.im: [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 134" data: no]
|
||||
lumi.do: [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 134" data: no]
|
||||
luxus-russen.de: did not receive HSTS header
|
||||
lv.search.yahoo.com: did not receive HSTS header
|
||||
m.gparent.org: could not connect to host
|
||||
mail.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
maktoob.search.yahoo.com: did not receive HSTS header
|
||||
malaysia.search.yahoo.com: did not receive HSTS header
|
||||
market.android.com: did not receive HSTS header (error ignored - included regardless)
|
||||
markusueberallassetmanagement.de: could not connect to host
|
||||
matteomarescotti.name: max-age too low: 0
|
||||
megashur.se: did not receive HSTS header
|
||||
minikneet.nl: did not receive HSTS header
|
||||
mobilethreat.net: could not connect to host
|
||||
mobilethreatnetwork.net: could not connect to host
|
||||
mqas.net: could not connect to host
|
||||
mt.search.yahoo.com: did not receive HSTS header
|
||||
mu.search.yahoo.com: did not receive HSTS header
|
||||
mudcrab.us: could not connect to host
|
||||
mw.search.yahoo.com: did not receive HSTS header
|
||||
mx.search.yahoo.com: did not receive HSTS header
|
||||
my.alfresco.com: did not receive HSTS header
|
||||
mydigipass.com: did not receive HSTS header
|
||||
mykolab.com: did not receive HSTS header
|
||||
@ -103,33 +172,57 @@ netzpolitik.org: did not receive HSTS header
|
||||
nexth.de: could not connect to host
|
||||
nexth.net: could not connect to host
|
||||
nexth.us: could not connect to host
|
||||
ni.search.yahoo.com: did not receive HSTS header
|
||||
nl.search.yahoo.com: did not receive HSTS header
|
||||
no.search.yahoo.com: did not receive HSTS header
|
||||
noexpect.org: could not connect to host
|
||||
np.search.yahoo.com: did not receive HSTS header
|
||||
nz.search.yahoo.com: did not receive HSTS header
|
||||
openshift.redhat.com: did not receive HSTS header
|
||||
ottospora.nl: could not connect to host
|
||||
pa.search.yahoo.com: did not receive HSTS header
|
||||
passwordbox.com: did not receive HSTS header
|
||||
passwords.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
paypal.com: max-age too low: 14400
|
||||
payroll.xero.com: max-age too low: 3600
|
||||
pe.search.yahoo.com: did not receive HSTS header
|
||||
ph.search.yahoo.com: did not receive HSTS header
|
||||
piratenlogin.de: did not receive HSTS header
|
||||
pk.search.yahoo.com: did not receive HSTS header
|
||||
pl.search.yahoo.com: did not receive HSTS header
|
||||
platform.lookout.com: could not connect to host
|
||||
play.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
pr.search.yahoo.com: did not receive HSTS header
|
||||
pressfreedomfoundation.org: did not receive HSTS header
|
||||
prodpad.com: did not receive HSTS header
|
||||
profiles.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
promecon-gmbh.de: did not receive HSTS header
|
||||
py.search.yahoo.com: did not receive HSTS header
|
||||
qc.search.yahoo.com: did not receive HSTS header
|
||||
rapidresearch.me: could not connect to host
|
||||
redlatam.org: did not receive HSTS header
|
||||
regar42.fr: could not connect to host
|
||||
riseup.net: did not receive HSTS header
|
||||
rme.li: did not receive HSTS header
|
||||
ro.search.yahoo.com: did not receive HSTS header
|
||||
robteix.com: did not receive HSTS header
|
||||
ru.search.yahoo.com: did not receive HSTS header
|
||||
rw.search.yahoo.com: did not receive HSTS header
|
||||
sah3.net: could not connect to host
|
||||
saturngames.co.uk: did not receive HSTS header
|
||||
script.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
se.search.yahoo.com: did not receive HSTS header
|
||||
search.yahoo.com: did not receive HSTS header
|
||||
security.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
segu-info.com.ar: did not receive HSTS header
|
||||
semenkovich.com: did not receive HSTS header
|
||||
serverdensity.io: did not receive HSTS header
|
||||
sg.search.yahoo.com: did not receive HSTS header
|
||||
shops.neonisi.com: could not connect to host
|
||||
siammedia.co: did not receive HSTS header
|
||||
silentcircle.org: could not connect to host
|
||||
simon.butcher.name: max-age too low: 2629743
|
||||
simplyfixit.co.uk: [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 134" data: no]
|
||||
sites.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
sol.io: could not connect to host
|
||||
souyar.de: could not connect to host
|
||||
@ -142,16 +235,34 @@ ssl.panoramio.com: did not receive HSTS header
|
||||
stocktrade.de: could not connect to host
|
||||
sunshinepress.org: could not connect to host
|
||||
surfeasy.com: did not receive HSTS header
|
||||
sv.search.yahoo.com: did not receive HSTS header
|
||||
talk.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
talkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
tektoria.de: did not receive HSTS header
|
||||
temehu.com: did not receive HSTS header
|
||||
terrax.berlin: could not connect to host
|
||||
th.search.yahoo.com: did not receive HSTS header
|
||||
tobias-kluge.de: could not connect to host
|
||||
tr.search.yahoo.com: did not receive HSTS header
|
||||
translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
|
||||
tv.search.yahoo.com: could not connect to host
|
||||
tw.search.yahoo.com: did not receive HSTS header
|
||||
ua.search.yahoo.com: did not receive HSTS header
|
||||
uk.search.yahoo.com: did not receive HSTS header
|
||||
uprotect.it: could not connect to host
|
||||
uy.search.yahoo.com: did not receive HSTS header
|
||||
uz.search.yahoo.com: did not receive HSTS header
|
||||
ve.search.yahoo.com: did not receive HSTS header
|
||||
vn.search.yahoo.com: did not receive HSTS header
|
||||
wallet.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
webmail.mayfirst.org: did not receive HSTS header
|
||||
wf-training-master.appspot.com: could not connect to host
|
||||
wf-training-master.appspot.com: could not connect to host (error ignored - included regardless)
|
||||
whonix.org: did not receive HSTS header
|
||||
wikidsystems.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 134" data: no]
|
||||
wiz.biz: did not receive HSTS header
|
||||
www.calyxinstitute.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 126" data: no]
|
||||
wohnungsbau-ludwigsburg.de: did not receive HSTS header
|
||||
www.calyxinstitute.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 134" data: no]
|
||||
www.cueup.com: could not connect to host
|
||||
www.developer.mydigipass.com: could not connect to host
|
||||
www.dropbox.com: max-age too low: 2592000
|
||||
@ -159,6 +270,7 @@ www.elanex.biz: did not receive HSTS header
|
||||
www.gmail.com: did not receive HSTS header (error ignored - included regardless)
|
||||
www.googlemail.com: did not receive HSTS header (error ignored - included regardless)
|
||||
www.greplin.com: could not connect to host
|
||||
www.irccloud.com: could not connect to host
|
||||
www.jitsi.org: did not receive HSTS header
|
||||
www.ledgerscope.net: did not receive HSTS header
|
||||
www.logentries.com: did not receive HSTS header
|
||||
@ -169,4 +281,11 @@ www.rme.li: did not receive HSTS header
|
||||
www.roddis.net: did not receive HSTS header
|
||||
www.sandbox.mydigipass.com: could not connect to host
|
||||
www.surfeasy.com: did not receive HSTS header
|
||||
xa.search.yahoo.com: did not receive HSTS header
|
||||
xtream-hosting.com: could not connect to host
|
||||
xtream-hosting.de: could not connect to host
|
||||
xtream-hosting.eu: could not connect to host
|
||||
xtreamhosting.eu: could not connect to host
|
||||
za.search.yahoo.com: did not receive HSTS header
|
||||
zh.search.yahoo.com: did not receive HSTS header
|
||||
zoo24.de: max-age too low: 2592000
|
||||
|
@ -8,7 +8,7 @@
|
||||
/*****************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
const PRTime gPreloadListExpirationTime = INT64_C(1424513391772000);
|
||||
const PRTime gPreloadListExpirationTime = INT64_C(1424897629315000);
|
||||
|
||||
class nsSTSPreload
|
||||
{
|
||||
@ -18,6 +18,10 @@ class nsSTSPreload
|
||||
};
|
||||
|
||||
static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "17hats.com", true },
|
||||
{ "1a-diamantscheiben.de", true },
|
||||
{ "1a-vermessung.at", true },
|
||||
{ "1a-werkstattgeraete.de", true },
|
||||
{ "accounts.firefox.com", true },
|
||||
{ "accounts.google.com", true },
|
||||
{ "aclu.org", false },
|
||||
@ -26,10 +30,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "addvocate.com", true },
|
||||
{ "admin.google.com", true },
|
||||
{ "adsfund.org", true },
|
||||
{ "ahoyconference.com", true },
|
||||
{ "aie.de", true },
|
||||
{ "aiticon.com", true },
|
||||
{ "aladdinschools.appspot.com", false },
|
||||
{ "alexsexton.com", true },
|
||||
{ "alpha.irccloud.com", false },
|
||||
{ "andreasbreitenlohner.de", true },
|
||||
{ "anetaben.nl", true },
|
||||
{ "angularjs.org", true },
|
||||
{ "annahmeschluss.de", true },
|
||||
{ "annevankesteren.com", true },
|
||||
{ "annevankesteren.nl", true },
|
||||
{ "annevankesteren.org", true },
|
||||
{ "ansdell.net", true },
|
||||
{ "anycoin.me", true },
|
||||
{ "apadvantage.com", true },
|
||||
@ -44,22 +57,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "app.simpletax.ca", false },
|
||||
{ "app.yinxiang.com", false },
|
||||
{ "appengine.google.com", true },
|
||||
{ "aprz.de", true },
|
||||
{ "archlinux.de", true },
|
||||
{ "arivo.com.br", true },
|
||||
{ "arlen.io", true },
|
||||
{ "auf-feindgebiet.de", true },
|
||||
{ "baer.im", true },
|
||||
{ "balcan-underground.net", true },
|
||||
{ "baldwinkoo.com", true },
|
||||
{ "bank.simple.com", false },
|
||||
{ "barcodeberlin.com", true },
|
||||
{ "barslecht.com", true },
|
||||
{ "barslecht.nl", true },
|
||||
{ "baruch.me", true },
|
||||
{ "bautied.de", true },
|
||||
{ "bayrisch-fuer-anfaenger.de", true },
|
||||
{ "bccx.com", true },
|
||||
{ "bcrook.com", false },
|
||||
{ "beastowner.com", true },
|
||||
{ "beastowner.li", true },
|
||||
{ "bedeta.de", true },
|
||||
{ "bedreid.dk", true },
|
||||
{ "beneathvt.com", true },
|
||||
{ "benjamins.com", true },
|
||||
{ "best-wedding-quotes.com", true },
|
||||
{ "bigbrownpromotions.com.au", true },
|
||||
{ "bitbucket.org", false },
|
||||
{ "bitfactory.ws", true },
|
||||
{ "bl4ckb0x.com", true },
|
||||
@ -68,46 +90,58 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "bl4ckb0x.net", true },
|
||||
{ "bl4ckb0x.org", true },
|
||||
{ "blacklane.com", true },
|
||||
{ "blessnet.jp", true },
|
||||
{ "blocksatz-medien.de", true },
|
||||
{ "blog.cyveillance.com", true },
|
||||
{ "blog.gparent.org", true },
|
||||
{ "blog.linode.com", false },
|
||||
{ "blog.torproject.org", false },
|
||||
{ "bodo-wolff.de", true },
|
||||
{ "bohramt.de", true },
|
||||
{ "boxcryptor.com", true },
|
||||
{ "brunosouza.org", true },
|
||||
{ "buddhistische-weisheiten.org", true },
|
||||
{ "bugzil.la", true },
|
||||
{ "bugzilla.mozilla.org", true },
|
||||
{ "bulktrade.de", true },
|
||||
{ "business.lookout.com", false },
|
||||
{ "buzzconcert.com", true },
|
||||
{ "bytepark.de", false },
|
||||
{ "ca.gparent.org", false },
|
||||
{ "call.me", true },
|
||||
{ "carezone.com", false },
|
||||
{ "cartouche24.eu", true },
|
||||
{ "cdnb.co", true },
|
||||
{ "certible.com", true },
|
||||
{ "check.torproject.org", false },
|
||||
{ "checkout.google.com", true },
|
||||
{ "chrisjean.com", true },
|
||||
{ "chrome-devtools-frontend.appspot.com", true },
|
||||
{ "chrome.google.com", true },
|
||||
{ "chromiumcodereview.appspot.com", false },
|
||||
{ "chulado.com", true },
|
||||
{ "clapping-rhymes.com", true },
|
||||
{ "cloud.google.com", true },
|
||||
{ "cloudcert.org", true },
|
||||
{ "cloudns.com.au", true },
|
||||
{ "cloudsecurityalliance.org", true },
|
||||
{ "cloudstoragemaus.com", true },
|
||||
{ "cloudup.com", true },
|
||||
{ "code-poets.co.uk", true },
|
||||
{ "code.google.com", true },
|
||||
{ "codepref.com", true },
|
||||
{ "codereview.appspot.com", false },
|
||||
{ "codereview.chromium.org", true },
|
||||
{ "comdurav.com", true },
|
||||
{ "config.schokokeks.org", false },
|
||||
{ "conformal.com", true },
|
||||
{ "conrad-kostecki.de", true },
|
||||
{ "controlcenter.gigahost.dk", true },
|
||||
{ "cotonea.de", true },
|
||||
{ "crm.onlime.ch", false },
|
||||
{ "crypto.cat", false },
|
||||
{ "cryptopartyatx.org", true },
|
||||
{ "cube.de", true },
|
||||
{ "cujanovic.com", true },
|
||||
{ "cupcake.io", true },
|
||||
{ "cupcake.is", true },
|
||||
{ "cybershambles.com", true },
|
||||
@ -118,72 +152,105 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "data.qld.gov.au", false },
|
||||
{ "datenkeks.de", true },
|
||||
{ "davidlyness.com", true },
|
||||
{ "deadbeef.ninja", true },
|
||||
{ "debtkit.co.uk", true },
|
||||
{ "dedimax.de", true },
|
||||
{ "denh.am", true },
|
||||
{ "derhil.de", true },
|
||||
{ "detectify.com", false },
|
||||
{ "developer.mydigipass.com", false },
|
||||
{ "devh.de", true },
|
||||
{ "diamante.ro", true },
|
||||
{ "die-besten-weisheiten.de", true },
|
||||
{ "dillonkorman.com", true },
|
||||
{ "dist.torproject.org", false },
|
||||
{ "dl.google.com", true },
|
||||
{ "dlc.viasinc.com", true },
|
||||
{ "dm.lookout.com", false },
|
||||
{ "dm.mylookout.com", false },
|
||||
{ "docs.google.com", true },
|
||||
{ "docs.python.org", true },
|
||||
{ "domains.google.com", true },
|
||||
{ "domaris.de", true },
|
||||
{ "donmez.ws", false },
|
||||
{ "download.jitsi.org", false },
|
||||
{ "drive.google.com", true },
|
||||
{ "ebanking.indovinabank.com.vn", false },
|
||||
{ "ecosystem.atlassian.net", true },
|
||||
{ "edit.yahoo.com", false },
|
||||
{ "edyou.eu", true },
|
||||
{ "eff.org", true },
|
||||
{ "eldietista.es", true },
|
||||
{ "elnutricionista.es", true },
|
||||
{ "emailprivacytester.com", true },
|
||||
{ "encircleapp.com", true },
|
||||
{ "encryptallthethings.net", true },
|
||||
{ "encrypted.google.com", true },
|
||||
{ "energy-drink-magazin.de", true },
|
||||
{ "enorekcah.com", true },
|
||||
{ "entropia.de", false },
|
||||
{ "errors.zenpayroll.com", false },
|
||||
{ "esec.rs", true },
|
||||
{ "espra.com", true },
|
||||
{ "ethitter.com", true },
|
||||
{ "eurotramp.com", true },
|
||||
{ "everhome.de", true },
|
||||
{ "evstatus.com", true },
|
||||
{ "explodie.org", true },
|
||||
{ "f-droid.org", true },
|
||||
{ "factor.cc", false },
|
||||
{ "fairbill.com", true },
|
||||
{ "faq.lookout.com", false },
|
||||
{ "fedorapeople.org", true },
|
||||
{ "feedbin.com", false },
|
||||
{ "ferienhaus-polchow-ruegen.de", false },
|
||||
{ "fiken.no", true },
|
||||
{ "firemail.io", true },
|
||||
{ "fischer-its.com", true },
|
||||
{ "fixingdns.com", true },
|
||||
{ "fj.simple.com", false },
|
||||
{ "flamer-scene.com", true },
|
||||
{ "fleximus.org", false },
|
||||
{ "floobits.com", true },
|
||||
{ "flynn.io", true },
|
||||
{ "forewordreviews.com", true },
|
||||
{ "forodeespanol.com", true },
|
||||
{ "forum.linode.com", false },
|
||||
{ "forum.quantifiedself.com", true },
|
||||
{ "frederik-braun.com", true },
|
||||
{ "freeshell.de", true },
|
||||
{ "fronteers.nl", true },
|
||||
{ "fundingempire.com", true },
|
||||
{ "futos.de", true },
|
||||
{ "gamercredo.com", true },
|
||||
{ "garron.net", true },
|
||||
{ "gemeinfreie-lieder.de", true },
|
||||
{ "gerardozamudio.mx", true },
|
||||
{ "gernert-server.de", true },
|
||||
{ "getcloak.com", false },
|
||||
{ "getdigitized.net", true },
|
||||
{ "getssl.uz", true },
|
||||
{ "giacomopelagatti.it", true },
|
||||
{ "github.com", true },
|
||||
{ "glass.google.com", true },
|
||||
{ "globuli-info.de", true },
|
||||
{ "gmail.com", false },
|
||||
{ "gmantra.org", true },
|
||||
{ "gmcd.co", true },
|
||||
{ "go.xero.com", false },
|
||||
{ "gocardless.com", true },
|
||||
{ "googlemail.com", false },
|
||||
{ "googleplex.com", true },
|
||||
{ "goto.google.com", true },
|
||||
{ "gplintegratedit.com", true },
|
||||
{ "grc.com", false },
|
||||
{ "greensolid.biz", true },
|
||||
{ "grepular.com", true },
|
||||
{ "groups.google.com", true },
|
||||
{ "gunnarhafdal.com", true },
|
||||
{ "guphi.net", true },
|
||||
{ "guthabenkarten-billiger.de", true },
|
||||
{ "hack.li", true },
|
||||
{ "hackerone.com", true },
|
||||
{ "harvestapp.com", true },
|
||||
{ "hasilocke.de", true },
|
||||
@ -191,22 +258,37 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "haufschild.de", true },
|
||||
{ "hausverbrauch.de", true },
|
||||
{ "heha.co", true },
|
||||
{ "heid.ws", true },
|
||||
{ "heijblok.com", true },
|
||||
{ "helichat.de", true },
|
||||
{ "help.simpletax.ca", false },
|
||||
{ "helpium.de", true },
|
||||
{ "hex2013.com", true },
|
||||
{ "hexony.com", true },
|
||||
{ "history.google.com", true },
|
||||
{ "honeybadger.io", false },
|
||||
{ "hostedtalkgadget.google.com", true },
|
||||
{ "hostinginnederland.nl", true },
|
||||
{ "hostix.de", true },
|
||||
{ "howrandom.org", true },
|
||||
{ "howsmyssl.com", true },
|
||||
{ "howsmytls.com", true },
|
||||
{ "hpac-portal.com", true },
|
||||
{ "html5.org", true },
|
||||
{ "ian.sh", true },
|
||||
{ "iban.is", true },
|
||||
{ "id-co.in", true },
|
||||
{ "id.atlassian.com", false },
|
||||
{ "id.mayfirst.org", false },
|
||||
{ "ideaweb.de", true },
|
||||
{ "ihrlotto.de", true },
|
||||
{ "ilikerainbows.co.uk", false },
|
||||
{ "imouto.my", false },
|
||||
{ "inertianetworks.com", true },
|
||||
{ "inleaked.com", true },
|
||||
{ "insouciant.org", true },
|
||||
{ "irische-segenswuensche.info", true },
|
||||
{ "ironfistdesign.com", true },
|
||||
{ "isitchristmas.com", true },
|
||||
{ "it-schwerin.de", true },
|
||||
{ "jackyyf.com", false },
|
||||
@ -218,14 +300,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "jitsi.org", false },
|
||||
{ "jonas-keidel.de", true },
|
||||
{ "jonaswitmer.ch", true },
|
||||
{ "jonnybarnes.uk", true },
|
||||
{ "julian-kipka.de", true },
|
||||
{ "jwilsson.me", true },
|
||||
{ "k-dev.de", true },
|
||||
{ "kaheim.de", true },
|
||||
{ "kardize24.pl", true },
|
||||
{ "kdex.de", true },
|
||||
{ "keeperapp.com", true },
|
||||
{ "keepersecurity.com", true },
|
||||
{ "kernel-error.de", true },
|
||||
{ "kevincox.ca", true },
|
||||
{ "keyerror.com", true },
|
||||
{ "kinderbuecher-kostenlos.de", true },
|
||||
{ "kinogb.net", false },
|
||||
{ "kinsights.com", false },
|
||||
{ "kitsta.com", true },
|
||||
{ "klatschreime.de", true },
|
||||
@ -236,6 +324,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "koordinate.net", true },
|
||||
{ "kraken.io", true },
|
||||
{ "kura.io", true },
|
||||
{ "labina.com.tr", true },
|
||||
{ "lagerauftrag.info", true },
|
||||
{ "lasst-uns-beten.de", true },
|
||||
{ "lastpass.com", false },
|
||||
@ -243,9 +332,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "lavalite.de", true },
|
||||
{ "lb-toner.de", true },
|
||||
{ "library.linode.com", false },
|
||||
{ "liebel.org", true },
|
||||
{ "limpid.nl", true },
|
||||
{ "lingolia.com", true },
|
||||
{ "linode.com", false },
|
||||
{ "linx.net", false },
|
||||
{ "linx.net", true },
|
||||
{ "ljs.io", true },
|
||||
{ "lockify.com", true },
|
||||
{ "lodash.com", true },
|
||||
{ "loenshotel.de", true },
|
||||
{ "loftboard.eu", true },
|
||||
{ "logentries.com", false },
|
||||
@ -253,6 +347,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "login.persona.org", true },
|
||||
{ "login.sapo.pt", true },
|
||||
{ "login.xero.com", false },
|
||||
{ "login.yahoo.com", false },
|
||||
{ "lolicore.ch", true },
|
||||
{ "lookout.com", false },
|
||||
{ "lumi.do", false },
|
||||
@ -260,32 +355,47 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mach-politik.ch", true },
|
||||
{ "mail.de", true },
|
||||
{ "mail.google.com", true },
|
||||
{ "mail.yahoo.com", false },
|
||||
{ "mailbox.org", false },
|
||||
{ "makeyourlaws.org", true },
|
||||
{ "malnex.de", true },
|
||||
{ "man3s.jp", true },
|
||||
{ "manage.zenpayroll.com", false },
|
||||
{ "manageprojects.com", true },
|
||||
{ "manager.linode.com", false },
|
||||
{ "mandala-ausmalbilder.de", true },
|
||||
{ "market.android.com", true },
|
||||
{ "markusueberallassetmanagement.de", true },
|
||||
{ "matatall.com", true },
|
||||
{ "mathiasbynens.be", true },
|
||||
{ "matteomarescotti.it", true },
|
||||
{ "mattmccutchen.net", true },
|
||||
{ "mbp.banking.co.at", false },
|
||||
{ "md5file.com", true },
|
||||
{ "mediacru.sh", true },
|
||||
{ "medium.com", true },
|
||||
{ "mega.co.nz", false },
|
||||
{ "meinebo.it", true },
|
||||
{ "members.mayfirst.org", false },
|
||||
{ "members.nearlyfreespeech.net", false },
|
||||
{ "miasarafina.de", true },
|
||||
{ "mig5.net", true },
|
||||
{ "mikewest.org", true },
|
||||
{ "miku.hatsune.my", true },
|
||||
{ "minez-nightswatch.com", true },
|
||||
{ "minikneet.com", true },
|
||||
{ "minnesotadata.com", true },
|
||||
{ "miskatonic.org", true },
|
||||
{ "mkcert.org", true },
|
||||
{ "mnsure.org", true },
|
||||
{ "mobile.usaa.com", false },
|
||||
{ "mondwandler.de", true },
|
||||
{ "mothereff.in", true },
|
||||
{ "mountainmusicpromotions.com", true },
|
||||
{ "mountainroseherbs.com", true },
|
||||
{ "movlib.org", true },
|
||||
{ "msc-seereisen.net", true },
|
||||
{ "mths.be", true },
|
||||
{ "mudcrab.us", true },
|
||||
{ "munich-rage.de", true },
|
||||
{ "musicgamegalaxy.de", true },
|
||||
@ -293,25 +403,42 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mwe.st", true },
|
||||
{ "my.onlime.ch", false },
|
||||
{ "my.xero.com", false },
|
||||
{ "mygadgetguardian.lookout.com", false },
|
||||
{ "mykreuzfahrt.de", true },
|
||||
{ "mylookout.com", false },
|
||||
{ "mynigma.org", true },
|
||||
{ "nachsenden.info", true },
|
||||
{ "neg9.org", false },
|
||||
{ "neilwynne.com", false },
|
||||
{ "net-safe.info", true },
|
||||
{ "netzbit.de", true },
|
||||
{ "newstarnootropics.com", true },
|
||||
{ "ng-security.com", true },
|
||||
{ "nmctest.net", true },
|
||||
{ "npw.net", true },
|
||||
{ "okmx.de", true },
|
||||
{ "omitech.co.uk", true },
|
||||
{ "onedot.nl", true },
|
||||
{ "onedrive.com", true },
|
||||
{ "onedrive.live.com", false },
|
||||
{ "oplop.appspot.com", true },
|
||||
{ "opsmate.com", false },
|
||||
{ "optimus.io", true },
|
||||
{ "orbograph-hrcm.com", true },
|
||||
{ "oscarvk.ch", true },
|
||||
{ "osterkraenzchen.de", true },
|
||||
{ "otakurepublic.com", true },
|
||||
{ "otakuworld.de", true },
|
||||
{ "oversight.io", true },
|
||||
{ "p.linode.com", false },
|
||||
{ "packagist.org", false },
|
||||
{ "pajonzeck.de", true },
|
||||
{ "palava.tv", true },
|
||||
{ "parent5446.us", true },
|
||||
{ "partyvan.eu", true },
|
||||
{ "partyvan.it", true },
|
||||
{ "partyvan.nl", true },
|
||||
{ "partyvan.se", true },
|
||||
{ "passport.yandex.by", false },
|
||||
{ "passport.yandex.com", false },
|
||||
{ "passport.yandex.com.tr", false },
|
||||
@ -319,20 +446,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "passport.yandex.ru", false },
|
||||
{ "passport.yandex.ua", false },
|
||||
{ "passwd.io", true },
|
||||
{ "password.codes", true },
|
||||
{ "passwords.google.com", true },
|
||||
{ "paste.linode.com", false },
|
||||
{ "pastebin.linode.com", false },
|
||||
{ "patt.us", true },
|
||||
{ "pay.gigahost.dk", true },
|
||||
{ "paymill.com", true },
|
||||
{ "paymill.de", true },
|
||||
{ "pdf.yt", true },
|
||||
{ "peercraft.com", true },
|
||||
{ "picksin.club", true },
|
||||
{ "pierre-schmitz.com", true },
|
||||
{ "pisidia.de", true },
|
||||
{ "pixi.me", true },
|
||||
{ "play.google.com", false },
|
||||
{ "play.google.com", true },
|
||||
{ "plothost.com", true },
|
||||
{ "plus.google.com", false },
|
||||
{ "plus.sandbox.google.com", false },
|
||||
{ "portal.tirol.gv.at", true },
|
||||
{ "posteo.de", true },
|
||||
{ "powerplannerapp.com", true },
|
||||
{ "prakharprasad.com", true },
|
||||
{ "prefontaine.name", true },
|
||||
{ "profiles.google.com", true },
|
||||
{ "projektzentrisch.de", true },
|
||||
{ "prowhisky.de", true },
|
||||
@ -342,10 +478,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "pypi.python.org", true },
|
||||
{ "python.org", false },
|
||||
{ "qetesh.de", true },
|
||||
{ "quuz.org", true },
|
||||
{ "rad-route.de", true },
|
||||
{ "raiseyourflag.com", true },
|
||||
{ "ravchat.com", true },
|
||||
{ "redports.org", true },
|
||||
{ "reedloden.com", true },
|
||||
{ "reishunger.de", true },
|
||||
{ "reserve-online.net", true },
|
||||
{ "reviews.anime.my", true },
|
||||
{ "riccy.org", true },
|
||||
@ -353,66 +492,106 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "rippleunion.com", true },
|
||||
{ "roddis.net", false },
|
||||
{ "romab.com", true },
|
||||
{ "room-checkin24.de", true },
|
||||
{ "rosenkeller.org", true },
|
||||
{ "roundcube.mayfirst.org", false },
|
||||
{ "ru-sprachstudio.ch", true },
|
||||
{ "rws-vertriebsportal.de", true },
|
||||
{ "s-c.se", true },
|
||||
{ "sakaki.anime.my", true },
|
||||
{ "salaervergleich.com", true },
|
||||
{ "sale4ru.ru", true },
|
||||
{ "salserocafe.com", true },
|
||||
{ "samizdat.cz", true },
|
||||
{ "sandbox.mydigipass.com", false },
|
||||
{ "schachburg.de", true },
|
||||
{ "schokokeks.org", false },
|
||||
{ "schreiber-netzwerk.eu", true },
|
||||
{ "schwarzer.it", true },
|
||||
{ "sciencex.com", true },
|
||||
{ "scotthelme.co.uk", true },
|
||||
{ "scrambl.is", true },
|
||||
{ "script.google.com", true },
|
||||
{ "sdsl-speedtest.de", true },
|
||||
{ "securify.nl", true },
|
||||
{ "security-carpet.com", true },
|
||||
{ "security.google.com", true },
|
||||
{ "securityheaders.com", true },
|
||||
{ "secuvera.de", true },
|
||||
{ "seifried.org", true },
|
||||
{ "servethecity-karlsruhe.de", true },
|
||||
{ "shaaaaaaaaaaaaa.com", true },
|
||||
{ "sherbers.de", true },
|
||||
{ "shiinko.com", true },
|
||||
{ "shipard.com", true },
|
||||
{ "shodan.io", true },
|
||||
{ "shohruh.uz", false },
|
||||
{ "shopontarget.com", true },
|
||||
{ "silentcircle.com", false },
|
||||
{ "simbolo.co.uk", false },
|
||||
{ "simple.com", false },
|
||||
{ "simpletax.ca", false },
|
||||
{ "simplystudio.com", true },
|
||||
{ "siraweb.org", true },
|
||||
{ "sites.google.com", true },
|
||||
{ "skydrive.live.com", false },
|
||||
{ "slattery.co", true },
|
||||
{ "slidebatch.com", true },
|
||||
{ "smartship.co.jp", true },
|
||||
{ "southside-crew.com", true },
|
||||
{ "spdysync.com", true },
|
||||
{ "spideroak.com", true },
|
||||
{ "spreadsheets.google.com", true },
|
||||
{ "sprueche-zum-valentinstag.de", true },
|
||||
{ "sprueche-zur-geburt.info", true },
|
||||
{ "sprueche-zur-hochzeit.de", true },
|
||||
{ "sprueche-zur-konfirmation.de", true },
|
||||
{ "squareup.com", false },
|
||||
{ "sro.center", true },
|
||||
{ "ssl.google-analytics.com", true },
|
||||
{ "sslmate.com", true },
|
||||
{ "stage.wepay.com", false },
|
||||
{ "standardssuck.org", true },
|
||||
{ "static.wepay.com", false },
|
||||
{ "stationary-traveller.eu", true },
|
||||
{ "steventress.com", true },
|
||||
{ "stocktrade.de", false },
|
||||
{ "stripe.com", true },
|
||||
{ "strongest-privacy.com", true },
|
||||
{ "studydrive.net", true },
|
||||
{ "subrosa.io", true },
|
||||
{ "suite73.org", true },
|
||||
{ "supplies24.at", true },
|
||||
{ "supplies24.es", true },
|
||||
{ "support.mayfirst.org", false },
|
||||
{ "surkatty.org", true },
|
||||
{ "sylaps.com", true },
|
||||
{ "sysctl.se", true },
|
||||
{ "syss.de", true },
|
||||
{ "tageau.com", true },
|
||||
{ "talk.google.com", true },
|
||||
{ "talkgadget.google.com", true },
|
||||
{ "tatort-fanpage.de", true },
|
||||
{ "tauchkater.de", true },
|
||||
{ "tekshrek.com", true },
|
||||
{ "tent.io", true },
|
||||
{ "testsuite.org", true },
|
||||
{ "texte-zur-taufe.de", true },
|
||||
{ "thecustomizewindows.com", true },
|
||||
{ "thepaymentscompany.com", true },
|
||||
{ "therapynotes.com", false },
|
||||
{ "theshadestore.com", true },
|
||||
{ "thorncreek.net", false },
|
||||
{ "tickopa.co.uk", true },
|
||||
{ "tinfoilsecurity.com", false },
|
||||
{ "tinte24.de", true },
|
||||
{ "tintenfix.net", true },
|
||||
{ "tipps-fuer-den-haushalt.de", true },
|
||||
{ "tittelbach.at", true },
|
||||
{ "tno.io", true },
|
||||
{ "tollmanz.com", true },
|
||||
{ "tomfisher.eu", true },
|
||||
{ "tomvote.com", true },
|
||||
{ "toner24.at", true },
|
||||
{ "toner24.co.uk", true },
|
||||
{ "toner24.es", true },
|
||||
@ -430,8 +609,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "tonex.de", true },
|
||||
{ "tonex.nl", true },
|
||||
{ "torproject.org", false },
|
||||
{ "toshnix.com", true },
|
||||
{ "translate.googleapis.com", true },
|
||||
{ "translatoruk.co.uk", true },
|
||||
{ "trauertexte.info", true },
|
||||
{ "tresorit.com", true },
|
||||
{ "tunebitfm.de", true },
|
||||
{ "twitter.com", false },
|
||||
{ "ub3rk1tten.com", true },
|
||||
@ -439,11 +621,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "ukrainians.ch", true },
|
||||
{ "unterfrankenclan.de", true },
|
||||
{ "usaa.com", false },
|
||||
{ "uzstyle.com", false },
|
||||
{ "vaddder.com", true },
|
||||
{ "viasinc.com", false },
|
||||
{ "viennan.net", true },
|
||||
{ "vmoagents.com", false },
|
||||
{ "vocaloid.my", true },
|
||||
{ "vortexhobbies.com", true },
|
||||
{ "w-spotlight.appspot.com", true },
|
||||
{ "wallet.google.com", true },
|
||||
{ "warrencreative.com", false },
|
||||
{ "webandmore.de", true },
|
||||
{ "webcollect.org.uk", true },
|
||||
{ "webfilings-eu-mirror.appspot.com", true },
|
||||
@ -454,8 +641,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "webmail.onlime.ch", false },
|
||||
{ "webmail.schokokeks.org", false },
|
||||
{ "websenat.de", true },
|
||||
{ "weggeweest.nl", true },
|
||||
{ "welches-kinderfahrrad.de", true },
|
||||
{ "wepay.com", false },
|
||||
{ "wepay.in.th", true },
|
||||
{ "wf-bigsky-master.appspot.com", true },
|
||||
{ "wf-demo-eu.appspot.com", true },
|
||||
{ "wf-demo-hrd.appspot.com", true },
|
||||
@ -465,10 +654,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "wf-training-hrd.appspot.com", true },
|
||||
{ "wf-training-master.appspot.com", true },
|
||||
{ "wf-trial-hrd.appspot.com", true },
|
||||
{ "whatwg.org", true },
|
||||
{ "when-release.ru", true },
|
||||
{ "wieninternational.at", true },
|
||||
{ "wiki.python.org", true },
|
||||
{ "wildbee.org", true },
|
||||
{ "willnorris.com", true },
|
||||
{ "winhistory-forum.net", true },
|
||||
{ "writeapp.me", false },
|
||||
{ "wubthecaptain.eu", true },
|
||||
{ "wunderlist.com", true },
|
||||
{ "www.aclu.org", false },
|
||||
{ "www.airbnb.com", true },
|
||||
@ -488,6 +682,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "www.gov.uk", false },
|
||||
{ "www.grc.com", false },
|
||||
{ "www.heliosnet.com", true },
|
||||
{ "www.honeybadger.io", false },
|
||||
{ "www.intercom.io", false },
|
||||
{ "www.irccloud.com", false },
|
||||
{ "www.lastpass.com", false },
|
||||
@ -508,13 +703,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "www.torproject.org", false },
|
||||
{ "www.twitter.com", false },
|
||||
{ "www.usaa.com", false },
|
||||
{ "www.viasinc.com", true },
|
||||
{ "www.wepay.com", false },
|
||||
{ "www.zenpayroll.com", false },
|
||||
{ "xbrlsuccess.appspot.com", true },
|
||||
{ "xn--maraa-rta.org", true },
|
||||
{ "xps2pdf.co.uk", true },
|
||||
{ "y-o-w.com", true },
|
||||
{ "z.ai", true },
|
||||
{ "zenpayroll.com", false },
|
||||
{ "zeplin.io", false },
|
||||
{ "zeropush.com", true },
|
||||
{ "zixiao.wang", true },
|
||||
{ "zotero.org", true },
|
||||
};
|
||||
|
@ -589,6 +589,9 @@ void
|
||||
RegisterAnnotator(Annotator& aAnnotator)
|
||||
{
|
||||
#ifdef REPORT_CHROME_HANGS
|
||||
if (GeckoProcessType_Default != XRE_GetProcessType()) {
|
||||
return;
|
||||
}
|
||||
MonitorAutoLock lock(*gMonitor);
|
||||
MOZ_ASSERT(gAnnotators);
|
||||
gAnnotators->insert(&aAnnotator);
|
||||
@ -599,6 +602,9 @@ void
|
||||
UnregisterAnnotator(Annotator& aAnnotator)
|
||||
{
|
||||
#ifdef REPORT_CHROME_HANGS
|
||||
if (GeckoProcessType_Default != XRE_GetProcessType()) {
|
||||
return;
|
||||
}
|
||||
MonitorAutoLock lock(*gMonitor);
|
||||
MOZ_ASSERT(gAnnotators);
|
||||
gAnnotators->erase(&aAnnotator);
|
||||
|
Loading…
x
Reference in New Issue
Block a user