| Index: chrome/ext/common.js |
| =================================================================== |
| --- a/chrome/ext/common.js |
| +++ b/chrome/ext/common.js |
| @@ -17,99 +17,48 @@ |
| (function() |
| { |
| - /* Events */ |
| + /* Message passing */ |
| - SimpleEventTarget = function() |
| + var sendMessage; |
| + if ("runtime" in chrome && "sendMessage" in chrome.runtime) |
| + sendMessage = chrome.runtime.sendMessage; |
| + else if ("sendMessage" in chrome.extension) |
| + sendMessage = chrome.extension.sendMessage; |
| + else |
| + sendMessage = chrome.extension.sendRequest; |
| + |
| + ext._setupMessageListener = function(wrapSender) |
| { |
| - this._listeners = []; |
| + var onMessage; |
| + if ("runtime" in chrome && "onMessage" in chrome.runtime) |
| + onMessage = chrome.runtime.onMessage; |
| + else if ("onMessage" in chrome.extension) |
| + onMessage = chrome.extension.onMessage; |
| + else |
| + onMessage = chrome.extension.onRequest; |
| + |
| + onMessage.addListener(function(message, sender, sendResponse) |
| + { |
| + ext.onMessage._dispatch(message, wrapSender(sender), sendResponse); |
| + }); |
| }; |
| - SimpleEventTarget.prototype = { |
| - _onListenerAdded: function(listener, idx) {}, |
| - _onListenerRemoved: function(listener, idx) {}, |
| - addListener: function(listener) |
| + ext.onMessage = new ext._EventTarget(); |
| + |
| + |
| + /* Background page */ |
| + |
| + ext.backgroundPage = { |
| + sendMessage: sendMessage, |
| + getWindow: function() |
| { |
| - var idx = this._listeners.push(listener) - 1; |
| - this._onListenerAdded(listener, idx); |
| - }, |
| - removeListener: function(listener) |
| - { |
| - var idx = this._listeners.indexOf(listener); |
| - if (idx != -1) |
| - { |
| - this._listeners.splice(idx, 1); |
| - this._onListenerRemoved(listener, idx); |
| - } |
| + return chrome.extension.getBackgroundPage(); |
| } |
| }; |
| - WrappedEventTarget = function(target) |
| - { |
| - SimpleEventTarget.call(this); |
| - this._wrappedListeners = []; |
| - this._target = target; |
| - }; |
| - WrappedEventTarget.prototype = { |
| - __proto__: SimpleEventTarget.prototype, |
| - _onListenerAdded: function(listener, idx) |
| - { |
| - var wrappedListener = this._wrapListener(listener); |
| + /* Utils */ |
| - this._wrappedListeners[idx] = wrappedListener; |
| - this._target.addListener.call(this._target, wrappedListener); |
| - }, |
| - _onListenerRemoved: function(listener, idx) |
| - { |
| - this._target.removeListener(this._wrappedListeners[idx]); |
| - this._wrappedListeners.splice(idx, 1); |
| - } |
| - }; |
| - |
| - MessageEventTarget = function() |
| - { |
| - var target; |
| - if ("runtime" in chrome && "onMessage" in chrome.runtime) |
| - target = chrome.runtime.onMessage; |
| - else if ("onMessage" in chrome.extension) |
| - target = chrome.extension.onMessage; |
| - else |
| - target = chrome.extension.onRequest; |
| - WrappedEventTarget.call(this, target); |
| - }; |
| - MessageEventTarget.prototype = { |
| - __proto__: WrappedEventTarget.prototype, |
| - _wrapSender: function(sender) |
| - { |
| - return {}; |
| - }, |
| - _wrapListener: function(listener) |
| - { |
| - return function(message, sender, sendResponse) |
| - { |
| - return listener(message, this._wrapSender(sender), sendResponse); |
| - }.bind(this); |
| - } |
| - }; |
| - |
| - |
| - /* API */ |
| - |
| - ext = { |
| - backgroundPage: { |
| - getWindow: function() |
| - { |
| - return chrome.extension.getBackgroundPage(); |
| - } |
| - }, |
| - getURL: chrome.extension.getURL, |
| - i18n: chrome.i18n |
| - }; |
| - |
| - if ("runtime" in chrome && "sendMessage" in chrome.runtime) |
| - ext.backgroundPage.sendMessage = chrome.runtime.sendMessage; |
| - else if ("sendMessage" in chrome.extension) |
| - ext.backgroundPage.sendMessage = chrome.extension.sendMessage; |
| - else |
| - ext.backgroundPage.sendMessage = chrome.extension.sendRequest; |
| + ext.getURL = chrome.extension.getURL; |
| + ext.i18n = chrome.i18n; |
| })(); |