mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 09:05:45 +00:00
a0c8cbf9d6
p=me r=dwitte/benjamin sr=darin
161 lines
6.5 KiB
XML
161 lines
6.5 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!-- ***** BEGIN LICENSE BLOCK *****
|
|
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
|
|
The contents of this file are subject to the Mozilla Public License Version
|
|
1.1 (the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/
|
|
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
for the specific language governing rights and limitations under the
|
|
License.
|
|
|
|
The Original Code is Mozilla Communicator client code, released
|
|
March 31, 1998.
|
|
|
|
The Initial Developer of the Original Code is
|
|
Netscape Communications Corporation.
|
|
Portions created by the Initial Developer are Copyright (C) 1998-1999
|
|
the Initial Developer. All Rights Reserved.
|
|
|
|
Contributor(s):
|
|
|
|
Alternatively, the contents of this file may be used under the terms of
|
|
either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
in which case the provisions of the GPL or the LGPL are applicable instead
|
|
of those above. If you wish to allow use of your version of this file only
|
|
under the terms of either the GPL or the LGPL, and not to allow others to
|
|
use your version of this file under the terms of the MPL, indicate your
|
|
decision by deleting the provisions above and replace them with the notice
|
|
and other provisions required by the GPL or the LGPL. If you do not delete
|
|
the provisions above, a recipient may use your version of this file under
|
|
the terms of any one of the MPL, the GPL or the LGPL.
|
|
|
|
***** END LICENSE BLOCK ***** -->
|
|
|
|
<!DOCTYPE overlay SYSTEM "chrome://communicator/locale/permissions/imageContextOverlay.dtd">
|
|
|
|
<overlay id="cookieContextOverlay"
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<script type="application/x-javascript" src="chrome://communicator/content/permissions/permissionsOverlay.js"/>
|
|
|
|
<script type="application/x-javascript">
|
|
<![CDATA[
|
|
|
|
// Code from nsContextMenu.js. Note that we extend the prototype here, rather
|
|
// than making these methods on a new object, as some methods require access
|
|
// to data maintained by nsContextMenu.
|
|
|
|
var cookieContextMenu = {
|
|
|
|
// Determine if "Block Image" is to appear in the menu.
|
|
// Return true if image is not already blocked.
|
|
isBlockingImages : function () {
|
|
/* determine if image is already being blocked */
|
|
const nsIPermissionManager = Components.interfaces.nsIPermissionManager;
|
|
var permissionmanager =
|
|
Components.classes["@mozilla.org/permissionmanager;1"]
|
|
.getService(Components.interfaces.nsIPermissionManager);
|
|
if(!permissionmanager) {
|
|
return true;
|
|
}
|
|
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var uri = ioService.newURI(gContextMenu.imageURL, null, null);
|
|
return permissionmanager.testPermission(uri, "image") != nsIPermissionManager.DENY_ACTION;
|
|
},
|
|
|
|
// Block image from loading in the future.
|
|
blockImage : function () {
|
|
const nsIPermissionManager = Components.interfaces.nsIPermissionManager;
|
|
var permissionmanager =
|
|
Components.classes["@mozilla.org/permissionmanager;1"]
|
|
.getService(Components.interfaces.nsIPermissionManager);
|
|
if (!permissionmanager) {
|
|
return;
|
|
}
|
|
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
uri = ioService.newURI(gContextMenu.imageURL, null, null);
|
|
permissionmanager.add(uri, "image", nsIPermissionManager.DENY_ACTION);
|
|
},
|
|
|
|
// Unblock image from loading in the future.
|
|
unblockImage : function () {
|
|
const nsIPermissionManager = Components.interfaces.nsIPermissionManager;
|
|
var permissionmanager =
|
|
Components.classes["@mozilla.org/permissionmanager;1"]
|
|
.getService().QueryInterface(Components.interfaces.nsIPermissionManager);
|
|
if (!permissionmanager) {
|
|
return;
|
|
}
|
|
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
uri = ioService.newURI(gContextMenu.imageURL, null, null);
|
|
permissionmanager.remove(uri.host, "image");
|
|
},
|
|
|
|
initImageBlocking : function () {
|
|
try {
|
|
// Block image depends on whether an image was clicked on
|
|
|
|
gContextMenu.showItem
|
|
("context-blockimage",
|
|
gContextMenu.onImage && cookieContextMenu.isBlockingImages());
|
|
|
|
gContextMenu.showItem
|
|
("context-unblockimage",
|
|
gContextMenu.onImage && !cookieContextMenu.isBlockingImages());
|
|
} catch (e) {}
|
|
},
|
|
|
|
addContextMenuItemListeners : function (aEvent) {
|
|
var contextPopup = document.getElementById("contentAreaContextSet");
|
|
if (contextPopup)
|
|
contextPopup.addEventListener("popupshowing", cookieContextMenu.initImageBlocking, false);
|
|
|
|
var mailContextPopup = document.getElementById("messagePaneContext");
|
|
if (mailContextPopup)
|
|
mailContextPopup.addEventListener("popupshowing", cookieContextMenu.initImageBlocking, false);
|
|
}
|
|
}
|
|
window.addEventListener("load", cookieContextMenu.addContextMenuItemListeners, false);
|
|
|
|
]]>
|
|
</script>
|
|
|
|
<!-- context menu -->
|
|
<popup id="contentAreaContextMenu">
|
|
<menuitem id="context-blockimage"
|
|
label="&blockImageCmd.label;"
|
|
accesskey=""
|
|
oncommand="cookieContextMenu.blockImage();"
|
|
insertafter="context-viewimage"/>
|
|
<menuitem id="context-unblockimage"
|
|
label="&unblockImageCmd.label;"
|
|
accesskey=""
|
|
oncommand="cookieContextMenu.unblockImage();"
|
|
insertafter="context-viewimage"/>
|
|
</popup>
|
|
|
|
<!-- Mail Message Pane context menu -->
|
|
<popup id="messagePaneContext">
|
|
<menuitem id="context-blockimage"
|
|
label="&blockImageCmd.label;"
|
|
accesskey=""
|
|
oncommand="cookieContextMenu.blockImage();"
|
|
insertafter="context-viewimage"/>
|
|
<menuitem id="context-unblockimage"
|
|
label="&unblockImageCmd.label;"
|
|
accesskey=""
|
|
oncommand="cookieContextMenu.unblockImage();"
|
|
insertafter="context-viewimage"/>
|
|
</popup>
|
|
|
|
</overlay>
|