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