| Index: safari/ext/content.js | 
| =================================================================== | 
| --- a/safari/ext/content.js | 
| +++ b/safari/ext/content.js | 
| @@ -21,6 +21,25 @@ | 
| safari.self.tab.dispatchMessage("loading"); | 
|  | 
|  | 
| +  /* Events */ | 
| + | 
| +  var ContentMessageEventTarget = function() | 
| +  { | 
| +    MessageEventTarget.call(this, safari.self); | 
| +  }; | 
| +  ContentMessageEventTarget.prototype = { | 
| +    __proto__: MessageEventTarget.prototype, | 
| +    _getResponseDispatcher: function(event) | 
| +    { | 
| +      return event.target.tab; | 
| +    }, | 
| +    _getSenderDetails: function(event) | 
| +    { | 
| +      return {}; | 
| +    } | 
| +  }; | 
| + | 
| + | 
| /* Background page proxy */ | 
| var proxy = { | 
| objects: [], | 
| @@ -290,7 +309,17 @@ | 
| type = "other"; | 
| } | 
|  | 
| -    if (!safari.self.tab.canLoad(event, {type: "webRequest", payload: {url: event.url, type: type}})) | 
| +    if (!safari.self.tab.canLoad( | 
| +      event, { | 
| +        type: "webRequest", | 
| +        payload: { | 
| +          url: event.url, | 
| +          type: type, | 
| +          documentUrl: document.location.href, | 
| +          isTopLevel: window == window.top | 
| +        } | 
| +      } | 
| +    )) | 
| { | 
| event.preventDefault(); | 
|  | 
| @@ -307,14 +336,25 @@ | 
| /* API */ | 
|  | 
| ext.backgroundPage = { | 
| -    _eventTarget: safari.self, | 
| -    _messageDispatcher: safari.self.tab, | 
| - | 
| -    sendMessage: sendMessage, | 
| -    getWindow: function() { return proxy.getObject(0); } | 
| +    sendMessage: function(message, responseCallback) | 
| +    { | 
| +      _sendMessage( | 
| +        message, responseCallback, | 
| +        safari.self.tab, safari.self, | 
| +        { | 
| +          documentUrl: document.location.href, | 
| +          isTopLevel: window == window.top | 
| +        } | 
| +      ); | 
| +    }, | 
| +    getWindow: function() | 
| +    { | 
| +      return proxy.getObject(0); | 
| +    } | 
| }; | 
|  | 
| -  ext.onMessage = new MessageEventTarget(safari.self); | 
| +  ext.onMessage = new ContentMessageEventTarget(); | 
| + | 
|  | 
| // Safari does not pass the element which the context menu is refering to | 
| // so we need to add it to the event's user info. | 
|  |