diff --git a/lib/amd/build/localstorage.min.js b/lib/amd/build/localstorage.min.js index c757939c5b9..372e525ee92 100644 --- a/lib/amd/build/localstorage.min.js +++ b/lib/amd/build/localstorage.min.js @@ -1 +1 @@ -define(["core/config"],function(a){var b=!1,c="",d="",e=null,f=function(){if(-1==a.jsrev)return!1;if("undefined"!=typeof window.localStorage)try{return e=window.localStorage,null!==e}catch(b){return!1}},g=function(a){return c+a},h=function(){var b=e.getItem(d);if(null===b)return void e.setItem(d,a.jsrev);var c=a.jsrev;c!=b&&(e.clear(),e.setItem(d,a.jsrev))},i=function(a){var b,c,d,e=0;if(0===a.length)return e;for(b=0,d=a.length;d>b;b++)c=a.charCodeAt(b),e=(e<<5)-e+c,e|=0;return e},j=function(){b=f();var e=a.wwwroot+"/"+a.jsrev,g=i(e);c=g+"/",e=a.wwwroot+"/",g=i(e),d=g+"/jsrev"};return j(),{get:function(a){return b?(h(),a=g(a),e.getItem(a)):!1},set:function(a,c){if(!b)return!1;h(),a=g(a);try{e.setItem(a,c)}catch(d){return!1}return!0}}}); \ No newline at end of file +define(["core/config"],function(a){var b=!1,c="",d="",e=null,f=function(){if(-1==a.jsrev)return!1;if("undefined"==typeof window.localStorage)return!1;var b="test";try{return e=window.localStorage,null===e?!1:(e.setItem(b,"1"),e.removeItem(b),!0)}catch(c){return!1}},g=function(a){return c+a},h=function(){var b=e.getItem(d);if(null===b)return void e.setItem(d,a.jsrev);var c=a.jsrev;c!=b&&(e.clear(),e.setItem(d,a.jsrev))},i=function(a){var b,c,d,e=0;if(0===a.length)return e;for(b=0,d=a.length;d>b;b++)c=a.charCodeAt(b),e=(e<<5)-e+c,e|=0;return e},j=function(){b=f();var e=a.wwwroot+"/"+a.jsrev,g=i(e);c=g+"/",e=a.wwwroot+"/",g=i(e),d=g+"/jsrev"};return j(),{get:function(a){return b?(h(),a=g(a),e.getItem(a)):!1},set:function(a,c){if(!b)return!1;h(),a=g(a);try{e.setItem(a,c)}catch(d){return!1}return!0}}}); \ No newline at end of file diff --git a/lib/amd/src/localstorage.js b/lib/amd/src/localstorage.js index 7cd824e868f..48cda61b567 100644 --- a/lib/amd/src/localstorage.js +++ b/lib/amd/src/localstorage.js @@ -46,13 +46,22 @@ define(['core/config'], function(config) { // Disable cache if debugging. return false; } - if (typeof(window.localStorage) !== "undefined") { - try { - localStorage = window.localStorage; - return localStorage !== null; - } catch (ex) { + if (typeof(window.localStorage) === "undefined") { + return false; + } + var testKey = 'test'; + try { + localStorage = window.localStorage; + if (localStorage === null) { return false; } + // MDL-51461 - Some browsers misreport availability of local storage + // so check it is actually usable. + localStorage.setItem(testKey, '1'); + localStorage.removeItem(testKey); + return true; + } catch (ex) { + return false; } };