| Index: lib/child/elemHide.js | 
| =================================================================== | 
| --- a/lib/child/elemHide.js | 
| +++ b/lib/child/elemHide.js | 
| @@ -28,51 +28,28 @@ try | 
| delete proto.Components; | 
| } | 
| catch (e) | 
| { | 
| Cu.reportError(e); | 
| } | 
|  | 
| let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {}); | 
| -let {PrivateBrowsingUtils} = Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm") | 
|  | 
| let {Utils} = require("utils"); | 
| +let {getFrames, isPrivate} = require("child/utils"); | 
|  | 
| let messageID = 0; | 
|  | 
| // The allowXBL binding below won't have any effect on the element. For elements | 
| // that should be hidden however we don't return any binding at all, this makes | 
| // Gecko stop constructing the node - it cannot be shown. | 
| const allowXBL = "<bindings xmlns='http://www.mozilla.org/xbl'><binding id='dummy' bindToUntrustedContent='true'/></bindings>"; | 
| const hideXBL = "<bindings xmlns='http://www.mozilla.org/xbl'/>"; | 
|  | 
| -function getFrames(window) | 
| -{ | 
| -  let frames = []; | 
| -  while (window) | 
| -  { | 
| -    let frame = { | 
| -      location: window.location.href, | 
| -      sitekey: null | 
| -    }; | 
| - | 
| -    let documentElement = window.document && window.document.documentElement; | 
| -    if (documentElement) | 
| -      frame.sitekey = documentElement.getAttribute("data-adblockkey") | 
| - | 
| -    if (window == window.parent) | 
| -      frame.privateBrowsing = PrivateBrowsingUtils.isWindowPrivate(window); | 
| - | 
| -    frames.push(frame); | 
| -    window = (window != window.parent ? window.parent : null); | 
| -  } | 
| -  return frames; | 
| -} | 
| - | 
| /** | 
| * about: URL module used to count hits. | 
| * @class | 
| */ | 
| let AboutHandler = | 
| { | 
| classID: Components.ID("{55fb7be0-1dd2-11b2-98e6-9e97caf8ba67}"), | 
| classDescription: "Element hiding hit registration protocol handler", | 
| @@ -170,21 +147,23 @@ HitRegistrationChannel.prototype = { | 
| try { | 
| listener.onDataAvailable(this, context, stream, 0, stream.available()); | 
| } catch(e) {} | 
| try { | 
| listener.onStopRequest(this, context, Cr.NS_OK); | 
| } catch(e) {} | 
| }; | 
|  | 
| +    let window = Utils.getRequestWindow(this); | 
| addMessageListener(responseMessage, processResponse); | 
| sendAsyncMessage("AdblockPlus:ElemHideHit", { | 
| responseMessage, | 
| key: this.key, | 
| -      frames: getFrames(Utils.getRequestWindow(this)) | 
| +      frames: getFrames(window), | 
| +      isPrivate: isPrivate(window) | 
| }); | 
| }, | 
|  | 
| asyncOpen2: function(listener) | 
| { | 
| if (!this.loadInfo.triggeringPrincipal.equals(Utils.systemPrincipal)) | 
| throw Cr.NS_ERROR_FAILURE; | 
| this.asyncOpen(listener, null); | 
|  |