| OLD | NEW |
| 1 <script> | 1 <!-- |
| 2 function test(stage0) { | 2 * Copyright (c) 2011 The Chromium Authors. All rights reserved. Use of this |
| 3 var apis = [ | 3 * source code is governed by a BSD-style license that can be found in the |
| 4 chrome.experimental.storage.sync, | 4 * LICENSE file. |
| 5 chrome.experimental.storage.local | 5 --> |
| 6 ]; | 6 <script src="background.js"></script> |
| 7 apis.forEach(function(api) { | |
| 8 api.succeed = chrome.test.callbackPass(api.clear.bind(api)); | |
| 9 stage0.call(api); | |
| 10 }); | |
| 11 } | |
| 12 | |
| 13 chrome.test.runTests([ | |
| 14 function getWhenEmpty() { | |
| 15 function stage0() { | |
| 16 this.get('foo', stage1.bind(this)); | |
| 17 } | |
| 18 function stage1(settings) { | |
| 19 chrome.test.assertEq({}, settings); | |
| 20 this.get(['foo', 'bar'], stage2.bind(this)); | |
| 21 } | |
| 22 function stage2(settings) { | |
| 23 chrome.test.assertEq({}, settings); | |
| 24 this.get(undefined, stage3.bind(this)); | |
| 25 } | |
| 26 function stage3(settings) { | |
| 27 chrome.test.assertEq({}, settings); | |
| 28 this.succeed(); | |
| 29 } | |
| 30 test(stage0); | |
| 31 }, | |
| 32 | |
| 33 function getWhenNonempty() { | |
| 34 function stage0() { | |
| 35 this.set({ | |
| 36 'foo' : 'bar', | |
| 37 'baz' : 'qux', | |
| 38 'hello': 'world' | |
| 39 }, stage1.bind(this)); | |
| 40 } | |
| 41 function stage1() { | |
| 42 this.get(['foo', 'baz'], stage2.bind(this)); | |
| 43 } | |
| 44 function stage2(settings) { | |
| 45 chrome.test.assertEq({ | |
| 46 'foo': 'bar', | |
| 47 'baz': 'qux' | |
| 48 }, settings); | |
| 49 this.get(['nothing', 'baz', 'hello', 'ignore'], stage3.bind(this)); | |
| 50 } | |
| 51 function stage3(settings) { | |
| 52 chrome.test.assertEq({ | |
| 53 'baz' : 'qux', | |
| 54 'hello': 'world' | |
| 55 }, settings); | |
| 56 this.get(null, stage4.bind(this)); | |
| 57 } | |
| 58 function stage4(settings) { | |
| 59 chrome.test.assertEq({ | |
| 60 'foo' : 'bar', | |
| 61 'baz' : 'qux', | |
| 62 'hello': 'world' | |
| 63 }, settings); | |
| 64 this.succeed(); | |
| 65 } | |
| 66 test(stage0); | |
| 67 }, | |
| 68 | |
| 69 function removeWhenEmpty() { | |
| 70 function stage0() { | |
| 71 this.remove('foo', stage1.bind(this)); | |
| 72 } | |
| 73 function stage1() { | |
| 74 this.remove(['foo', 'bar'], this.succeed); | |
| 75 } | |
| 76 test(stage0); | |
| 77 }, | |
| 78 | |
| 79 function removeWhenNonempty() { | |
| 80 function stage0() { | |
| 81 this.set({ | |
| 82 'foo' : 'bar', | |
| 83 'baz' : 'qux', | |
| 84 'hello': 'world' | |
| 85 }, stage1.bind(this)); | |
| 86 } | |
| 87 function stage1() { | |
| 88 this.remove('foo', stage2.bind(this)); | |
| 89 } | |
| 90 function stage2() { | |
| 91 this.get(null, stage3.bind(this)); | |
| 92 } | |
| 93 function stage3(settings) { | |
| 94 chrome.test.assertEq({ | |
| 95 'baz' : 'qux', | |
| 96 'hello': 'world' | |
| 97 }, settings); | |
| 98 this.remove(['baz', 'nothing'], stage4.bind(this)); | |
| 99 } | |
| 100 function stage4() { | |
| 101 this.get(null, stage5.bind(this)); | |
| 102 } | |
| 103 function stage5(settings) { | |
| 104 chrome.test.assertEq({ | |
| 105 'hello': 'world' | |
| 106 }, settings); | |
| 107 this.remove('hello', stage6.bind(this)); | |
| 108 } | |
| 109 function stage6() { | |
| 110 this.get(null, stage7.bind(this)); | |
| 111 } | |
| 112 function stage7(settings) { | |
| 113 chrome.test.assertEq({}, settings); | |
| 114 this.succeed(); | |
| 115 } | |
| 116 test(stage0); | |
| 117 }, | |
| 118 | |
| 119 function setWhenOverwriting() { | |
| 120 function stage0() { | |
| 121 this.set({ | |
| 122 'foo' : 'bar', | |
| 123 'baz' : 'qux', | |
| 124 'hello': 'world' | |
| 125 }, stage1.bind(this)); | |
| 126 } | |
| 127 function stage1() { | |
| 128 this.set({ | |
| 129 'foo' : 'otherBar', | |
| 130 'baz' : 'otherQux' | |
| 131 }, stage2.bind(this)); | |
| 132 } | |
| 133 function stage2() { | |
| 134 this.get(null, stage3.bind(this)); | |
| 135 } | |
| 136 function stage3(settings) { | |
| 137 chrome.test.assertEq({ | |
| 138 'foo' : 'otherBar', | |
| 139 'baz' : 'otherQux', | |
| 140 'hello': 'world' | |
| 141 }, settings); | |
| 142 this.set({ | |
| 143 'baz' : 'anotherQux', | |
| 144 'hello': 'otherWorld', | |
| 145 'some' : 'value' | |
| 146 }, stage4.bind(this)); | |
| 147 } | |
| 148 function stage4() { | |
| 149 this.get(null, stage5.bind(this)); | |
| 150 } | |
| 151 function stage5(settings) { | |
| 152 chrome.test.assertEq({ | |
| 153 'foo' : 'otherBar', | |
| 154 'baz' : 'anotherQux', | |
| 155 'hello': 'otherWorld', | |
| 156 'some' : 'value' | |
| 157 }, settings); | |
| 158 this.succeed(); | |
| 159 } | |
| 160 test(stage0); | |
| 161 }, | |
| 162 | |
| 163 function clearWhenEmpty() { | |
| 164 function stage0() { | |
| 165 this.clear(stage1.bind(this)); | |
| 166 } | |
| 167 function stage1() { | |
| 168 this.get(null, stage2.bind(this)); | |
| 169 } | |
| 170 function stage2(settings) { | |
| 171 chrome.test.assertEq({}, settings); | |
| 172 this.succeed(); | |
| 173 } | |
| 174 test(stage0); | |
| 175 }, | |
| 176 | |
| 177 function clearWhenNonempty() { | |
| 178 function stage0() { | |
| 179 this.set({ | |
| 180 'foo' : 'bar', | |
| 181 'baz' : 'qux', | |
| 182 'hello': 'world' | |
| 183 }, stage1.bind(this)); | |
| 184 } | |
| 185 function stage1() { | |
| 186 this.clear(stage2.bind(this)); | |
| 187 } | |
| 188 function stage2() { | |
| 189 this.get(null, stage3.bind(this)); | |
| 190 } | |
| 191 function stage3(settings) { | |
| 192 chrome.test.assertEq({}, settings); | |
| 193 this.succeed(); | |
| 194 } | |
| 195 test(stage0); | |
| 196 }, | |
| 197 | |
| 198 function keysWithDots() { | |
| 199 function stage0() { | |
| 200 this.set({ | |
| 201 'foo.bar' : 'baz', | |
| 202 'one' : {'two': 'three'} | |
| 203 }, stage1.bind(this)); | |
| 204 } | |
| 205 function stage1() { | |
| 206 this.get(['foo.bar', 'one'], stage2.bind(this)); | |
| 207 } | |
| 208 function stage2(settings) { | |
| 209 chrome.test.assertEq({ | |
| 210 'foo.bar' : 'baz', | |
| 211 'one' : {'two': 'three'} | |
| 212 }, settings); | |
| 213 this.get('one.two', stage3.bind(this)); | |
| 214 } | |
| 215 function stage3(settings) { | |
| 216 chrome.test.assertEq({}, settings); | |
| 217 this.remove(['foo.bar', 'one.two'], stage4.bind(this)); | |
| 218 } | |
| 219 function stage4() { | |
| 220 this.get(null, stage5.bind(this)); | |
| 221 } | |
| 222 function stage5(settings) { | |
| 223 chrome.test.assertEq({ | |
| 224 'one' : {'two': 'three'} | |
| 225 }, settings); | |
| 226 this.succeed(); | |
| 227 } | |
| 228 test(stage0); | |
| 229 }, | |
| 230 | |
| 231 function getWithDefaultValues() { | |
| 232 function stage0() { | |
| 233 this.get({ | |
| 234 'foo': 'defaultBar', | |
| 235 'baz': [1, 2, 3] | |
| 236 }, stage1.bind(this)); | |
| 237 } | |
| 238 function stage1(settings) { | |
| 239 chrome.test.assertEq({ | |
| 240 'foo': 'defaultBar', | |
| 241 'baz': [1, 2, 3] | |
| 242 }, settings); | |
| 243 this.get(null, stage2.bind(this)); | |
| 244 } | |
| 245 function stage2(settings) { | |
| 246 chrome.test.assertEq({}, settings); | |
| 247 this.set({'foo': 'bar'}, stage3.bind(this)); | |
| 248 } | |
| 249 function stage3() { | |
| 250 this.get({ | |
| 251 'foo': 'defaultBar', | |
| 252 'baz': [1, 2, 3] | |
| 253 }, stage4.bind(this)); | |
| 254 } | |
| 255 function stage4(settings) { | |
| 256 chrome.test.assertEq({ | |
| 257 'foo': 'bar', | |
| 258 'baz': [1, 2, 3] | |
| 259 }, settings); | |
| 260 this.set({'baz': {}}, stage5.bind(this)); | |
| 261 } | |
| 262 function stage5() { | |
| 263 this.get({ | |
| 264 'foo': 'defaultBar', | |
| 265 'baz': [1, 2, 3] | |
| 266 }, stage6.bind(this)); | |
| 267 } | |
| 268 function stage6(settings) { | |
| 269 chrome.test.assertEq({ | |
| 270 'foo': 'bar', | |
| 271 'baz': {} | |
| 272 }, settings); | |
| 273 this.remove('foo', stage7.bind(this)); | |
| 274 } | |
| 275 function stage7() { | |
| 276 this.get({ | |
| 277 'foo': 'defaultBar', | |
| 278 'baz': [1, 2, 3] | |
| 279 }, stage8.bind(this)); | |
| 280 } | |
| 281 function stage8(settings) { | |
| 282 chrome.test.assertEq({ | |
| 283 'foo': 'defaultBar', | |
| 284 'baz': {} | |
| 285 }, settings); | |
| 286 this.succeed(); | |
| 287 } | |
| 288 test(stage0); | |
| 289 }, | |
| 290 | |
| 291 function throttling() { | |
| 292 // We can only really test one of the namespaces since they will all get | |
| 293 // throttled together. | |
| 294 var api = chrome.experimental.storage.sync; | |
| 295 | |
| 296 // Should get throttled after 1000 calls. | |
| 297 var maxRequests = 1001; | |
| 298 | |
| 299 function next() { | |
| 300 api.clear((--maxRequests > 0) ? next : done); | |
| 301 } | |
| 302 function done() { | |
| 303 chrome.test.assertEq( | |
| 304 "This request exceeds available quota.", | |
| 305 chrome.extension.lastError.message); | |
| 306 chrome.test.succeed(); | |
| 307 } | |
| 308 api.clear(next); | |
| 309 } | |
| 310 ]); | |
| 311 </script> | |
| OLD | NEW |