MessageRouterBase.prototype={_dispatchMessagesFromQueue:function(){0<this._messageQueue.length&&(backgroundScriptEngine.isLoaded()?(array.forEach(this._messageQueue,function(a){core.fireEvent(a.name,a.event)}),this._messageQueue=[]):timer.setTimeout(func.bind(function(){this._dispatchMessagesFromQueue()},this),100))},fireMessageEvent:function(a,b){backgroundScriptEngine.isLoaded()?(this._dispatchMessagesFromQueue(),core.fireEvent("message",b)):(this._messageQueue.push({name:a,event:b}),timer.setTimeout(func.bind(function(){this._dispatchMessagesFromQueue()},
this),100))},dispatchMessage:function(a,b){return this.dispatchMessageEx({name:a,data:b,origin:"background",target:this,source:this})},dispatchMessageEx:function(a){timer.setTimeout(func.bind(function(){this.fireMessageEvent("message",a)},this),1);return!0}};
Exemple #2
0
function createApi(){var a={console:console.getPublicApi(),storage:storage.getPublicApi(),xhr:xhr.getPublicApi(),browser:browser.getPublicApi(),i18n:i18n.getPublicApi(),io:io.getPublicApi(),getExtensionInfo:function(){return extensionInfo.getRawData()},isDebug:function(){return extensionInfo.debug},invokeAsync:func.bind(invokeAsync.invokeAsync,invokeAsync),invokeAsyncCallback:func.bind(invokeAsync.invokeAsyncCallback,invokeAsync),dispatchMessage:dispatchMessage,addMessageListener:func.bind(messageTarget.addMessageListener,
messageTarget),removeMessageListener:func.bind(messageTarget.removeMessageListener,messageTarget)};object.forEach({browserButton:browserButton,notifications:notifications,optionsPage:optionsPage,contextMenuItem:contextMenuItem},function(b,c){b.getPublicApi&&(a.ui=a.ui||{},a.ui[c]=b.getPublicApi())});var b=wrapMessageTarget(a),f=null;a.ui.browserButton&&(f=wrapEventTarget(a.ui.browserButton));var c=wrapEventTarget(a.browser);object.forEach(a,function(a){"object"==typeof a&&object.freeze(a)});a.ui&&
object.forEach(a.ui,function(a){"object"==typeof a&&object.freeze(a)});core.fireEvent("createApi",{name:"kango",obj:a});object.freeze(a);return{obj:a,clear:function(){b.clear();f&&f.clear();c.clear()}}}core.registerApiFactory("kango",createApi);
MessageRouterBase.prototype={_dispatchMessagesFromQueue:function(){0<this._messageQueue.length&&(backgroundScriptEngine.isLoaded()?(array.forEach(this._messageQueue,function(a){core.fireEvent(a.name,a.event)}),this._messageQueue=[]):timer.setTimeout(func.bind(function(){this._dispatchMessagesFromQueue()},this),100))},fireMessageEvent:function(a,b){backgroundScriptEngine.isLoaded()?(this._dispatchMessagesFromQueue(),core.fireEvent("message",b)):(this._messageQueue.push({name:a,event:b}),timer.setTimeout(func.bind(function(){this._dispatchMessagesFromQueue()},
function MessageSource(){this.dispatchMessage=function(e,s){}}function MessageRouterBase(){this._messageQueue=[]}var core=require("kango/core"),utils=require("kango/utils"),timer=require("kango/timer"),backgroundScriptEngine=require("kango/backgroundscript_engine"),array=utils.array,func=utils.func;MessageRouterBase.prototype={_dispatchMessagesFromQueue:function(){this._messageQueue.length>0&&(backgroundScriptEngine.isLoaded()?(array.forEach(this._messageQueue,function(e){core.fireEvent(e.name,e.event)}),this._messageQueue=[]):timer.setTimeout(func.bind(function(){this._dispatchMessagesFromQueue()},this),100))},fireMessageEvent:function(e,s){backgroundScriptEngine.isLoaded()?(this._dispatchMessagesFromQueue(),core.fireEvent("message",s)):(this._messageQueue.push({name:e,event:s}),timer.setTimeout(func.bind(function(){this._dispatchMessagesFromQueue()},this),100))},dispatchMessage:function(e,s){var i={name:e,data:s,origin:"background",target:this,source:this};return this.dispatchMessageEx(i)},dispatchMessageEx:function(e){return timer.setTimeout(func.bind(function(){this.fireMessageEvent("message",e)},this),1),!0}};
Exemple #5
0
function SQLiteStorage(a){var b=this;core.addAsyncModule(b);this._storage=a;var c=this._cache=new SQLiteStorageAsyncCache;a.getItems(function(a){c.setItems(a);core.fireEvent("moduleinitialized",{data:b})})}
function SQLiteStorageAsync(e){this._tableName=e+"_storage",this._connect=this._openDatabase(),this._createDatabase()}function SQLiteStorageAsyncCache(){this._data={}}function SQLiteStorage(e){var t=this;core.addAsyncModule(t),this._storage=e;var n=this._cache=new SQLiteStorageAsyncCache;e.getItems(function(e){n.setItems(e),core.fireEvent("moduleinitialized",{data:t})})}var core=require("kango/core"),extensionInfo=require("kango/extension_info"),utils=require("kango/utils"),object=utils.object;SQLiteStorageAsync.prototype={_getDatabaseFile:function(){var e=extensionInfo.package_id+".sqlite";return FileUtils.getFile("ProfD",[e])},_openDatabase:function(){var e=this._getDatabaseFile();return Services.storage.openDatabase(e)},_createDatabase:function(){this._connect.executeSimpleSQL("CREATE TABLE IF NOT EXISTS "+this._tableName+" (key TEXT PRIMARY KEY, value TEXT)")},getItems:function(e){var t=this._connect.createStatement("SELECT key, value FROM "+this._tableName),n={};t.executeAsync({handleResult:function(e){for(var t=e.getNextRow();t;){var a=t.getResultByName("key");n[a]=t.getResultByName("value"),t=e.getNextRow()}},handleError:function(e){},handleCompletion:function(t){e(n)}})},setItem:function(e,t,n){var a=this._connect.createStatement("INSERT OR REPLACE INTO "+this._tableName+" (key, value) VALUES(:key, :value)");a.params.key=e,a.params.value=t.toString(),a.executeAsync({handleResult:function(e){},handleError:function(e){},handleCompletion:function(e){"function"==typeof n&&n(e==Ci.mozIStorageStatementCallback.REASON_FINISHED)}})},removeItem:function(e,t){var n=this._connect.createStatement("DELETE FROM "+this._tableName+" WHERE key=:key");n.params.key=e,n.executeAsync({handleResult:function(e){},handleError:function(e){},handleCompletion:function(e){"function"==typeof t&&t(e==Ci.mozIStorageStatementCallback.REASON_FINISHED)}})},clear:function(e){var t=this._connect.createStatement("DELETE FROM "+this._tableName);t.executeAsync({handleResult:function(e){},handleError:function(e){},handleCompletion:function(t){"function"==typeof e&&e(t==Ci.mozIStorageStatementCallback.REASON_FINISHED)}})},close:function(){null!=this._connect&&(this._connect.asyncClose(),this._connect=null)},dispose:function(){this.close()},removeDatabase:function(){this.close();var e=this._getDatabaseFile();e.remove(!1)}},SQLiteStorageAsyncCache.prototype={setItems:function(e){this._data=e},getItem:function(e){return this._data[e]||null},setItem:function(e,t){this._data[e]=t},removeItem:function(e){return delete this._data[e]},clear:function(){this._data={}},getKeys:function(){return object.getKeys(this._data)}},SQLiteStorage.prototype={getItem:function(e){return this._cache.getItem(e)},setItem:function(e,t){this._cache.setItem(e,t),this._storage.setItem(e,t)},removeItem:function(e){this._cache.removeItem(e),this._storage.removeItem(e)},clear:function(){this._cache.clear(),this._storage.clear()},getKeys:function(){return this._cache.getKeys()},dispose:function(){this._storage.dispose(),this._storage=null,this._cache=null}},core.uninstall?module.exports.uninstall=function(){SQLiteStorageAsync.prototype.removeDatabase()}:(module.exports.storage=new JSONStorage(new SQLiteStorage(new SQLiteStorageAsync("user"))),module.exports.systemStorage=new JSONStorage(new SQLiteStorage(new SQLiteStorageAsync("system"))),module.exports.dispose=function(){exports.storage.dispose(),exports.systemStorage.dispose()},module.exports.getPublicApi=getPublicApi);
Exemple #7
0
function dispatchMessage(e,n){return messageRouter.dispatchMessage(e,n)}function wrapEventTarget(e){function n(){array.forEach(r,function(n){e.removeEventListener(n.type,n.listener)}),r=[]}var r=[];return e.addEventListener=func.decorate(e.addEventListener,function(e,n){var t=n[0],o=n[1];return e.call(this,t,o)?(r.push({type:t,listener:o}),!0):!1}),{clear:n}}function wrapMessageTarget(e){function n(){array.forEach(r,function(n){e.removeMessageListener(n.name,n.listener)}),r=[]}var r=[];return e.addMessageListener=func.decorate(e.addMessageListener,function(e,n){var t=n[0],o=n[1];return e.call(this,t,o)?(r.push({name:t,listener:o}),!0):!1}),{clear:n}}function createApi(){var e={console:console.getPublicApi(),storage:storage.getPublicApi(),xhr:xhr.getPublicApi(),browser:browser.getPublicApi(),i18n:i18n.getPublicApi(),io:io.getPublicApi(),getExtensionInfo:function(){return extensionInfo.getRawData()},isDebug:function(){return extensionInfo.debug},invokeAsync:func.bind(invokeAsync.invokeAsync,invokeAsync),invokeAsyncCallback:func.bind(invokeAsync.invokeAsyncCallback,invokeAsync),dispatchMessage:dispatchMessage,addMessageListener:func.bind(messageTarget.addMessageListener,messageTarget),removeMessageListener:func.bind(messageTarget.removeMessageListener,messageTarget)},n={browserButton:browserButton,notifications:notifications,optionsPage:optionsPage,contextMenuItem:contextMenuItem};object.forEach(n,function(n,r){n.getPublicApi&&(e.ui=e.ui||{},e.ui[r]=n.getPublicApi())});var r=wrapMessageTarget(e),t=null;e.ui.browserButton&&(t=wrapEventTarget(e.ui.browserButton));var o=wrapEventTarget(e.browser);return object.forEach(e,function(e){"object"==typeof e&&object.freeze(e)}),e.ui&&object.forEach(e.ui,function(e){"object"==typeof e&&object.freeze(e)}),core.fireEvent("createApi",{name:"kango",obj:e}),object.freeze(e),{obj:e,clear:function(){r.clear(),t&&t.clear(),o.clear()}}}var core=require("kango/core"),extensionInfo=require("kango/extension_info"),utils=require("kango/utils"),object=utils.object,array=utils.array,func=utils.func,invoke=require("kango/invoke"),console=require("kango/console"),storage=require("kango/storage"),xhr=require("kango/xhr"),browser=require("kango/browser"),i18n=require("kango/i18n"),io=require("kango/io"),browserButton=require("kango-ui/browser_button"),optionsPage=require("kango-ui/options"),notifications=require("kango-ui/notifications"),contextMenuItem=require("kango-ui/context_menu"),MessageTarget=require("kango/message_target"),InvokeAsync=require("kango/invoke_async");require("kango/backgroundscript_engine"),require("kango/userscript_engine");var messageRouter=require("kango/messaging"),addEventListener=func.bind(core.addEventListener,core),invokeAsync=new InvokeAsync(addEventListener,dispatchMessage,invoke,function(e,n){console.reportError(n)}),messageTarget=new MessageTarget(addEventListener);core.registerApiFactory("kango",createApi);