OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/prefs/pref_service.h" | 5 #include "base/prefs/pref_service.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "chrome/browser/browser_process.h" |
| 8 #include "chrome/browser/chrome_notification_types.h" |
7 #include "chrome/browser/extensions/extension_apitest.h" | 9 #include "chrome/browser/extensions/extension_apitest.h" |
8 #include "chrome/browser/extensions/extension_test_message_listener.h" | 10 #include "chrome/browser/extensions/extension_test_message_listener.h" |
9 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
10 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
11 #include "chrome/common/chrome_switches.h" | 13 #include "chrome/common/chrome_switches.h" |
12 #include "chrome/common/pref_names.h" | 14 #include "chrome/common/pref_names.h" |
13 #include "chrome/test/base/ui_test_utils.h" | 15 #include "chrome/test/base/ui_test_utils.h" |
| 16 #include "content/public/browser/notification_service.h" |
14 | 17 |
15 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceApi) { | 18 namespace { |
16 PrefService* pref_service = browser()->profile()->GetPrefs(); | |
17 pref_service->SetBoolean(prefs::kAlternateErrorPagesEnabled, false); | |
18 pref_service->SetBoolean(autofill::prefs::kAutofillEnabled, false); | |
19 pref_service->SetBoolean(prefs::kBlockThirdPartyCookies, true); | |
20 pref_service->SetBoolean(prefs::kEnableHyperlinkAuditing, false); | |
21 pref_service->SetBoolean(prefs::kEnableReferrers, false); | |
22 pref_service->SetBoolean(prefs::kEnableTranslate, false); | |
23 pref_service->SetBoolean(prefs::kNetworkPredictionEnabled, false); | |
24 pref_service->SetBoolean(prefs::kSafeBrowsingEnabled, false); | |
25 pref_service->SetBoolean(prefs::kSearchSuggestEnabled, false); | |
26 | 19 |
27 EXPECT_TRUE(RunExtensionTest("preference/standard")) << message_; | 20 void ReleaseBrowserProcessModule() { |
28 | 21 g_browser_process->ReleaseModule(); |
29 const PrefService::Preference* pref = pref_service->FindPreference( | |
30 prefs::kBlockThirdPartyCookies); | |
31 ASSERT_TRUE(pref); | |
32 EXPECT_TRUE(pref->IsExtensionControlled()); | |
33 EXPECT_TRUE(pref_service->GetBoolean(prefs::kAlternateErrorPagesEnabled)); | |
34 EXPECT_TRUE(pref_service->GetBoolean(autofill::prefs::kAutofillEnabled)); | |
35 EXPECT_FALSE(pref_service->GetBoolean(prefs::kBlockThirdPartyCookies)); | |
36 EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableHyperlinkAuditing)); | |
37 EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableReferrers)); | |
38 EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableTranslate)); | |
39 EXPECT_TRUE(pref_service->GetBoolean(prefs::kNetworkPredictionEnabled)); | |
40 EXPECT_TRUE(pref_service->GetBoolean(prefs::kSafeBrowsingEnabled)); | |
41 EXPECT_TRUE(pref_service->GetBoolean(prefs::kSearchSuggestEnabled)); | |
42 } | 22 } |
43 | 23 |
44 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferencePersistentIncognito) { | 24 } // namespace |
45 PrefService* prefs = browser()->profile()->GetPrefs(); | 25 |
| 26 class ExtensionPreferenceApiTest : public ExtensionApiTest { |
| 27 protected: |
| 28 ExtensionPreferenceApiTest() : profile_(NULL) {} |
| 29 |
| 30 void CheckPreferencesSet() { |
| 31 PrefService* prefs = profile_->GetPrefs(); |
| 32 const PrefService::Preference* pref = prefs->FindPreference( |
| 33 prefs::kBlockThirdPartyCookies); |
| 34 ASSERT_TRUE(pref); |
| 35 EXPECT_TRUE(pref->IsExtensionControlled()); |
| 36 EXPECT_TRUE(prefs->GetBoolean(prefs::kAlternateErrorPagesEnabled)); |
| 37 EXPECT_TRUE(prefs->GetBoolean(autofill::prefs::kAutofillEnabled)); |
| 38 EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
| 39 EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing)); |
| 40 EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableReferrers)); |
| 41 EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableTranslate)); |
| 42 EXPECT_TRUE(prefs->GetBoolean(prefs::kNetworkPredictionEnabled)); |
| 43 EXPECT_TRUE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled)); |
| 44 EXPECT_TRUE(prefs->GetBoolean(prefs::kSearchSuggestEnabled)); |
| 45 } |
| 46 |
| 47 void CheckPreferencesCleared() { |
| 48 PrefService* prefs = profile_->GetPrefs(); |
| 49 const PrefService::Preference* pref = prefs->FindPreference( |
| 50 prefs::kBlockThirdPartyCookies); |
| 51 ASSERT_TRUE(pref); |
| 52 EXPECT_FALSE(pref->IsExtensionControlled()); |
| 53 EXPECT_FALSE(prefs->GetBoolean(prefs::kAlternateErrorPagesEnabled)); |
| 54 EXPECT_FALSE(prefs->GetBoolean(autofill::prefs::kAutofillEnabled)); |
| 55 EXPECT_TRUE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
| 56 EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing)); |
| 57 EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableReferrers)); |
| 58 EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableTranslate)); |
| 59 EXPECT_FALSE(prefs->GetBoolean(prefs::kNetworkPredictionEnabled)); |
| 60 EXPECT_FALSE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled)); |
| 61 EXPECT_FALSE(prefs->GetBoolean(prefs::kSearchSuggestEnabled)); |
| 62 } |
| 63 |
| 64 virtual void SetUpOnMainThread() OVERRIDE { |
| 65 ExtensionApiTest::SetUpOnMainThread(); |
| 66 |
| 67 // The browser might get closed later (and therefore be destroyed), so we |
| 68 // save the profile. |
| 69 profile_ = browser()->profile(); |
| 70 |
| 71 // Closing the last browser window also releases a module reference. Make |
| 72 // sure it's not the last one, so the message loop doesn't quit |
| 73 // unexpectedly. |
| 74 g_browser_process->AddRefModule(); |
| 75 } |
| 76 |
| 77 virtual void CleanUpOnMainThread() OVERRIDE { |
| 78 // ReleaseBrowserProcessModule() needs to be called in a message loop, so we |
| 79 // post a task to do it, then run the message loop. |
| 80 base::MessageLoop::current()->PostTask( |
| 81 FROM_HERE, base::Bind(&ReleaseBrowserProcessModule)); |
| 82 content::RunAllPendingInMessageLoop(); |
| 83 |
| 84 ExtensionApiTest::CleanUpOnMainThread(); |
| 85 } |
| 86 |
| 87 Profile* profile_; |
| 88 }; |
| 89 |
| 90 // http://crbug.com/177163 |
| 91 #if defined(OS_WIN) && !defined(NDEBUG) |
| 92 #define MAYBE_Standard DISABLED_Standard |
| 93 #else |
| 94 #define MAYBE_Standard Standard |
| 95 #endif |
| 96 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, MAYBE_Standard) { |
| 97 PrefService* prefs = profile_->GetPrefs(); |
| 98 prefs->SetBoolean(prefs::kAlternateErrorPagesEnabled, false); |
| 99 prefs->SetBoolean(autofill::prefs::kAutofillEnabled, false); |
| 100 prefs->SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 101 prefs->SetBoolean(prefs::kEnableHyperlinkAuditing, false); |
| 102 prefs->SetBoolean(prefs::kEnableReferrers, false); |
| 103 prefs->SetBoolean(prefs::kEnableTranslate, false); |
| 104 prefs->SetBoolean(prefs::kNetworkPredictionEnabled, false); |
| 105 prefs->SetBoolean(prefs::kSafeBrowsingEnabled, false); |
| 106 prefs->SetBoolean(prefs::kSearchSuggestEnabled, false); |
| 107 |
| 108 const char kExtensionPath[] = "preference/standard"; |
| 109 |
| 110 EXPECT_TRUE(RunExtensionSubtest(kExtensionPath, "test.html")) << message_; |
| 111 CheckPreferencesSet(); |
| 112 |
| 113 // The settings should not be reset when the extension is reloaded. |
| 114 ReloadExtension(last_loaded_extension_id_); |
| 115 CheckPreferencesSet(); |
| 116 |
| 117 // Uninstalling and installing the extension (without running the test that |
| 118 // calls the extension API) should clear the settings. |
| 119 content::WindowedNotificationObserver observer( |
| 120 chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
| 121 content::NotificationService::AllSources()); |
| 122 UninstallExtension(last_loaded_extension_id_); |
| 123 observer.Wait(); |
| 124 CheckPreferencesCleared(); |
| 125 |
| 126 LoadExtension(test_data_dir_.AppendASCII(kExtensionPath)); |
| 127 CheckPreferencesCleared(); |
| 128 } |
| 129 |
| 130 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, PersistentIncognito) { |
| 131 PrefService* prefs = profile_->GetPrefs(); |
46 prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); | 132 prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); |
47 | 133 |
48 EXPECT_TRUE( | 134 EXPECT_TRUE( |
49 RunExtensionTestIncognito("preference/persistent_incognito")) << | 135 RunExtensionTestIncognito("preference/persistent_incognito")) << |
50 message_; | 136 message_; |
51 | 137 |
52 // Setting an incognito preference should not create an incognito profile. | 138 // Setting an incognito preference should not create an incognito profile. |
53 EXPECT_FALSE(browser()->profile()->HasOffTheRecordProfile()); | 139 EXPECT_FALSE(profile_->HasOffTheRecordProfile()); |
54 | 140 |
55 PrefService* otr_prefs = | 141 PrefService* otr_prefs = profile_->GetOffTheRecordProfile()->GetPrefs(); |
56 browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); | |
57 const PrefService::Preference* pref = | 142 const PrefService::Preference* pref = |
58 otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); | 143 otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); |
59 ASSERT_TRUE(pref); | 144 ASSERT_TRUE(pref); |
60 EXPECT_TRUE(pref->IsExtensionControlled()); | 145 EXPECT_TRUE(pref->IsExtensionControlled()); |
61 EXPECT_TRUE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); | 146 EXPECT_TRUE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
62 | 147 |
63 pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); | 148 pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); |
64 ASSERT_TRUE(pref); | 149 ASSERT_TRUE(pref); |
65 EXPECT_FALSE(pref->IsExtensionControlled()); | 150 EXPECT_FALSE(pref->IsExtensionControlled()); |
66 EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); | 151 EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
67 } | 152 } |
68 | 153 |
69 // Flakily times out: http://crbug.com/106144 | 154 // Flakily times out: http://crbug.com/106144 |
70 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_PreferenceIncognitoDisabled) { | 155 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, DISABLED_IncognitoDisabled) { |
71 EXPECT_FALSE(RunExtensionTest("preference/persistent_incognito")); | 156 EXPECT_FALSE(RunExtensionTest("preference/persistent_incognito")); |
72 } | 157 } |
73 | 158 |
74 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceSessionOnlyIncognito) { | 159 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, SessionOnlyIncognito) { |
75 PrefService* prefs = browser()->profile()->GetPrefs(); | 160 PrefService* prefs = profile_->GetPrefs(); |
76 prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); | 161 prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); |
77 | 162 |
78 EXPECT_TRUE( | 163 EXPECT_TRUE( |
79 RunExtensionTestIncognito("preference/session_only_incognito")) << | 164 RunExtensionTestIncognito("preference/session_only_incognito")) << |
80 message_; | 165 message_; |
81 | 166 |
82 EXPECT_TRUE(browser()->profile()->HasOffTheRecordProfile()); | 167 EXPECT_TRUE(profile_->HasOffTheRecordProfile()); |
83 | 168 |
84 PrefService* otr_prefs = | 169 PrefService* otr_prefs = profile_->GetOffTheRecordProfile()->GetPrefs(); |
85 browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); | |
86 const PrefService::Preference* pref = | 170 const PrefService::Preference* pref = |
87 otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); | 171 otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); |
88 ASSERT_TRUE(pref); | 172 ASSERT_TRUE(pref); |
89 EXPECT_TRUE(pref->IsExtensionControlled()); | 173 EXPECT_TRUE(pref->IsExtensionControlled()); |
90 EXPECT_FALSE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); | 174 EXPECT_FALSE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
91 | 175 |
92 pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); | 176 pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); |
93 ASSERT_TRUE(pref); | 177 ASSERT_TRUE(pref); |
94 EXPECT_FALSE(pref->IsExtensionControlled()); | 178 EXPECT_FALSE(pref->IsExtensionControlled()); |
95 EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); | 179 EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
96 } | 180 } |
97 | 181 |
98 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceClear) { | 182 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, Clear) { |
99 PrefService* pref_service = browser()->profile()->GetPrefs(); | 183 PrefService* prefs = profile_->GetPrefs(); |
100 pref_service->SetBoolean(prefs::kBlockThirdPartyCookies, true); | 184 prefs->SetBoolean(prefs::kBlockThirdPartyCookies, true); |
101 | 185 |
102 EXPECT_TRUE(RunExtensionTest("preference/clear")) << message_; | 186 EXPECT_TRUE(RunExtensionTest("preference/clear")) << message_; |
103 | 187 |
104 const PrefService::Preference* pref = pref_service->FindPreference( | 188 const PrefService::Preference* pref = prefs->FindPreference( |
105 prefs::kBlockThirdPartyCookies); | 189 prefs::kBlockThirdPartyCookies); |
106 ASSERT_TRUE(pref); | 190 ASSERT_TRUE(pref); |
107 EXPECT_FALSE(pref->IsExtensionControlled()); | 191 EXPECT_FALSE(pref->IsExtensionControlled()); |
108 EXPECT_EQ(true, pref_service->GetBoolean(prefs::kBlockThirdPartyCookies)); | 192 EXPECT_EQ(true, prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); |
109 } | 193 } |
110 | 194 |
111 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceOnChange) { | 195 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, OnChange) { |
112 EXPECT_TRUE(RunExtensionTestIncognito("preference/onchange")) << | 196 EXPECT_TRUE(RunExtensionTestIncognito("preference/onchange")) << |
113 message_; | 197 message_; |
114 } | 198 } |
115 | 199 |
116 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceOnChangeSplit) { | 200 IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, OnChangeSplit) { |
117 ResultCatcher catcher; | 201 ResultCatcher catcher; |
118 catcher.RestrictToProfile(browser()->profile()); | 202 catcher.RestrictToProfile(profile_); |
119 ResultCatcher catcher_incognito; | 203 ResultCatcher catcher_incognito; |
120 catcher_incognito.RestrictToProfile( | 204 catcher_incognito.RestrictToProfile(profile_->GetOffTheRecordProfile()); |
121 browser()->profile()->GetOffTheRecordProfile()); | |
122 | 205 |
123 // Open an incognito window. | 206 // Open an incognito window. |
124 ui_test_utils::OpenURLOffTheRecord(browser()->profile(), | 207 ui_test_utils::OpenURLOffTheRecord(profile_, GURL("chrome://newtab/")); |
125 GURL("chrome://newtab/")); | |
126 | 208 |
127 // changeDefault listeners. | 209 // changeDefault listeners. |
128 ExtensionTestMessageListener listener1("changeDefault regular ready", true); | 210 ExtensionTestMessageListener listener1("changeDefault regular ready", true); |
129 ExtensionTestMessageListener listener_incognito1( | 211 ExtensionTestMessageListener listener_incognito1( |
130 "changeDefault incognito ready", true); | 212 "changeDefault incognito ready", true); |
131 | 213 |
132 // changeIncognitoOnly listeners. | 214 // changeIncognitoOnly listeners. |
133 ExtensionTestMessageListener listener2( | 215 ExtensionTestMessageListener listener2( |
134 "changeIncognitoOnly regular ready", true); | 216 "changeIncognitoOnly regular ready", true); |
135 ExtensionTestMessageListener listener_incognito2( | 217 ExtensionTestMessageListener listener_incognito2( |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 | 309 |
228 // Test 6 - clearDefault | 310 // Test 6 - clearDefault |
229 EXPECT_TRUE(listener10.WaitUntilSatisfied()); // Regular ready | 311 EXPECT_TRUE(listener10.WaitUntilSatisfied()); // Regular ready |
230 EXPECT_TRUE(listener_incognito10.WaitUntilSatisfied()); // Incognito ready | 312 EXPECT_TRUE(listener_incognito10.WaitUntilSatisfied()); // Incognito ready |
231 listener10.Reply("ok"); | 313 listener10.Reply("ok"); |
232 listener_incognito10.Reply("ok"); | 314 listener_incognito10.Reply("ok"); |
233 | 315 |
234 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 316 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
235 EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message(); | 317 EXPECT_TRUE(catcher_incognito.GetNextResult()) << catcher.message(); |
236 } | 318 } |
OLD | NEW |