зеркало из https://github.com/mozilla/gecko-dev.git
bug 46783, reorg cookies module for embedding, r=valeski, sr=alecf
This commit is contained in:
Родитель
3ac1a38c63
Коммит
2d09ba9eab
|
@ -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 () {
|
||||
|
|
Загрузка…
Ссылка в новой задаче