Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9224)

Unified Diff: chrome/test/data/extensions/api_test/settings/simple_test/background.js

Issue 8762014: Move another set of extension tests to manifest_version 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/settings/simple_test/background.js
===================================================================
--- chrome/test/data/extensions/api_test/settings/simple_test/background.js (revision 0)
+++ chrome/test/data/extensions/api_test/settings/simple_test/background.js (revision 0)
@@ -0,0 +1,313 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+function test(stage0) {
+ var apis = [
+ chrome.experimental.storage.sync,
+ chrome.experimental.storage.local
+ ];
+ apis.forEach(function(api) {
+ api.succeed = chrome.test.callbackPass(api.clear.bind(api));
+ stage0.call(api);
+ });
+}
+
+chrome.test.runTests([
+ function getWhenEmpty() {
+ function stage0() {
+ this.get('foo', stage1.bind(this));
+ }
+ function stage1(settings) {
+ chrome.test.assertEq({}, settings);
+ this.get(['foo', 'bar'], stage2.bind(this));
+ }
+ function stage2(settings) {
+ chrome.test.assertEq({}, settings);
+ this.get(undefined, stage3.bind(this));
+ }
+ function stage3(settings) {
+ chrome.test.assertEq({}, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function getWhenNonempty() {
+ function stage0() {
+ this.set({
+ 'foo' : 'bar',
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, stage1.bind(this));
+ }
+ function stage1() {
+ this.get(['foo', 'baz'], stage2.bind(this));
+ }
+ function stage2(settings) {
+ chrome.test.assertEq({
+ 'foo': 'bar',
+ 'baz': 'qux'
+ }, settings);
+ this.get(['nothing', 'baz', 'hello', 'ignore'], stage3.bind(this));
+ }
+ function stage3(settings) {
+ chrome.test.assertEq({
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, settings);
+ this.get(null, stage4.bind(this));
+ }
+ function stage4(settings) {
+ chrome.test.assertEq({
+ 'foo' : 'bar',
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function removeWhenEmpty() {
+ function stage0() {
+ this.remove('foo', stage1.bind(this));
+ }
+ function stage1() {
+ this.remove(['foo', 'bar'], this.succeed);
+ }
+ test(stage0);
+ },
+
+ function removeWhenNonempty() {
+ function stage0() {
+ this.set({
+ 'foo' : 'bar',
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, stage1.bind(this));
+ }
+ function stage1() {
+ this.remove('foo', stage2.bind(this));
+ }
+ function stage2() {
+ this.get(null, stage3.bind(this));
+ }
+ function stage3(settings) {
+ chrome.test.assertEq({
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, settings);
+ this.remove(['baz', 'nothing'], stage4.bind(this));
+ }
+ function stage4() {
+ this.get(null, stage5.bind(this));
+ }
+ function stage5(settings) {
+ chrome.test.assertEq({
+ 'hello': 'world'
+ }, settings);
+ this.remove('hello', stage6.bind(this));
+ }
+ function stage6() {
+ this.get(null, stage7.bind(this));
+ }
+ function stage7(settings) {
+ chrome.test.assertEq({}, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function setWhenOverwriting() {
+ function stage0() {
+ this.set({
+ 'foo' : 'bar',
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, stage1.bind(this));
+ }
+ function stage1() {
+ this.set({
+ 'foo' : 'otherBar',
+ 'baz' : 'otherQux'
+ }, stage2.bind(this));
+ }
+ function stage2() {
+ this.get(null, stage3.bind(this));
+ }
+ function stage3(settings) {
+ chrome.test.assertEq({
+ 'foo' : 'otherBar',
+ 'baz' : 'otherQux',
+ 'hello': 'world'
+ }, settings);
+ this.set({
+ 'baz' : 'anotherQux',
+ 'hello': 'otherWorld',
+ 'some' : 'value'
+ }, stage4.bind(this));
+ }
+ function stage4() {
+ this.get(null, stage5.bind(this));
+ }
+ function stage5(settings) {
+ chrome.test.assertEq({
+ 'foo' : 'otherBar',
+ 'baz' : 'anotherQux',
+ 'hello': 'otherWorld',
+ 'some' : 'value'
+ }, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function clearWhenEmpty() {
+ function stage0() {
+ this.clear(stage1.bind(this));
+ }
+ function stage1() {
+ this.get(null, stage2.bind(this));
+ }
+ function stage2(settings) {
+ chrome.test.assertEq({}, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function clearWhenNonempty() {
+ function stage0() {
+ this.set({
+ 'foo' : 'bar',
+ 'baz' : 'qux',
+ 'hello': 'world'
+ }, stage1.bind(this));
+ }
+ function stage1() {
+ this.clear(stage2.bind(this));
+ }
+ function stage2() {
+ this.get(null, stage3.bind(this));
+ }
+ function stage3(settings) {
+ chrome.test.assertEq({}, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function keysWithDots() {
+ function stage0() {
+ this.set({
+ 'foo.bar' : 'baz',
+ 'one' : {'two': 'three'}
+ }, stage1.bind(this));
+ }
+ function stage1() {
+ this.get(['foo.bar', 'one'], stage2.bind(this));
+ }
+ function stage2(settings) {
+ chrome.test.assertEq({
+ 'foo.bar' : 'baz',
+ 'one' : {'two': 'three'}
+ }, settings);
+ this.get('one.two', stage3.bind(this));
+ }
+ function stage3(settings) {
+ chrome.test.assertEq({}, settings);
+ this.remove(['foo.bar', 'one.two'], stage4.bind(this));
+ }
+ function stage4() {
+ this.get(null, stage5.bind(this));
+ }
+ function stage5(settings) {
+ chrome.test.assertEq({
+ 'one' : {'two': 'three'}
+ }, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function getWithDefaultValues() {
+ function stage0() {
+ this.get({
+ 'foo': 'defaultBar',
+ 'baz': [1, 2, 3]
+ }, stage1.bind(this));
+ }
+ function stage1(settings) {
+ chrome.test.assertEq({
+ 'foo': 'defaultBar',
+ 'baz': [1, 2, 3]
+ }, settings);
+ this.get(null, stage2.bind(this));
+ }
+ function stage2(settings) {
+ chrome.test.assertEq({}, settings);
+ this.set({'foo': 'bar'}, stage3.bind(this));
+ }
+ function stage3() {
+ this.get({
+ 'foo': 'defaultBar',
+ 'baz': [1, 2, 3]
+ }, stage4.bind(this));
+ }
+ function stage4(settings) {
+ chrome.test.assertEq({
+ 'foo': 'bar',
+ 'baz': [1, 2, 3]
+ }, settings);
+ this.set({'baz': {}}, stage5.bind(this));
+ }
+ function stage5() {
+ this.get({
+ 'foo': 'defaultBar',
+ 'baz': [1, 2, 3]
+ }, stage6.bind(this));
+ }
+ function stage6(settings) {
+ chrome.test.assertEq({
+ 'foo': 'bar',
+ 'baz': {}
+ }, settings);
+ this.remove('foo', stage7.bind(this));
+ }
+ function stage7() {
+ this.get({
+ 'foo': 'defaultBar',
+ 'baz': [1, 2, 3]
+ }, stage8.bind(this));
+ }
+ function stage8(settings) {
+ chrome.test.assertEq({
+ 'foo': 'defaultBar',
+ 'baz': {}
+ }, settings);
+ this.succeed();
+ }
+ test(stage0);
+ },
+
+ function throttling() {
+ // We can only really test one of the namespaces since they will all get
+ // throttled together.
+ var api = chrome.experimental.storage.sync;
+
+ // Should get throttled after 1000 calls.
+ var maxRequests = 1001;
+
+ function next() {
+ api.clear((--maxRequests > 0) ? next : done);
+ }
+ function done() {
+ chrome.test.assertEq(
+ "This request exceeds available quota.",
+ chrome.extension.lastError.message);
+ chrome.test.succeed();
+ }
+ api.clear(next);
+ }
+]);

Powered by Google App Engine
This is Rietveld 408576698