Autodetects the best possible persistent storage provider
Usage
function () (view source)
if(this._initialized){// already finishedreturn;
}// a flag to force the storage manager to use a particular // storage provider type, such as // djConfig = {forceStorageProvider: "dojox.storage.WhatWGStorageProvider"};var forceProvider = dojo.config["forceStorageProvider"]||false;
// go through each provider, seeing if it can be usedvar providerToUse;
//FIXME: use dojo.somefor(var i = 0; i <this.providers.length; i++){
providerToUse = this.providers[i];
if(forceProvider && forceProvider == providerToUse.declaredClass){// still call isAvailable for this provider, since this helps some// providers internally figure out if they are available// FIXME: This should be refactored since it is non-intuitive// that isAvailable() would initialize some state
providerToUse.isAvailable();
break;
}elseif(!forceProvider && providerToUse.isAvailable()){break;
}}if(!providerToUse){// no provider availablethis._initialized = true;
this.available = false;
this.currentProvider = null;
console.warn("No storage provider found for this platform");
this.loaded();
return;
}// create this provider and mix in it's properties// so that developers can do dojox.storage.put rather// than dojox.storage.currentProvider.put, for examplethis.currentProvider = providerToUse;
dojo.mixin(dojox.storage, this.currentProvider);
// have the provider initialize itself
dojox.storage.initialize();
this._initialized = true;
this.available = true;