[Pkg-mozext-commits] [adblock-plus-element-hiding-helper] 30/483: Make frames work
David Prévot
taffit at moszumanska.debian.org
Thu Jan 22 21:41:23 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus-element-hiding-helper.
commit 2f4c3bdf60b2b00228b481190790c3da87a38674
Author: Wladimir Palant <trev at gtchat.de>
Date: Mon Jan 15 16:44:11 2007 +0000
Make frames work
--HG--
extra : convert_revision : svn%3Ad8bf93c1-8190-44a8-bb31-1ea94378a4df/trunk%40630
---
chrome/content/aardvark.js | 89 +++++++++++++++++++++++++++-------------------
chrome/content/overlay.js | 32 +++++++++++------
chrome/content/overlay.xul | 4 +--
3 files changed, 76 insertions(+), 49 deletions(-)
diff --git a/chrome/content/aardvark.js b/chrome/content/aardvark.js
index 7d0b6ca..ad0f1f7 100644
--- a/chrome/content/aardvark.js
+++ b/chrome/content/aardvark.js
@@ -28,16 +28,22 @@
**********************************/
var ehhAardvark = {
- wnd: null,
+ browser: null,
selectedElem: null,
commentElem : null,
mouseX: -1,
mouseY: -1,
- commandLabelTimeout: 0
+ commandLabelTimeout: 0,
+ borderElems: null,
+ labelElem: null
};
-ehhAardvark.start = function(wnd) {
- if (!wnd || !(wnd.document instanceof HTMLDocument) || !wnd.document.body || wnd.location.href == "about:blank" || wnd.location.hostname == "")
+ehhAardvark.start = function(browser) {
+ if (!browser || !browser.contentWindow || !(browser.contentDocument instanceof HTMLDocument) || !browser.contentDocument.body)
+ return;
+
+ var location = browser.contentWindow.location;
+ if (location.href == "about:blank" || location.hostname == "")
return;
if (!("viewSourceURL" in this)) {
@@ -63,15 +69,16 @@ ehhAardvark.start = function(wnd) {
}
}
- wnd.addEventListener("click", this.mouseClick, false);
- wnd.addEventListener("mouseover", this.mouseOver, false);
- wnd.addEventListener("keypress", this.keyPress, false);
- wnd.addEventListener("pagehide", this.pageHide, false);
- getBrowser().selectedBrowser.addEventListener("mousemove", this.mouseMove, false);
+ browser.addEventListener("click", this.mouseClick, false);
+ browser.addEventListener("mouseover", this.mouseOver, false);
+ browser.addEventListener("keypress", this.keyPress, false);
+ browser.addEventListener("mousemove", this.mouseMove, false);
+ browser.contentWindow.addEventListener("pagehide", this.pageHide, false);
- this.wnd = wnd;
+ this.browser = browser;
- this.makeElems();
+ if (!this.labelElem)
+ this.makeElems();
this.showMenu();
}
@@ -192,7 +199,7 @@ ehhAardvark.makeElems = function ()
for (i=0; i<4; i++)
{
- d = this.wnd.document.createElement ("div");
+ d = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
d.style.display = "none";
d.style.overflow = "hidden";
d.style.position = "absolute";
@@ -205,18 +212,15 @@ ehhAardvark.makeElems = function ()
d.style.borderLeft = "2px solid #f00";
d.ehhAardvarkLabel = true; // mark as ours
this.borderElems[i] = d;
- this.wnd.document.body.appendChild (d);
}
- d = this.wnd.document.createElement ("div");
+ d = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
this.setElementStyleDefault (d, "#fff0cc");
- d.ehhAardvarkLabel = true; // mark as ours
d.style.borderTopWidth = "0";
d.style.MozBorderRadiusBottomleft = "6px";
d.style.MozBorderRadiusBottomright = "6px";
d.style.zIndex = "65535";
- d.style.visibility = "hidden";
- this.wnd.document.body.appendChild (d);
+ d.ehhAardvarkLabel = true; // mark as ours
this.labelElem = d;
}
@@ -236,10 +240,14 @@ ehhAardvark.makeElementLabelString = function(elem) {
}
ehhAardvark.showBoxAndLabel = function(elem, string) {
+ var doc = elem.ownerDocument;
+ if (!doc || !doc.body)
+ return;
+
this.selectedElem = elem;
var pos = this.getPos(elem)
- var dims = this.getWindowDimensions ();
+ var dims = this.getWindowDimensions (doc);
var y = pos.y;
this.borderElems[0].style.left
@@ -268,6 +276,11 @@ ehhAardvark.showBoxAndLabel = function(elem, string) {
= this.borderElems[3].style.display
= "";
+ for (var i = 0; i < 4; i++) {
+ doc.adoptNode(this.borderElems[i]);
+ doc.body.appendChild(this.borderElems[i]);
+ }
+
var y = pos.y + elem.offsetHeight + 1;
this.labelElem.innerHTML = string;
@@ -298,18 +311,20 @@ ehhAardvark.showBoxAndLabel = function(elem, string) {
}
this.labelElem.style.left = (pos.x + 2) + "px";
this.labelElem.style.top = y + "px";
- this.labelElem.style.visibility = "visible";
+
+ doc.adoptNode(this.labelElem);
+ doc.body.appendChild(this.labelElem);
}
ehhAardvark.clearBox = function() {
this.selectedElem = null;
- if ("borderElems" in this)
- {
- for (var i = 0; i < this.borderElems.length; i++)
- this.borderElems[i].style.display = "none";
- this.labelElem.style.display = "none";
- this.labelElem.style.visibility = "hidden";
- }
+
+ for (var i = 0; i < this.borderElems.length; i++)
+ if (this.borderElems[i].parentNode)
+ this.borderElems[i].parentNode.removeChild(this.borderElems[i]);
+
+ if (this.labelElem.parentNode)
+ this.labelElem.parentNode.removeChild(this.labelElem);
}
ehhAardvark.getPos = function (elem)
@@ -325,11 +340,10 @@ ehhAardvark.getPos = function (elem)
return pos;
}
-ehhAardvark.getWindowDimensions = function ()
+ehhAardvark.getWindowDimensions = function (doc)
{
var out = {};
- var doc = this.wnd.document;
out.scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft;
out.scrollY = doc.body.scrollTop + doc.documentElement.scrollTop;
@@ -388,6 +402,9 @@ ehhAardvark.wider = function (elem)
if (elem)
{
var newElem = elem.parentNode;
+ if (newElem && newElem.nodeType == newElem.DOCUMENT_NODE && newElem.defaultView && !(newElem.defaultView.frameElement instanceof HTMLFrameElement))
+ newElem = newElem.defaultView.frameElement;
+
if (!newElem || newElem.nodeType != newElem.ELEMENT_NODE)
return false;
@@ -428,24 +445,22 @@ ehhAardvark.narrower = function (elem)
//------------------------------------------------------------
ehhAardvark.quit = function ()
{
- if (!this.wnd)
+ if (!this.browser)
return false;
this.clearBox();
ehhHideTooltips();
- this.wnd.removeEventListener("click", this.mouseClick, false);
- this.wnd.removeEventListener("mouseover", this.mouseOver, false);
- this.wnd.removeEventListener("keypress", this.keyPress, false);
- this.wnd.removeEventListener("pagehide", this.pageHide, false);
- getBrowser().selectedBrowser.removeEventListener("mousemove", this.mouseMove, false);
+ this.browser.removeEventListener("click", this.mouseClick, false);
+ this.browser.removeEventListener("mouseover", this.mouseOver, false);
+ this.browser.removeEventListener("keypress", this.keyPress, false);
+ this.browser.removeEventListener("mousemove", this.mouseMove, false);
+ this.browser.contentWindow.removeEventListener("pagehide", this.pageHide, false);
this.selectedElem = null;
- this.wnd = null;
+ this.browser = null;
this.commentElem = null;
delete this.widerStack;
- delete this.borderElems;
- delete this.labelElem;
return true;
}
diff --git a/chrome/content/overlay.js b/chrome/content/overlay.js
index 46d517c..8f62c6f 100644
--- a/chrome/content/overlay.js
+++ b/chrome/content/overlay.js
@@ -59,6 +59,17 @@ function ehhInit() {
}
}
+function ehhGetBrowser() {
+ if ("getBrowser" in window)
+ return getBrowser();
+ else if ("messageContent" in window)
+ return window.messageContent;
+ else if (document.getElementById("frame_main_pane"))
+ return document.getElementById("frame_main_pane");
+ else
+ return null;
+}
+
function ehhHideTooltips() {
document.getElementById("ehh-helpbox").hidePopup();
document.getElementById("ehh-commandlabel").hidePopup();
@@ -84,12 +95,13 @@ function ehhFillPopup(event) {
popup = popup.replace(/popup$/, '');
- var enabled = (window.content &&
- content.document instanceof HTMLDocument &&
- content.document.body &&
- content.location.href != "about:blank" &&
- content.location.hostname != "");
- var running = (enabled && window.content == ehhAardvark.wnd);
+ var browser = ehhGetBrowser();
+ var enabled = (browser && browser.contentWindow &&
+ browser.contentDocument instanceof HTMLDocument &&
+ browser.contentDocument.body &&
+ browser.contentWindow.location.href != "about:blank" &&
+ browser.contentWindow.location.hostname != "");
+ var running = (enabled && browser == ehhAardvark.browser);
document.getElementById(popup + "ehh-selectelement").setAttribute("disabled", !enabled);
document.getElementById(popup + "ehh-selectelement").hidden = running;
@@ -97,16 +109,16 @@ function ehhFillPopup(event) {
}
function ehhSelectElement() {
- var wnd = window.content;
- if (!content || !content.document)
+ var browser = ehhGetBrowser();
+ if (!browser.contentWindow || !browser.contentDocument)
return;
- if (wnd == ehhAardvark.wnd) {
+ if (browser == ehhAardvark.browser) {
ehhStop();
return;
}
- ehhAardvark.start(wnd);
+ ehhAardvark.start(browser);
}
function ehhStop() {
diff --git a/chrome/content/overlay.xul b/chrome/content/overlay.xul
index c00da95..93df87b 100644
--- a/chrome/content/overlay.xul
+++ b/chrome/content/overlay.xul
@@ -51,8 +51,8 @@
</popupset>
<popup id="abp-status-popup">
- <menuitem id="abp-status-ehh-selectelement" insertbefore="abp-status-options" label="&selectelement.label;" accesskey="&selectelement.accesskey;" key="abp-key-ehh-selectelement" oncommand="ehhSelectElement()"/>
- <menuitem id="abp-status-ehh-stopselection" insertbefore="abp-status-options" label="&stopselection.label;" accesskey="&selectelement.accesskey;" key="abp-key-ehh-selectelement" oncommand="ehhSelectElement()"/>
+ <menuitem id="abp-status-ehh-selectelement" hidden="true" insertbefore="abp-status-options" label="&selectelement.label;" accesskey="&selectelement.accesskey;" key="abp-key-ehh-selectelement" oncommand="ehhSelectElement()"/>
+ <menuitem id="abp-status-ehh-stopselection" hidden="true" insertbefore="abp-status-options" label="&stopselection.label;" accesskey="&selectelement.accesskey;" key="abp-key-ehh-selectelement" oncommand="ehhSelectElement()"/>
</popup>
<commandset id="abp-commandset">
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus-element-hiding-helper.git
More information about the Pkg-mozext-commits
mailing list