/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ dojo.provide("dojo.storage.browser"); dojo.require("dojo.storage"); dojo.require("dojo.flash"); dojo.require("dojo.json"); dojo.require("dojo.uri.*"); dojo.storage.browser.FileStorageProvider=function(){ }; dojo.inherits(dojo.storage.browser.FileStorageProvider,dojo.storage); dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME="__dojoAllKeys"; dojo.storage.browser.FileStorageProvider._APPLET_ID="__dojoFileJavaObj"; dojo.lang.extend(dojo.storage.browser.FileStorageProvider,{namespace:"default",initialized:false,_available:null,_statusHandler:null,_keyIndex:new Array(),initialize:function(){ if(djConfig["disableFileStorage"]==true){ return; } this._loadKeyIndex(); this.initialized=true; dojo.storage.manager.loaded(); },isAvailable:function(){ this._available=false; var _1=window.location.protocol; if(_1.indexOf("file")!=-1||_1.indexOf("chrome")!=-1){ this._available=this._isAvailableXPCOM(); if(this._available==false){ this._available=this._isAvailableActiveX(); } } return this._available; },put:function(_2,_3,_4){ if(this.isValidKey(_2)==false){ dojo.raise("Invalid key given: "+_2); } this._statusHandler=_4; try{ this._save(_2,_3); _4.call(null,dojo.storage.SUCCESS,_2); } catch(e){ this._statusHandler.call(null,dojo.storage.FAILED,_2,e.toString()); } },get:function(_5){ if(this.isValidKey(_5)==false){ dojo.raise("Invalid key given: "+_5); } var _6=this._load(_5); return _6; },getKeys:function(){ return this._keyIndex; },hasKey:function(_7){ if(this.isValidKey(_7)==false){ dojo.raise("Invalid key given: "+_7); } this._loadKeyIndex(); var _8=false; for(var i=0;i"+""; document.writeln(tag); }}); dojo.storage.browser.WhatWGStorageProvider=function(){ }; dojo.inherits(dojo.storage.browser.WhatWGStorageProvider,dojo.storage); dojo.lang.extend(dojo.storage.browser.WhatWGStorageProvider,{namespace:"default",initialized:false,_domain:null,_available:null,_statusHandler:null,initialize:function(){ if(djConfig["disableWhatWGStorage"]==true){ return; } this._domain=location.hostname; this.initialized=true; dojo.storage.manager.loaded(); },isAvailable:function(){ try{ var _42=globalStorage[location.hostname]; } catch(e){ this._available=false; return this._available; } this._available=true; return this._available; },put:function(key,_44,_45){ if(this.isValidKey(key)==false){ dojo.raise("Invalid key given: "+key); } this._statusHandler=_45; if(dojo.lang.isString(_44)){ _44="string:"+_44; }else{ _44=dojo.json.serialize(_44); } window.addEventListener("storage",function(evt){ _45.call(null,dojo.storage.SUCCESS,key); },false); try{ var _47=globalStorage[this._domain]; _47.setItem(key,_44); } catch(e){ this._statusHandler.call(null,dojo.storage.FAILED,key,e.toString()); } },get:function(key){ if(this.isValidKey(key)==false){ dojo.raise("Invalid key given: "+key); } var _49=globalStorage[this._domain]; var _4a=_49.getItem(key); if(_4a==null){ return null; } _4a=_4a.value; if(!dojo.lang.isUndefined(_4a)&&_4a!=null&&/^string:/.test(_4a)){ _4a=_4a.substring("string:".length); }else{ _4a=dojo.json.evalJson(_4a); } return _4a; },getKeys:function(){ var _4b=globalStorage[this._domain]; var _4c=new Array(); for(i=0;i<_4b.length;i++){ _4c[i]=_4b.key(i); } return _4c; },clear:function(){ var _4d=globalStorage[this._domain]; var _4e=new Array(); for(var i=0;i<_4d.length;i++){ _4e[_4e.length]=_4d.key(i); } for(var i=0;i<_4e.length;i++){ _4d.removeItem(_4e[i]); } },remove:function(key){ var _51=globalStorage[this._domain]; _51.removeItem(key); },isPermanent:function(){ return true; },getMaximumSize:function(){ return dojo.storage.SIZE_NO_LIMIT; },hasSettingsUI:function(){ return false; },showSettingsUI:function(){ dojo.raise(this.getType()+" does not support a storage settings user-interface"); },hideSettingsUI:function(){ dojo.raise(this.getType()+" does not support a storage settings user-interface"); },getType:function(){ return "dojo.storage.browser.WhatWGProvider"; }}); dojo.storage.browser.FlashStorageProvider=function(){ }; dojo.inherits(dojo.storage.browser.FlashStorageProvider,dojo.storage); dojo.lang.extend(dojo.storage.browser.FlashStorageProvider,{namespace:"default",initialized:false,_available:null,_statusHandler:null,initialize:function(){ if(djConfig["disableFlashStorage"]==true){ return; } var _52=function(){ dojo.storage._flashLoaded(); }; dojo.flash.addLoadedListener(_52); var _53=dojo.uri.moduleUri("dojo","../Storage_version6.swf").toString(); var _54=dojo.uri.moduleUri("dojo","../Storage_version8.swf").toString(); dojo.flash.setSwf({flash6:_53,flash8:_54,visible:false}); },isAvailable:function(){ if(djConfig["disableFlashStorage"]==true){ this._available=false; }else{ this._available=true; } return this._available; },put:function(key,_56,_57){ if(this.isValidKey(key)==false){ dojo.raise("Invalid key given: "+key); } this._statusHandler=_57; if(dojo.lang.isString(_56)){ _56="string:"+_56; }else{ _56=dojo.json.serialize(_56); } dojo.flash.comm.put(key,_56,this.namespace); },get:function(key){ if(this.isValidKey(key)==false){ dojo.raise("Invalid key given: "+key); } var _59=dojo.flash.comm.get(key,this.namespace); if(_59==""){ return null; } if(!dojo.lang.isUndefined(_59)&&_59!=null&&/^string:/.test(_59)){ _59=_59.substring("string:".length); }else{ _59=dojo.json.evalJson(_59); } return _59; },getKeys:function(){ var _5a=dojo.flash.comm.getKeys(this.namespace); if(_5a==""){ return []; } return _5a.split(","); },clear:function(){ dojo.flash.comm.clear(this.namespace); },remove:function(key){ dojo.unimplemented("dojo.storage.browser.FlashStorageProvider.remove"); },isPermanent:function(){ return true; },getMaximumSize:function(){ return dojo.storage.SIZE_NO_LIMIT; },hasSettingsUI:function(){ return true; },showSettingsUI:function(){ dojo.flash.comm.showSettings(); dojo.flash.obj.setVisible(true); dojo.flash.obj.center(); },hideSettingsUI:function(){ dojo.flash.obj.setVisible(false); if(dojo.storage.onHideSettingsUI!=null&&!dojo.lang.isUndefined(dojo.storage.onHideSettingsUI)){ dojo.storage.onHideSettingsUI.call(null); } },getType:function(){ return "dojo.storage.browser.FlashStorageProvider"; },_flashLoaded:function(){ this._initialized=true; dojo.storage.manager.loaded(); },_onStatus:function(_5c,key){ var ds=dojo.storage; var dfo=dojo.flash.obj; if(_5c==ds.PENDING){ dfo.center(); dfo.setVisible(true); }else{ dfo.setVisible(false); } if((!dj_undef("_statusHandler",ds))&&(ds._statusHandler!=null)){ ds._statusHandler.call(null,_5c,key); } }}); dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider",new dojo.storage.browser.FileStorageProvider()); dojo.storage.manager.register("dojo.storage.browser.WhatWGStorageProvider",new dojo.storage.browser.WhatWGStorageProvider()); dojo.storage.manager.register("dojo.storage.browser.FlashStorageProvider",new dojo.storage.browser.FlashStorageProvider()); dojo.storage.manager.initialize();