static/tinymce/plugins/autosave/editor_plugin_src.js
function(ed) {
			var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";

			self.key = PLUGIN_NAME + ed.id;

			// Loop though each storage engine type until we find one that works
			tinymce.each([
				function() {
					// Try HTML5 Local Storage
					if (localStorage) {
						localStorage.setItem(testKey, testVal);

						if (localStorage.getItem(testKey) === testVal) {
							localStorage.removeItem(testKey);

							return localStorage;
						}
					}
				},

				function() {
					// Try HTML5 Session Storage
					if (sessionStorage) {
						sessionStorage.setItem(testKey, testVal);

						if (sessionStorage.getItem(testKey) === testVal) {
							sessionStorage.removeItem(testKey);

							return sessionStorage;
						}
					}
				},

				function() {
					// Try IE userData
					if (tinymce.isIE) {
						ed.getElement().style.behavior = "url('#default#userData')";

						// Fake localStorage on old IE
						return {
							autoExpires : TRUE,

							setItem : function(key, value) {
								var userDataElement = ed.getElement();

								userDataElement.setAttribute(key, value);
								userDataElement.expires = self.getExpDate();

								try {
									userDataElement.save("TinyMCE");
								} catch (e) {
									// Ignore, saving might fail if "Userdata Persistence" is disabled in IE
								}
							},

							getItem : function(key) {
								var userDataElement = ed.getElement();

								try {
									userDataElement.load("TinyMCE");
									return userDataElement.getAttribute(key);
								} catch (e) {
									// Ignore, loading might fail if "Userdata Persistence" is disabled in IE
									return null;
								}
							},

							removeItem : function(key) {
								ed.getElement().removeAttribute(key);
							}
						};
					}
				},
			], function(setup) {
				// Try executing each function to find a suitable storage engine
				try {
					self.storage = setup();

					if (self.storage)
						return false;
				} catch (e) {
					// Ignore
				}
			});
		}
function(ed) {
			var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";

			self.key = PLUGIN_NAME + ed.id;

			// Loop though each storage engine type until we find one that works
			tinymce.each([
				function() {
					// Try HTML5 Local Storage
					if (localStorage) {
						localStorage.setItem(testKey, testVal);

						if (localStorage.getItem(testKey) === testVal) {
							localStorage.removeItem(testKey);

							return localStorage;
						}
					}
				},

				function() {
					// Try HTML5 Session Storage
					if (sessionStorage) {
						sessionStorage.setItem(testKey, testVal);

						if (sessionStorage.getItem(testKey) === testVal) {
							sessionStorage.removeItem(testKey);

							return sessionStorage;
						}
					}
				},

				function() {
					// Try IE userData
					if (tinymce.isIE) {
						ed.getElement().style.behavior = "url('#default#userData')";

						// Fake localStorage on old IE
						return {
							autoExpires : TRUE,

							setItem : function(key, value) {
								var userDataElement = ed.getElement();

								userDataElement.setAttribute(key, value);
								userDataElement.expires = self.getExpDate();

								try {
									userDataElement.save("TinyMCE");
								} catch (e) {
									// Ignore, saving might fail if "Userdata Persistence" is disabled in IE
								}
							},

							getItem : function(key) {
								var userDataElement = ed.getElement();

								try {
									userDataElement.load("TinyMCE");
									return userDataElement.getAttribute(key);
								} catch (e) {
									// Ignore, loading might fail if "Userdata Persistence" is disabled in IE
									return null;
								}
							},

							removeItem : function(key) {
								ed.getElement().removeAttribute(key);
							}
						};
					}
				},
			], function(setup) {
				// Try executing each function to find a suitable storage engine
				try {
					self.storage = setup();

					if (self.storage)
						return false;
				} catch (e) {
					// Ignore
				}
			});
		}
function ( ed ) { var self = this , testKey = PLUGIN_NAME + '_test' , testVal = "OK" ; self . key = PLUGIN_NAME + ed . id ; // Loop though each storage engine type until we find one that works
 tinymce . each ( [ function ( ) { // Try HTML5 Local Storage
 if ( localStorage ) { localStorage . setItem ( testKey , testVal ) ; if ( localStorage . getItem ( testKey ) === testVal ) { localStorage . removeItem ( testKey ) ; return localStorage ; } } } , function ( ) { // Try HTML5 Session Storage
 if ( sessionStorage ) { sessionStorage . setItem ( testKey , testVal ) ; if ( sessionStorage . getItem ( testKey ) === testVal ) { sessionStorage . removeItem ( testKey ) ; return sessionStorage ; } } } , function ( ) { // Try IE userData
 if ( tinymce . isIE ) { ed . getElement ( ) . style . behavior = "url('#default#userData')" ; // Fake localStorage on old IE
 return { autoExpires : TRUE , setItem : function ( key , value ) { var userDataElement = ed . getElement ( ) ; userDataElement . setAttribute ( key , value ) ; userDataElement . expires = self . getExpDate ( ) ; try { userDataElement . save ( "TinyMCE" ) ; } catch ( e ) { // Ignore, saving might fail if "Userdata Persistence" is disabled in IE
 } } , getItem : function ( key ) { var userDataElement = ed . getElement ( ) ; try { userDataElement . load ( "TinyMCE" ) ; return userDataElement . getAttribute ( key ) ; } catch ( e ) { // Ignore, loading might fail if "Userdata Persistence" is disabled in IE
 return null ; } } , removeItem : function ( key ) { ed . getElement ( ) . removeAttribute ( key ) ; } } ; } } , ] , function ( setup ) { // Try executing each function to find a suitable storage engine
 try { self . storage = setup ( ) ; if ( self . storage ) return false ; } catch ( e ) { // Ignore
 } } ) ; }
This method will setup the storage engine. If the browser has support for it.

@method setupStorage
This method will setup the storage engine . If the browser has support for it .