[GTK] Test gardening
[WebKit-https.git] / Websites / browserbench.org / Speedometer2.0 / resources / todomvc / architecture-examples / emberjs / source / app / services / memory.js
1 (function(root) {
2   var localStorageMemory = {};
3   var cache = {};
4
5   /**
6    * number of stored items.
7    */
8   localStorageMemory.length = 0;
9
10   /**
11    * returns item for passed key, or null
12    *
13    * @para {String} key
14    *       name of item to be returned
15    * @returns {String|null}
16    */
17   localStorageMemory.getItem = function(key) {
18     return cache[key] || null;
19   };
20
21   /**
22    * sets item for key to passed value, as String
23    *
24    * @para {String} key
25    *       name of item to be set
26    * @para {String} value
27    *       value, will always be turned into a String
28    * @returns {undefined}
29    */
30   localStorageMemory.setItem = function(key, value) {
31     if (typeof value === 'undefined') {
32       localStorageMemory.removeItem(key);
33     } else {
34       if (!(cache.hasOwnProperty(key))) {
35         localStorageMemory.length++;
36       }
37
38       cache[key] = '' + value;
39     }
40   };
41
42   /**
43    * removes item for passed key
44    *
45    * @para {String} key
46    *       name of item to be removed
47    * @returns {undefined}
48    */
49   localStorageMemory.removeItem = function(key) {
50     if (cache.hasOwnProperty(key)) {
51       delete cache[key];
52       localStorageMemory.length--;
53     }
54   };
55
56   /**
57    * returns name of key at passed index
58    *
59    * @para {Number} index
60    *       Position for key to be returned (starts at 0)
61    * @returns {String|null}
62    */
63   localStorageMemory.key = function(index) {
64     return Object.keys(cache)[index] || null;
65   };
66
67   /**
68    * removes all stored items and sets length to 0
69    *
70    * @returns {undefined}
71    */
72   localStorageMemory.clear = function() {
73     cache = {};
74     localStorageMemory.length = 0;
75   };
76
77     root.localStorageMemory = localStorageMemory;
78 })(window);