Bug 1043801: tracking protection notifications show up in the generic security notification doorhanger, interactions with permissionManager to disable/enable tracking protection for a page r=adw

This commit is contained in:
Georgios Kontaxis 2014-08-22 20:26:31 -07:00
Родитель 07f24d71aa
Коммит 7c0ff43850
3 изменённых файлов: 125 добавлений и 2 удалений

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

@ -6488,9 +6488,13 @@ var gIdentityHandler = {
// Show the doorhanger when: // Show the doorhanger when:
// - mixed active content is blocked // - mixed active content is blocked
// - mixed active content is loaded (detected but not blocked) // - mixed active content is loaded (detected but not blocked)
// - tracking content is blocked
// - tracking content is not blocked
if (state & if (state &
(nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT | (nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT |
nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT)) { nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT |
nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT |
nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT)) {
this.showBadContentDoorhanger(state); this.showBadContentDoorhanger(state);
} }
}, },
@ -6513,7 +6517,9 @@ var gIdentityHandler = {
// default // default
let iconState = "bad-content-blocked-notification-icon"; let iconState = "bad-content-blocked-notification-icon";
if (state & Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT) { if (state &
(Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT |
Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT)) {
iconState = "bad-content-unblocked-notification-icon"; iconState = "bad-content-unblocked-notification-icon";
} }

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

@ -1628,6 +1628,43 @@
</xul:description> </xul:description>
</xul:hbox> </xul:hbox>
</xul:vbox> </xul:vbox>
<!-- tracking content -->
<xul:vbox anonid="trackingContent" hidden="true">
<xul:separator class="groove"/>
<xul:hbox align="start">
<xul:vbox>
<xul:description class="popup-notification-item-title"
xbl:inherits="popupid">
&trackingContentBlocked.message;
</xul:description>
<xul:description class="popup-notification-item-message"
xbl:inherits="popupid">
&trackingContentBlocked.moreinfo;
</xul:description>
<xul:label anonid="trackingContent.helplink"
class="text-link plain" href=""
value="&trackingContentBlocked.learnMore;"/>
</xul:vbox>
<xul:button
type="menu" label="&trackingContentBlocked.options;"
sizetopopup="none">
<xul:menupopup>
<xul:menuitem anonid="trackingContentAction.unblock"
hidden="true" label="&trackingContentBlocked.unblock.label;"
oncommand="document.getBindingParent(this).disableTrackingContentProtection();"/>
<xul:menuitem anonid="trackingContentAction.block"
hidden="true" label="&trackingContentBlocked.block.label;"
oncommand="document.getBindingParent(this).enableTrackingContentProtection();"/>
</xul:menupopup>
</xul:button>
</xul:hbox>
<xul:hbox anonid="trackingContentProtectionDisabled" hidden="true"
class="popup-notification-footer" xbl:inherits="popupid">
<xul:description class="popup-notification-item-message popup-notification-item-message-critical" xbl:inherits="popupid">
&trackingContentBlocked.disabled.message;
</xul:description>
</xul:hbox>
</xul:vbox>
</xul:vbox> </xul:vbox>
</xul:hbox> </xul:hbox>
</content> </content>
@ -1668,6 +1705,32 @@
Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT; Ci.nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT;
]]></getter> ]]></getter>
</property> </property>
<field name="_trackingContent">
document.getAnonymousElementByAttribute(this, "anonid",
"trackingContent")
</field>
<field name="_trackingContentUnblock">
document.getAnonymousElementByAttribute(this, "anonid",
"trackingContentAction.unblock")
</field>
<field name="_trackingContentBlock">
document.getAnonymousElementByAttribute(this, "anonid",
"trackingContentAction.block");
</field>
<field name="_trackingContentProtectionDisabledWarning">
document.getAnonymousElementByAttribute(this, "anonid",
"trackingContentProtectionDisabled")
</field>
<field name="_trackingContentHelpLink">
document.getAnonymousElementByAttribute(this, "anonid",
"trackingContent.helplink")
</field>
<property name="isTrackingContentBlocked" readonly="true">
<getter><![CDATA[
return this.notification.options.state &
Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT;
]]></getter>
</property>
<constructor><![CDATA[ <constructor><![CDATA[
// default title // default title
_doorhangerTitle.value = _doorhangerTitle.value =
@ -1694,6 +1757,26 @@
Services.urlFormatter.formatURLPref("app.support.baseURL") Services.urlFormatter.formatURLPref("app.support.baseURL")
+ "mixed-content"; + "mixed-content";
} }
if (this.notification.options.state &
Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT) {
_doorhangerTitle.value =
gNavigatorBundle.getFormattedString(
"badContentBlocked.blocked.message", [this._brandShortName]);
_trackingContent.hidden = false
_trackingContentUnblock.hidden = false;
_trackingContentHelpLink.href =
Services.urlFormatter.formatURLPref("app.support.baseURL")
+ "tracking-protection";
}
if (this.notification.options.state &
Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT) {
_trackingContent.hidden = false
_trackingContentBlock.hidden = false;
_trackingContentProtectionDisabledWarning.hidden = false;
_trackingContentHelpLink.href =
Services.urlFormatter.formatURLPref("app.support.baseURL")
+ "tracking-protection";
}
]]></constructor> ]]></constructor>
<method name="disableMixedContentProtection"> <method name="disableMixedContentProtection">
<body><![CDATA[ <body><![CDATA[
@ -1715,6 +1798,32 @@
BrowserReload(); BrowserReload();
]]></body> ]]></body>
</method> </method>
<method name="disableTrackingContentProtection">
<body><![CDATA[
// convert document URI into the format used by
// nsChannelClassifier::ShouldEnableTrackingProtection
// (any scheme turned into https is correct)
let normalizedUrl = Services.io.newURI(
"https://" + gBrowser.selectedBrowser.currentURI.hostPort,
null, null);
// Add the current host in the 'trackingprotection' consumer of
// the permission manager using a normalized URI. This effectively
// places this host on the tracking protection white list.
Services.perms.add(normalizedUrl,
"trackingprotection", Services.perms.ALLOW_ACTION);
BrowserReload();
]]></body>
</method>
<method name="enableTrackingContentProtection">
<body><![CDATA[
// Remove the current host from the 'trackingprotection' consumer
// of the permission manager. This effectively removes this host
// from the tracking protection white list (any list actually).
Services.perms.remove(gBrowser.selectedBrowser.currentURI.host,
"trackingprotection");
BrowserReload();
]]></body>
</method>
</implementation> </implementation>
</binding> </binding>

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

@ -737,6 +737,14 @@ just addresses the organization to follow, e.g. "This site is run by " -->
<!ENTITY mixedContentBlocked2.block.accesskey "B"> <!ENTITY mixedContentBlocked2.block.accesskey "B">
<!ENTITY mixedContentBlocked2.disabled.message "Protection is disabled"> <!ENTITY mixedContentBlocked2.disabled.message "Protection is disabled">
<!ENTITY trackingContentBlocked.message "Tracking">
<!ENTITY trackingContentBlocked.moreinfo "Parts of the page that track your online activity have been blocked.">
<!ENTITY trackingContentBlocked.learnMore "Learn More">
<!ENTITY trackingContentBlocked.options "Options">
<!ENTITY trackingContentBlocked.unblock.label "Disable protection">
<!ENTITY trackingContentBlocked.block.label "Enable protection">
<!ENTITY trackingContentBlocked.disabled.message "Tracking protection is disabled">
<!ENTITY pointerLock.notification.message "Press ESC at any time to show it again."> <!ENTITY pointerLock.notification.message "Press ESC at any time to show it again.">
<!ENTITY pluginNotification.showAll.label "Show All"> <!ENTITY pluginNotification.showAll.label "Show All">