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

Side by Side Diff: chrome/test/data/extensions/api_test/settings/split_incognito/background.html

Issue 8177022: Add onChanged events to the extension settings API, both from sync and between (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 2 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <script> 1 <script>
2 2
3 var settings = chrome.experimental.settings; 3 var settings = chrome.experimental.settings;
4 4 var assertEq = chrome.test.assertEq;
5 // A different "waiting" message depending on whether this background page runs
6 // in incognito mode or not. This is so that the C++ test can differentiate
7 // between messages.
8 5
9 // Returns a function that asserts a result is expected. 6 // Returns a function that asserts a result is expected.
10 function assertResultEq(expected) { 7 function assertResultEq(expected) {
11 return function(actual) { 8 return function(actual) {
12 chrome.test.assertEq(expected, actual); 9 chrome.test.assertEq(expected, actual);
13 }; 10 };
14 } 11 }
15 12
13 // All notifications received.
14 var notifications = [];
15 settings.onChanged.addListener(function(changes) {
16 changes.forEach(function(change) {
17 notifications.push(change);
18 });
19 });
20
16 // The test from C++ runs "actions", where each action is defined here. 21 // The test from C++ runs "actions", where each action is defined here.
17 // This allows the test to be tightly controlled between incognito and 22 // This allows the test to be tightly controlled between incognito and
18 // non-incognito modes. 23 // non-incognito modes.
19 var testActions = { 24 var testActions = {
20 noop: function() { 25 noop: function() {
21 settings.get("", function() {}); 26 settings.get("", function() {});
22 }, 27 },
23 assertEmpty: function() { 28 assertEmpty: function() {
24 settings.get(null, assertResultEq({})); 29 settings.get(null, assertResultEq({}));
25 }, 30 },
26 assertFoobar: function() { 31 assertFoo: function() {
27 settings.get(null, assertResultEq({foo: "bar"})); 32 settings.get(null, assertResultEq({foo: "bar"}));
28 }, 33 },
29 setFoobar: function() { 34 setFoo: function() {
30 settings.set({foo: "bar"}, assertResultEq({foo: "bar"})); 35 settings.set({foo: "bar"}, assertResultEq({foo: "bar"}));
31 }, 36 },
32 removeFoo: function() { 37 removeFoo: function() {
33 settings.remove("foo", assertResultEq(undefined)); 38 settings.remove("foo", assertResultEq(undefined));
34 }, 39 },
35 clear: function() { 40 clear: function() {
36 settings.clear(assertResultEq(undefined)); 41 settings.clear(assertResultEq(undefined));
42 },
43 assertNoNotifications: function() {
44 assertEq([], notifications);
45 },
46 clearNotifications: function() {
47 notifications = [];
48 },
49 assertAddFooNotification: function() {
50 assertEq(1, notifications.length);
51 assertEq("foo", notifications[0].key);
52 assertEq(undefined, notifications[0].oldValue);
53 assertEq("bar", notifications[0].newValue);
54 },
55 assertDeleteFooNotification: function() {
56 assertEq(1, notifications.length);
57 assertEq("foo", notifications[0].key);
58 assertEq("bar", notifications[0].oldValue);
59 assertEq(undefined, notifications[0].newValue);
37 } 60 }
38 }; 61 };
39 62
40 // The only test we run. Runs "actions" (as defined above) until told 63 // The only test we run. Runs "actions" (as defined above) until told
41 // to stop (when the message has isFinalAction set to true). 64 // to stop (when the message has isFinalAction set to true).
42 function testEverything() { 65 function testEverything() {
43 var waiting = chrome.extension.inIncognitoContext ? 66 var waiting = chrome.extension.inIncognitoContext ?
44 "waiting_incognito" : "waiting"; 67 "waiting_incognito" : "waiting";
45 function runTestAction(messageJson) { 68 function runTestAction(messageJson) {
46 var message = JSON.parse(messageJson); 69 var message = JSON.parse(messageJson);
47 testActions[message.action](); 70 testActions[message.action]();
48 if (message.isFinalAction) { 71 if (message.isFinalAction) {
49 chrome.test.succeed(); 72 chrome.test.succeed();
50 return; 73 return;
51 } 74 }
52 chrome.test.sendMessage(waiting, runTestAction); 75 chrome.test.sendMessage(waiting, runTestAction);
53 } 76 }
54 chrome.test.sendMessage(waiting, runTestAction); 77 chrome.test.sendMessage(waiting, runTestAction);
55 } 78 }
56 79
57 chrome.test.runTests([testEverything]); 80 chrome.test.runTests([testEverything]);
58 81
59 </script> 82 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698