Index: chrome/test/data/extensions/api_test/preference/onchange/test.js |
=================================================================== |
--- chrome/test/data/extensions/api_test/preference/onchange/test.js (revision 0) |
+++ chrome/test/data/extensions/api_test/preference/onchange/test.js (revision 0) |
@@ -0,0 +1,96 @@ |
+// 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. |
+ |
+// Content settings API test |
+// Run with browser_tests --gtest_filter=ExtensionApiTest.PreferenceOnChange |
+ |
+// Listen until |event| has fired with all of the values in |expected|. |
+function listenUntil(event, expected) { |
+ var done = chrome.test.listenForever(event, function(value) { |
+ for (var i = 0; i < expected.length; i++) { |
+ if (chrome.test.checkDeepEq(expected[i], value)) { |
+ expected.splice(i, 1); |
+ if (expected.length == 0) |
+ done(); |
+ return; |
+ } |
+ } |
+ chrome.test.fail("Unexpected event: " + JSON.stringify(value)); |
+ }); |
+} |
+ |
+var pw = chrome.experimental.privacy.websites; |
+chrome.test.runTests([ |
+ function changeDefault() { |
+ // Changing the regular settings when no incognito-specific settings are |
+ // defined should fire two events. |
+ listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ |
+ 'value': false, |
+ 'levelOfControl': 'controlled_by_this_extension' |
+ }, |
+ { |
+ 'value': false, |
+ 'incognitoSpecific': false, |
+ 'levelOfControl': 'controlled_by_this_extension' |
+ }]); |
+ pw.thirdPartyCookiesAllowed.set({ |
+ 'value':false |
+ }, chrome.test.callbackPass()); |
+ }, |
+ function changeIncognitoOnly() { |
+ listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ |
+ 'value': true, |
+ 'incognitoSpecific': true, |
+ 'levelOfControl': 'controlled_by_this_extension' |
+ }]); |
+ pw.thirdPartyCookiesAllowed.set({ |
+ 'value': true, |
+ 'scope': 'incognito_persistent' |
+ }, chrome.test.callbackPass()); |
+ }, |
+ function changeDefaultOnly() { |
+ listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ |
+ 'value': true, |
+ 'levelOfControl': 'controlled_by_this_extension' |
+ }]); |
+ pw.thirdPartyCookiesAllowed.set({ |
+ 'value': true |
+ }, chrome.test.callbackPass()); |
+ }, |
+ function changeIncognitoOnlyBack() { |
+ // Change the incognito setting back to false so that we get an event when |
+ // clearing the value. |
+ listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ |
+ 'value': false, |
+ 'incognitoSpecific': true, |
+ 'levelOfControl': 'controlled_by_this_extension' |
+ }]); |
+ pw.thirdPartyCookiesAllowed.set({ |
+ 'value': false, |
+ 'scope': 'incognito_persistent' |
+ }, chrome.test.callbackPass()); |
+ }, |
+ function clearIncognito() { |
+ listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ |
+ 'value': true, |
+ 'incognitoSpecific': false, |
+ 'levelOfControl': 'controlled_by_this_extension' |
+ }]); |
+ pw.thirdPartyCookiesAllowed.clear({ |
+ 'scope': 'incognito_persistent' |
+ }, chrome.test.callbackPass()); |
+ }, |
+ function clearDefault() { |
+ listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ |
+ 'value': true, |
+ 'levelOfControl': 'controllable_by_this_extension' |
+ }, |
+ { |
+ 'value': true, |
+ 'incognitoSpecific': false, |
+ 'levelOfControl': 'controllable_by_this_extension' |
+ }]); |
+ pw.thirdPartyCookiesAllowed.clear({}, chrome.test.callbackPass()); |
+ } |
+]); |