    /**
     * @class Ext.state.LocalStorageProvider
     * A Provider implementation which saves and retrieves state via the HTML5 localStorage object.
     * If the browser does not support local storage, there will be no attempt to read the state.
     * Before creating this class, a check should be made to {@link Ext.supports#LocalStorage}.
     */

    Ext.define('Ext.state.LocalStorageProvider', {
        /* Begin Definitions */

        extend: 'Ext.state.Provider',

        alias: 'state.localstorage',

        /* End Definitions */

        constructor: function(){
            var me = this;
            me.callParent(arguments);
            me.store = me.getStorageObject();
            if (me.store) {
                me.state = me.readLocalStorage();
            } else {
                me.state = {};
            }
        },

        readLocalStorage: function(){
            var store = this.store,
                i = 0,
                len = store.length,
                prefix = this.prefix,
                prefixLen = prefix.length,
                data = {},
                key;

            for (; i < len; ++i) {
                key = store.key(i);
                if (key.substring(0, prefixLen) == prefix) {
                    data[key.substr(prefixLen)] = this.decodeValue(store.getItem(key));
                }
            }
            return data;
        },

        set : function(name, value){
            var me = this;

            me.clear(name);
            if (typeof value == "undefined" || value === null) {
                return;
            }
            me.store.setItem(me.prefix + name, me.encodeValue(value));
            me.callParent(arguments);
        },

        // private
        clear : function(name){
            this.store.removeItem(this.prefix + name);
            this.callParent(arguments);
        },

        getStorageObject: function(){
            if (Ext.supports.LocalStorage) {
                return window.localStorage;
            }
            //<debug>
            Ext.Error.raise('LocalStorage is not supported by the current browser');
            //</debug>
            return false;
        }
    });