From 9dd5f1612b899b6c2f575174c58522de9e250ae0 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Thu, 2 Oct 2008 17:23:42 +0000 Subject: [PATCH] Cleanup storage.jsm --- modules/storage.jsm | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/modules/storage.jsm b/modules/storage.jsm index 3b352646..b2002a91 100644 --- a/modules/storage.jsm +++ b/modules/storage.jsm @@ -73,9 +73,9 @@ var prototype = { save: function () { savePref(this) }, }; -function ObjectStore(name, store) +function ObjectStore(name, store, data) { - var object = loadPref(name, store, Object) || {}; + var object = data || {}; this.__defineGetter__("store", function () store); this.__defineGetter__("name", function () name); @@ -115,9 +115,9 @@ function ObjectStore(name, store) } ObjectStore.prototype = prototype; -function ArrayStore(name, store) +function ArrayStore(name, store, data) { - var array = loadPref(name, store, Array) || []; + var array = data || []; this.__defineGetter__("store", function () store); this.__defineGetter__("name", function () name); @@ -182,35 +182,26 @@ var keys = {}; var observers = {}; var storage = { - _addKey: function addKey(key, val) + newObject: function newObject(key, constructor, store, type) { - if (key in this) - throw Error; // TODO: Find a better error. - keys[key] = val; - this.__defineGetter__(key, function () keys[key]); + if (!(key in keys)) + { + if (key in this) + throw Error; + keys[key] = new constructor(key, store, loadPref(key, store, type || Object)); + this.__defineGetter__(key, function () keys[key]); + } + return keys[key]; }, newMap: function newMap(key, store) { - // TODO: Add type checking. - if (!(key in keys)) - this._addKey(key, new ObjectStore(key, store)); - return this[key]; + return this.newObject(key, ObjectStore, store); }, newArray: function newArray(key, store) { - // TODO: Add type checking. - if (!(key in keys)) - this._addKey(key, new ArrayStore(key, store)); - return this[key]; - }, - - newObject: function newObject(key, constructor, store) - { - if(!(key in keys)) - this._addKey(key, new constructor(key, store, loadPref(key, store, Object))); - return this[key]; + return this.newObject(key, ArrayStore, store, Array); }, addObserver: function addObserver(key, callback)