bug 46783, reorg cookies module for embedding, r=valeski, sr=alecf

This commit is contained in:
morse%netscape.com 2006-07-27 14:53:38 +00:00
Родитель 3ac1a38c63
Коммит 2d09ba9eab
2 изменённых файлов: 50 добавлений и 29 удалений

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

@ -40,16 +40,26 @@
element.setAttribute("disabled","true" );
}
// for some unexplainable reason, CheckForImage() keeps getting called repeatedly
// as we mouse over the task menu. IMO, that shouldn't be happening. To avoid
// taking a performance hit due to this, we will set the following flag to avoid
// reexecuting the routine
var alreadyCheckedForImage = false;
// determine if we need to remove the image entries from the task menu
function CheckForImage()
{
if (alreadyCheckedForImage) {
return;
}
alreadyCheckedForImage = true;
// remove image functions (unless overruled by the "imageblocker.enabled" pref)
try {
if (!this.pref.GetBoolPref("imageblocker.enabled")) {
HideImage();
}
} catch(e) {
HideImage();
HideImage();
dump("imageblocker.enabled pref is missing from all.js\n");
}
}
@ -57,31 +67,33 @@
// perform a Cookie or Image action
function CookieImageAction(action) {
var cookieViewer =
Components.classes["@mozilla.org/cookieviewer/cookieviewer-world;1"]
.createInstance(Components.interfaces["nsICookieViewer"]);
var permissionmanager =
Components.classes["@mozilla.org/permissionmanager;1"]
.getService().QueryInterface(Components.interfaces.nsIPermissionManager);
if (!permissionmanager) {
return;
}
var COOKIEPERMISSION = 0;
var IMAGEPERMISSION = 1;
var element;
switch (action) {
case "cookieAllow":
cookieViewer.AddPermission(window._content, true, COOKIEPERMISSION);
permissionmanager.add(window._content.location, true, COOKIEPERMISSION);
element = document.getElementById("AllowCookies");
alert(element.getAttribute("msg"));
break;
case "cookieBlock":
cookieViewer.AddPermission(window._content, false, COOKIEPERMISSION);
permissionmanager.add(window._content.location, false, COOKIEPERMISSION);
element = document.getElementById("BlockCookies");
alert(element.getAttribute("msg"));
break;
case "imageAllow":
cookieViewer.AddPermission(window._content, true, IMAGEPERMISSION);
permissionmanager.add(window._content.location, true, IMAGEPERMISSION);
element = document.getElementById("AllowImages");
alert(element.getAttribute("msg"));
break;
case "imageBlock":
cookieViewer.AddPermission(window._content, false, IMAGEPERMISSION);
permissionmanager.add(window._content.location, false, IMAGEPERMISSION);
element = document.getElementById("BlockImages");
alert(element.getAttribute("msg"));
break;
@ -93,7 +105,9 @@
</script>
<!-- tasksOverlay menu items -->
<menupopup id="personalManagers">
<menupopup id="taskPopup" oncreate="CheckForImage()"/>
<menupopup id="personalManagers">
<menu label="&cookieCookieManager.label;"
accesskey="&cookieCookieManager.accesskey;"
position="1">
@ -112,9 +126,10 @@
</menupopup>
</menu>
<menu label="&cookieImageManager.label;"
accesskey="&cookieImageManager.accesskey;" id="image"
accesskey="&cookieImageManager.accesskey;"
id="image"
position="2">
<menupopup oncreate="CheckForImage()">
<menupopup>
<menuitem label="&cookieDisplayImagesCmd.label;"
accesskey="&cookieDisplayImagesCmd.accesskey;"
oncommand="viewImages();"/>

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

@ -54,33 +54,39 @@
}
/* determine if image is already being blocked */
var cookieViewer = contextMenu.createInstance
("@mozilla.org/cookieviewer/cookieviewer-world;1", "nsICookieViewer");
var list = cookieViewer.GetPermissionValue(1);
var permissionList = list.split(list[0]);
for(var i = 1; i < permissionList.length; i+=2) {
var permStr = permissionList[i+1];
var type = permStr.substring(0,1);
if (type == "-") {
/* some host is being blocked, need to find out if it's our image's host */
var host = permStr.substring(1,permStr.length);
var permissionmanager =
Components.classes["@mozilla.org/permissionmanager;1"]
.getService().QueryInterface(Components.interfaces.nsIPermissionManager);
var enumerator = permissionmanager.enumerator;
while (enumerator.hasMoreElements()) {
var nextPermission = enumerator.getNext();
nextPermission = nextPermission.QueryInterface(Components.interfaces.nsIPermission);
var imageType = 1;
if (nextPermission.type == imageType &&
!nextPermission.capability) {
/* some image host is being blocked, need to find out if it's our image's host */
var host = nextPermission.host;
if(host.charAt(0) == ".") { // get rid of the ugly dot on the start of some domains
host = host.substring(1,host.length);
}
if (host && contextMenu.imageURL.search(host) != -1) {
/* it's our image's host that's being blocked */
return false;
}
}
}
}
/* image is not already being blocked, so "Block Image" can appear on the menu */
return true;
},
// Block image from loading in the future.
blockImage : function () {
var cookieViewer =
contextMenu.createInstance("@mozilla.org/cookieviewer/cookieviewer-world;1",
"nsICookieViewer" );
cookieViewer.BlockImage(contextMenu.imageURL);
var imgmanager =
Components.classes["@mozilla.org/imgmanager;1"]
.getService().QueryInterface(Components.interfaces.nsIImgManager);
imgmanager.block(contextMenu.imageURL);
},
initImageBlocking : function () {