| Index: chrome/browser/extensions/extension_preference_apitest.cc
|
| diff --git a/chrome/browser/extensions/extension_preference_apitest.cc b/chrome/browser/extensions/extension_preference_apitest.cc
|
| index 59ffdcd09ed3d70a2a5907d369f35ef8c19abbdc..8b63e9cd0ac174c3a5dee9fdbd989ce8dc24c231 100644
|
| --- a/chrome/browser/extensions/extension_preference_apitest.cc
|
| +++ b/chrome/browser/extensions/extension_preference_apitest.cc
|
| @@ -4,11 +4,13 @@
|
|
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/extensions/extension_apitest.h"
|
| +#include "chrome/browser/extensions/extension_test_message_listener.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| +#include "chrome/test/base/ui_test_utils.h"
|
| #include "webkit/plugins/npapi/mock_plugin_list.h"
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceApi) {
|
| @@ -110,9 +112,128 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceClear) {
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceOnChange) {
|
| - PrefService* prefs = browser()->profile()->GetPrefs();
|
| - prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false);
|
| -
|
| EXPECT_TRUE(RunExtensionTestIncognito("preference/onchange")) <<
|
| message_;
|
| }
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceOnChangeSplit) {
|
| + ResultCatcher catcher;
|
| + catcher.RestrictToProfile(browser()->profile());
|
| + ResultCatcher catcher_incognito;
|
| + catcher_incognito.RestrictToProfile(
|
| + browser()->profile()->GetOffTheRecordProfile());
|
| +
|
| + // Open an incognito window.
|
| + ui_test_utils::OpenURLOffTheRecord(browser()->profile(),
|
| + GURL("chrome://newtab/"));
|
| +
|
| + // changeDefault listeners.
|
| + ExtensionTestMessageListener listener1("changeDefault regular ready", true);
|
| + ExtensionTestMessageListener listener_incognito1(
|
| + "changeDefault incognito ready", true);
|
| +
|
| + // changeIncognitoOnly listeners.
|
| + ExtensionTestMessageListener listener2(
|
| + "changeIncognitoOnly regular ready", true);
|
| + ExtensionTestMessageListener listener_incognito2(
|
| + "changeIncognitoOnly incognito ready", true);
|
| + ExtensionTestMessageListener listener3(
|
| + "changeIncognitoOnly regular listening", true);
|
| + ExtensionTestMessageListener listener_incognito3(
|
| + "changeIncognitoOnly incognito pref set", false);
|
| +
|
| + // changeDefaultOnly listeners.
|
| + ExtensionTestMessageListener listener4(
|
| + "changeDefaultOnly regular ready", true);
|
| + ExtensionTestMessageListener listener_incognito4(
|
| + "changeDefaultOnly incognito ready", true);
|
| + ExtensionTestMessageListener listener5(
|
| + "changeDefaultOnly regular pref set", false);
|
| + ExtensionTestMessageListener listener_incognito5(
|
| + "changeDefaultOnly incognito listening", true);
|
| +
|
| + // changeIncognitoOnlyBack listeners.
|
| + ExtensionTestMessageListener listener6(
|
| + "changeIncognitoOnlyBack regular ready", true);
|
| + ExtensionTestMessageListener listener_incognito6(
|
| + "changeIncognitoOnlyBack incognito ready", true);
|
| + ExtensionTestMessageListener listener7(
|
| + "changeIncognitoOnlyBack regular listening", true);
|
| + ExtensionTestMessageListener listener_incognito7(
|
| + "changeIncognitoOnlyBack incognito pref set", false);
|
| +
|
| + // clearIncognito listeners.
|
| + ExtensionTestMessageListener listener8(
|
| + "clearIncognito regular ready", true);
|
| + ExtensionTestMessageListener listener_incognito8(
|
| + "clearIncognito incognito ready", true);
|
| + ExtensionTestMessageListener listener9(
|
| + "clearIncognito regular listening", true);
|
| + ExtensionTestMessageListener listener_incognito9(
|
| + "clearIncognito incognito pref cleared", false);
|
| +
|
| + // clearDefault listeners.
|
| + ExtensionTestMessageListener listener10(
|
| + "clearDefault regular ready", true);
|
| + ExtensionTestMessageListener listener_incognito10(
|
| + "clearDefault incognito ready", true);
|
| +
|
| + FilePath extension_data_dir =
|
| + test_data_dir_.AppendASCII("preference").AppendASCII("onchange_split");
|
| + ASSERT_TRUE(LoadExtensionIncognito(extension_data_dir));
|
| +
|
| + // Test 1 - changeDefault
|
| + EXPECT_TRUE(listener1.WaitUntilSatisfied()); // Regular ready
|
| + EXPECT_TRUE(listener_incognito1.WaitUntilSatisfied()); // Incognito ready
|
| + listener1.Reply("ok");
|
| + listener_incognito1.Reply("ok");
|
| +
|
| + // Test 2 - changeIncognitoOnly
|
| + EXPECT_TRUE(listener2.WaitUntilSatisfied()); // Regular ready
|
| + EXPECT_TRUE(listener_incognito2.WaitUntilSatisfied()); // Incognito ready
|
| + EXPECT_TRUE(listener3.WaitUntilSatisfied()); // Regular listening
|
| + listener2.Reply("ok");
|
| + listener_incognito2.Reply("ok");
|
| + // Incognito preference set -- notify the regular listener
|
| + EXPECT_TRUE(listener_incognito3.WaitUntilSatisfied());
|
| + listener3.Reply("ok");
|
| +
|
| + // Test 3 - changeDefaultOnly
|
| + EXPECT_TRUE(listener4.WaitUntilSatisfied()); // Regular ready
|
| + EXPECT_TRUE(listener_incognito4.WaitUntilSatisfied()); // Incognito ready
|
| + EXPECT_TRUE(listener_incognito5.WaitUntilSatisfied()); // Incognito listening
|
| + listener4.Reply("ok");
|
| + listener_incognito4.Reply("ok");
|
| + // Regular preference set - notify the incognito listener
|
| + EXPECT_TRUE(listener5.WaitUntilSatisfied());
|
| + listener_incognito5.Reply("ok");
|
| +
|
| + // Test 4 - changeIncognitoOnlyBack
|
| + EXPECT_TRUE(listener6.WaitUntilSatisfied()); // Regular ready
|
| + EXPECT_TRUE(listener_incognito6.WaitUntilSatisfied()); // Incognito ready
|
| + EXPECT_TRUE(listener7.WaitUntilSatisfied()); // Regular listening
|
| + listener6.Reply("ok");
|
| + listener_incognito6.Reply("ok");
|
| + // Incognito preference set -- notify the regular listener
|
| + EXPECT_TRUE(listener_incognito7.WaitUntilSatisfied());
|
| + listener7.Reply("ok");
|
| +
|
| + // Test 5 - clearIncognito
|
| + EXPECT_TRUE(listener8.WaitUntilSatisfied()); // Regular ready
|
| + EXPECT_TRUE(listener_incognito8.WaitUntilSatisfied()); // Incognito ready
|
| + EXPECT_TRUE(listener9.WaitUntilSatisfied()); // Regular listening
|
| + listener8.Reply("ok");
|
| + listener_incognito8.Reply("ok");
|
| + // Incognito preference cleared -- notify the regular listener
|
| + EXPECT_TRUE(listener_incognito9.WaitUntilSatisfied());
|
| + listener9.Reply("ok");
|
| +
|
| + // Test 6 - clearDefault
|
| + EXPECT_TRUE(listener10.WaitUntilSatisfied()); // Regular ready
|
| + EXPECT_TRUE(listener_incognito10.WaitUntilSatisfied()); // Incognito ready
|
| + listener10.Reply("ok");
|
| + listener_incognito10.Reply("ok");
|
| +
|
| + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
|
| + EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message();
|
| +}
|
|
|