[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