/**
 * @private
 */
Ext.define('Ext.device.storage.HTML5.HTML5', {
    extend: 'Ext.device.storage.Abstract',
    requires: ['Ext.device.storage.HTML5.Database'],
    dbCache: {},
 
    openDatabase: function(config) {
        config = this.callParent(arguments);
 
        if (!this.dbCache[config.name] || config.noCache) {
            this.dbCache[config.name] = Ext.create('Ext.device.storage.HTML5.Database', config);
        }
 
        return this.dbCache[config.name];
    },
 
    numKeys: function() {
        return window.localStorage.length;
    },
 
    getKey: function(index) {
        return window.localStorage.key(index);
    },
 
    getItem: function(key) {
        return window.localStorage.getItem(key);
    },
 
    setItem: function(key, value) {
        return window.localStorage.setItem(key, value);
    },
 
    removeItem: function(key) {
        return window.localStorage.removeItem(key);
    },
 
    clear: function() {
        return window.localStorage.clear();
    }
});