 Chromium Code Reviews
 Chromium Code Reviews Issue 6596044:
  Add onChange event to preference extension APIs.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 6596044:
  Add onChange event to preference extension APIs.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: chrome/test/data/extensions/api_test/content_settings/onchange/test.html | 
| diff --git a/chrome/test/data/extensions/api_test/content_settings/onchange/test.html b/chrome/test/data/extensions/api_test/content_settings/onchange/test.html | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..08c0c7763f8d71876d5f809becc89f306c482890 | 
| --- /dev/null | 
| +++ b/chrome/test/data/extensions/api_test/content_settings/onchange/test.html | 
| @@ -0,0 +1,93 @@ | 
| +<script> | 
| +// Content settings API test | 
| +// Run with browser_tests --gtest_filter=ExtensionApiTest.ContentSettingsOnChange | 
| + | 
| +// Listen until |event| has fired with all of the values in |expected|. | 
| +function listenUntil(event, expected) { | 
| 
battre
2011/03/10 13:07:28
add a comment that listenForever subscribes to bot
 
Bernhard Bauer
2011/03/10 14:51:15
I think we already explain that sufficiently below
 | 
| + 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 cs = chrome.experimental.contentSettings; | 
| +chrome.test.runTests([ | 
| + function changeDefault() { | 
| 
battre
2011/03/10 13:07:28
add comment
// Setting the value for the first tim
 
Bernhard Bauer
2011/03/10 14:51:15
Done.
 | 
| + listenUntil(cs.misc.blockThirdPartyCookies.onChange, [{ | 
| + 'value': true, | 
| + 'levelOfControl': 'ControlledByThisExtension' | 
| + }, | 
| + { | 
| + 'value': true, | 
| + 'incognitoSpecific': false, | 
| + 'levelOfControl': 'ControlledByThisExtension' | 
| + }]); | 
| + cs.misc.blockThirdPartyCookies.set({ | 
| + 'value':true | 
| + }, chrome.test.callbackPass()); | 
| + }, | 
| + function changeIncognitoOnly() { | 
| + listenUntil(cs.misc.blockThirdPartyCookies.onChange, [{ | 
| + 'value': false, | 
| + 'incognitoSpecific': true, | 
| + 'levelOfControl': 'ControlledByThisExtension' | 
| + }]); | 
| + cs.misc.blockThirdPartyCookies.set({ | 
| + 'value': false, | 
| + 'incognito': true | 
| + }, chrome.test.callbackPass()); | 
| + }, | 
| + function changeDefaultOnly() { | 
| + listenUntil(cs.misc.blockThirdPartyCookies.onChange, [{ | 
| + 'value': false, | 
| + 'levelOfControl': 'ControlledByThisExtension' | 
| + }]); | 
| + cs.misc.blockThirdPartyCookies.set({ | 
| + 'value': false | 
| + }, chrome.test.callbackPass()); | 
| + }, | 
| + function changeIncognitoOnlyBack() { | 
| + // Change the incognito setting back to true so that we get an event when | 
| + // clearing the value. | 
| + listenUntil(cs.misc.blockThirdPartyCookies.onChange, [{ | 
| + 'value': true, | 
| + 'incognitoSpecific': true, | 
| + 'levelOfControl': 'ControlledByThisExtension' | 
| + }]); | 
| + cs.misc.blockThirdPartyCookies.set({ | 
| + 'value': true, | 
| + 'incognito': true | 
| + }, chrome.test.callbackPass()); | 
| + }, | 
| + function clearIncognito() { | 
| + listenUntil(cs.misc.blockThirdPartyCookies.onChange, [{ | 
| + 'value': false, | 
| + 'incognitoSpecific': false, | 
| + 'levelOfControl': 'ControlledByThisExtension' | 
| + }]); | 
| + cs.misc.blockThirdPartyCookies.clear({ | 
| + 'incognito': true | 
| + }, chrome.test.callbackPass()); | 
| + }, | 
| + function clearDefault() { | 
| + listenUntil(cs.misc.blockThirdPartyCookies.onChange, [{ | 
| + 'value': false, | 
| + 'levelOfControl': 'ControllableByThisExtension' | 
| + }, | 
| + { | 
| + 'value': false, | 
| + 'incognitoSpecific': false, | 
| + 'levelOfControl': 'ControllableByThisExtension' | 
| + }]); | 
| + cs.misc.blockThirdPartyCookies.clear({}, chrome.test.callbackPass()); | 
| + } | 
| +]); | 
| + | 
| +</script> |