From f9187fe95b0bdd96df8a2d295ce61c12926e9fd8 Mon Sep 17 00:00:00 2001 From: Shane Tomlinson <stomlinson@mozilla.com> Date: Fri, 2 Dec 2011 14:43:49 +0000 Subject: [PATCH] IE8 does not support delete localStorage.[itemname], so this has to be changed to localStorage.removeItem(itemname) close #688 --- resources/static/shared/storage.js | 50 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/resources/static/shared/storage.js b/resources/static/shared/storage.js index ea70112eb..d774e86d7 100644 --- a/resources/static/shared/storage.js +++ b/resources/static/shared/storage.js @@ -34,9 +34,10 @@ * ***** END LICENSE BLOCK ***** */ BrowserID.Storage = (function() { - - var jwk; - + + var jwk, + storage = localStorage; + function prepareDeps() { if (!jwk) { jwk = require("./jwk"); @@ -44,20 +45,19 @@ BrowserID.Storage = (function() { } function storeEmails(emails) { - window.localStorage.emails = JSON.stringify(emails); + storage.emails = JSON.stringify(emails); } function clear() { storeEmails({}); - var localStorage = window.localStorage; - localStorage.removeItem("tempKeypair"); - localStorage.removeItem("stagedOnBehalfOf"); - localStorage.removeItem("siteInfo"); + storage.removeItem("tempKeypair"); + storage.removeItem("stagedOnBehalfOf"); + storage.removeItem("siteInfo"); } function getEmails() { try { - var emails = JSON.parse(window.localStorage.emails); + var emails = JSON.parse(storage.emails); if (emails !== null) return emails; } catch(e) { @@ -87,13 +87,13 @@ BrowserID.Storage = (function() { storeEmails(emails); // remove any sites associated with this email address. - var siteInfo = JSON.parse(localStorage.siteInfo || "{}"); + var siteInfo = JSON.parse(storage.siteInfo || "{}"); for(var site in siteInfo) { if(siteInfo[site].email === email) { delete siteInfo[site].email; } } - localStorage.siteInfo = JSON.stringify(siteInfo); + storage.siteInfo = JSON.stringify(siteInfo); } else { throw "unknown email address"; @@ -114,15 +114,15 @@ BrowserID.Storage = (function() { } function storeTemporaryKeypair(keypair) { - window.localStorage.tempKeypair = JSON.stringify({ + storage.tempKeypair = JSON.stringify({ publicKey: keypair.publicKey.toSimpleObject(), secretKey: keypair.secretKey.toSimpleObject() }); } function retrieveTemporaryKeypair() { - var raw_kp = JSON.parse(window.localStorage.tempKeypair); - window.localStorage.tempKeypair = null; + var raw_kp = JSON.parse(storage.tempKeypair); + storage.tempKeypair = null; if (raw_kp) { prepareDeps(); var kp = new jwk.KeyPair(); @@ -135,7 +135,7 @@ BrowserID.Storage = (function() { } function setStagedOnBehalfOf(origin) { - window.localStorage.stagedOnBehalfOf = JSON.stringify({ + storage.stagedOnBehalfOf = JSON.stringify({ at: new Date().toString(), origin: origin }); @@ -145,7 +145,7 @@ BrowserID.Storage = (function() { var origin; try { - var staged = JSON.parse(window.localStorage.stagedOnBehalfOf); + var staged = JSON.parse(storage.stagedOnBehalfOf); if (staged) { if ((new Date() - new Date(staged.at)) > (5 * 60 * 1000)) throw "stale"; @@ -154,14 +154,14 @@ BrowserID.Storage = (function() { } } catch (x) { console.log(x); - delete window.localStorage.stagedOnBehalfOf; + storage.removeItem("stagedOnBehalfOf"); } return origin; } function siteSet(site, key, value) { - var allSiteInfo = JSON.parse(localStorage.siteInfo || "{}"); + var allSiteInfo = JSON.parse(storage.siteInfo || "{}"); var siteInfo = allSiteInfo[site] = allSiteInfo[site] || {}; if(key === "email" && !getEmail(value)) { @@ -170,23 +170,23 @@ BrowserID.Storage = (function() { siteInfo[key] = value; - localStorage.siteInfo = JSON.stringify(allSiteInfo); + storage.siteInfo = JSON.stringify(allSiteInfo); } function siteGet(site, key) { - var allSiteInfo = JSON.parse(localStorage.siteInfo || "{}"); + var allSiteInfo = JSON.parse(storage.siteInfo || "{}"); var siteInfo = allSiteInfo[site]; return siteInfo && siteInfo[key]; } function siteRemove(site, key) { - var allSiteInfo = JSON.parse(localStorage.siteInfo || "{}"); + var allSiteInfo = JSON.parse(storage.siteInfo || "{}"); var siteInfo = allSiteInfo[site]; if (siteInfo) { delete siteInfo[key]; - localStorage.siteInfo = JSON.stringify(allSiteInfo); + storage.siteInfo = JSON.stringify(allSiteInfo); } } @@ -203,13 +203,13 @@ BrowserID.Storage = (function() { */ getEmails: getEmails, /** - * Get one email address and its key pair, if found. Returns undefined if + * Get one email address and its key pair, if found. Returns undefined if * not found. * @method getEmail */ getEmail: getEmail, /** - * Remove an email address, its key pairs, and any sites associated with + * Remove an email address, its key pairs, and any sites associated with * email address. * @throws "unknown email address" if email address is not known. * @method removeEmail @@ -248,7 +248,7 @@ BrowserID.Storage = (function() { }, /** - * Clear all stored data - email addresses, key pairs, temporary key pairs, + * Clear all stored data - email addresses, key pairs, temporary key pairs, * site/email associations. * @method clear */ -- GitLab