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

Side by Side Diff: chrome/browser/extensions/api/preference/preference_apitest.cc

Issue 23581015: Reland r223124: Don't clear existing extension-defined preferences and content settings when reload… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years, 3 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 // 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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698