OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/callback.h" | 5 #include "base/callback.h" |
6 #include "base/scoped_vector.h" | 6 #include "base/scoped_vector.h" |
7 #include "base/string_split.h" | 7 #include "base/string_split.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/ref_counted.h" | 9 #include "base/ref_counted.h" |
10 #include "base/thread.h" | 10 #include "base/thread.h" |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 // Set the managed preferences for the default search provider and trigger | 187 // Set the managed preferences for the default search provider and trigger |
188 // notification. | 188 // notification. |
189 void SetManagedDefaultSearchPreferences(bool enabled, | 189 void SetManagedDefaultSearchPreferences(bool enabled, |
190 const char* name, | 190 const char* name, |
191 const char* search_url, | 191 const char* search_url, |
192 const char* suggest_url, | 192 const char* suggest_url, |
193 const char* icon_url, | 193 const char* icon_url, |
194 const char* encodings, | 194 const char* encodings, |
195 const char* keyword) { | 195 const char* keyword) { |
196 TestingPrefService* service = profile()->GetTestingPrefService(); | 196 TestingPrefService* service = profile()->GetTestingPrefService(); |
197 service->SetManagedPrefWithoutNotification( | 197 service->SetManagedPref( |
198 prefs::kDefaultSearchProviderEnabled, | 198 prefs::kDefaultSearchProviderEnabled, |
199 Value::CreateBooleanValue(enabled)); | 199 Value::CreateBooleanValue(enabled)); |
200 service->SetManagedPrefWithoutNotification( | 200 service->SetManagedPref( |
201 prefs::kDefaultSearchProviderName, | 201 prefs::kDefaultSearchProviderName, |
202 Value::CreateStringValue(name)); | 202 Value::CreateStringValue(name)); |
203 service->SetManagedPrefWithoutNotification( | 203 service->SetManagedPref( |
204 prefs::kDefaultSearchProviderSearchURL, | 204 prefs::kDefaultSearchProviderSearchURL, |
205 Value::CreateStringValue(search_url)); | 205 Value::CreateStringValue(search_url)); |
206 service->SetManagedPrefWithoutNotification( | 206 service->SetManagedPref( |
207 prefs::kDefaultSearchProviderSuggestURL, | 207 prefs::kDefaultSearchProviderSuggestURL, |
208 Value::CreateStringValue(suggest_url)); | 208 Value::CreateStringValue(suggest_url)); |
209 service->SetManagedPrefWithoutNotification( | 209 service->SetManagedPref( |
210 prefs::kDefaultSearchProviderIconURL, | 210 prefs::kDefaultSearchProviderIconURL, |
211 Value::CreateStringValue(icon_url)); | 211 Value::CreateStringValue(icon_url)); |
212 service->SetManagedPrefWithoutNotification( | 212 service->SetManagedPref( |
213 prefs::kDefaultSearchProviderEncodings, | 213 prefs::kDefaultSearchProviderEncodings, |
214 Value::CreateStringValue(encodings)); | 214 Value::CreateStringValue(encodings)); |
215 service->SetManagedPrefWithoutNotification( | 215 service->SetManagedPref( |
216 prefs::kDefaultSearchProviderKeyword, | 216 prefs::kDefaultSearchProviderKeyword, |
217 Value::CreateStringValue(keyword)); | 217 Value::CreateStringValue(keyword)); |
218 // Clear the IDs that are not specified via policy. | |
219 service->SetManagedPrefWithoutNotification( | |
220 prefs::kDefaultSearchProviderID, new StringValue("")); | |
221 service->SetManagedPrefWithoutNotification( | |
222 prefs::kDefaultSearchProviderPrepopulateID, new StringValue("")); | |
223 NotifyManagedPrefsHaveChanged(); | |
224 } | 218 } |
225 | 219 |
226 // Remove all the managed preferences for the default search provider and | 220 // Remove all the managed preferences for the default search provider and |
227 // trigger notification. | 221 // trigger notification. |
228 void RemoveManagedDefaultSearchPreferences() { | 222 void RemoveManagedDefaultSearchPreferences() { |
229 TestingPrefService* service = profile()->GetTestingPrefService(); | 223 TestingPrefService* service = profile()->GetTestingPrefService(); |
230 service->RemoveManagedPrefWithoutNotification( | 224 service->RemoveManagedPref( |
| 225 prefs::kDefaultSearchProviderSearchURL); |
| 226 service->RemoveManagedPref( |
231 prefs::kDefaultSearchProviderEnabled); | 227 prefs::kDefaultSearchProviderEnabled); |
232 service->RemoveManagedPrefWithoutNotification( | 228 service->RemoveManagedPref( |
233 prefs::kDefaultSearchProviderName); | 229 prefs::kDefaultSearchProviderName); |
234 service->RemoveManagedPrefWithoutNotification( | 230 service->RemoveManagedPref( |
235 prefs::kDefaultSearchProviderSearchURL); | |
236 service->RemoveManagedPrefWithoutNotification( | |
237 prefs::kDefaultSearchProviderSuggestURL); | 231 prefs::kDefaultSearchProviderSuggestURL); |
238 service->RemoveManagedPrefWithoutNotification( | 232 service->RemoveManagedPref( |
239 prefs::kDefaultSearchProviderIconURL); | 233 prefs::kDefaultSearchProviderIconURL); |
240 service->RemoveManagedPrefWithoutNotification( | 234 service->RemoveManagedPref( |
241 prefs::kDefaultSearchProviderEncodings); | 235 prefs::kDefaultSearchProviderEncodings); |
242 service->RemoveManagedPrefWithoutNotification( | 236 service->RemoveManagedPref( |
243 prefs::kDefaultSearchProviderKeyword); | 237 prefs::kDefaultSearchProviderKeyword); |
244 service->RemoveManagedPrefWithoutNotification( | 238 service->RemoveManagedPref( |
245 prefs::kDefaultSearchProviderID); | 239 prefs::kDefaultSearchProviderID); |
246 service->RemoveManagedPrefWithoutNotification( | 240 service->RemoveManagedPref( |
247 prefs::kDefaultSearchProviderPrepopulateID); | 241 prefs::kDefaultSearchProviderPrepopulateID); |
248 NotifyManagedPrefsHaveChanged(); | |
249 } | 242 } |
250 | 243 |
251 // Creates a TemplateURL with the same prepopluated id as a real prepopulated | 244 // Creates a TemplateURL with the same prepopluated id as a real prepopulated |
252 // item. The input number determines which prepopulated item. The caller is | 245 // item. The input number determines which prepopulated item. The caller is |
253 // responsible for owning the returned TemplateURL*. | 246 // responsible for owning the returned TemplateURL*. |
254 TemplateURL* CreateReplaceablePreloadedTemplateURL( | 247 TemplateURL* CreateReplaceablePreloadedTemplateURL( |
255 size_t index_offset_from_default, | 248 size_t index_offset_from_default, |
256 std::wstring* prepopulated_display_url); | 249 std::wstring* prepopulated_display_url); |
257 | 250 |
258 // Verifies the behavior of when a preloaded url later gets changed. | 251 // Verifies the behavior of when a preloaded url later gets changed. |
259 // Since the input is the offset from the default, when one passes in | 252 // Since the input is the offset from the default, when one passes in |
260 // 0, it tests the default. Passing in a number > 0 will verify what | 253 // 0, it tests the default. Passing in a number > 0 will verify what |
261 // happens when a preloaded url that is not the default gets updated. | 254 // happens when a preloaded url that is not the default gets updated. |
262 void TestLoadUpdatingPreloadedURL(size_t index_offset_from_default); | 255 void TestLoadUpdatingPreloadedURL(size_t index_offset_from_default); |
263 | 256 |
264 // Helper methods to make calling TemplateURLModelTestUtil methods less | 257 // Helper methods to make calling TemplateURLModelTestUtil methods less |
265 // visually noisy in the test code. | 258 // visually noisy in the test code. |
266 void VerifyObserverCount(int expected_changed_count) { | 259 void VerifyObserverCount(int expected_changed_count) { |
267 test_util_.VerifyObserverCount(expected_changed_count); | 260 EXPECT_EQ(expected_changed_count, test_util_.GetObserverCount()); |
| 261 test_util_.ResetObserverCount(); |
| 262 } |
| 263 void VerifyObserverFired() { |
| 264 EXPECT_LE(1, test_util_.GetObserverCount()); |
| 265 test_util_.ResetObserverCount(); |
268 } | 266 } |
269 void BlockTillServiceProcessesRequests() { | 267 void BlockTillServiceProcessesRequests() { |
270 TemplateURLModelTestUtil::BlockTillServiceProcessesRequests(); | 268 TemplateURLModelTestUtil::BlockTillServiceProcessesRequests(); |
271 } | 269 } |
272 void VerifyLoad() { test_util_.VerifyLoad(); } | 270 void VerifyLoad() { test_util_.VerifyLoad(); } |
273 void ChangeModelToLoadState() { test_util_.ChangeModelToLoadState(); } | 271 void ChangeModelToLoadState() { test_util_.ChangeModelToLoadState(); } |
274 void ResetModel(bool verify_load) { test_util_.ResetModel(verify_load); } | 272 void ResetModel(bool verify_load) { test_util_.ResetModel(verify_load); } |
275 std::wstring GetAndClearSearchTerm() { | 273 std::wstring GetAndClearSearchTerm() { |
276 return test_util_.GetAndClearSearchTerm(); | 274 return test_util_.GetAndClearSearchTerm(); |
277 } | 275 } |
(...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 EXPECT_FALSE(model()->is_default_search_managed()); | 1104 EXPECT_FALSE(model()->is_default_search_managed()); |
1107 EXPECT_EQ(1 + initial_count, model()->GetTemplateURLs().size()); | 1105 EXPECT_EQ(1 + initial_count, model()->GetTemplateURLs().size()); |
1108 | 1106 |
1109 // Set a managed preference that establishes a default search provider. | 1107 // Set a managed preference that establishes a default search provider. |
1110 const char kName[] = "test1"; | 1108 const char kName[] = "test1"; |
1111 const char kSearchURL[] = "http://test.com/search?t={searchTerms}"; | 1109 const char kSearchURL[] = "http://test.com/search?t={searchTerms}"; |
1112 const char kIconURL[] = "http://test.com/icon.jpg"; | 1110 const char kIconURL[] = "http://test.com/icon.jpg"; |
1113 const char kEncodings[] = "UTF-16;UTF-32"; | 1111 const char kEncodings[] = "UTF-16;UTF-32"; |
1114 SetManagedDefaultSearchPreferences(true, kName, kSearchURL, "", kIconURL, | 1112 SetManagedDefaultSearchPreferences(true, kName, kSearchURL, "", kIconURL, |
1115 kEncodings, ""); | 1113 kEncodings, ""); |
1116 VerifyObserverCount(1); | 1114 VerifyObserverFired(); |
1117 EXPECT_TRUE(model()->is_default_search_managed()); | 1115 EXPECT_TRUE(model()->is_default_search_managed()); |
1118 EXPECT_EQ(2 + initial_count, model()->GetTemplateURLs().size()); | 1116 EXPECT_EQ(2 + initial_count, model()->GetTemplateURLs().size()); |
1119 | 1117 |
1120 // Verify that the default manager we are getting is the managed one. | 1118 // Verify that the default manager we are getting is the managed one. |
1121 scoped_ptr<TemplateURL> expected_managed_default1(new TemplateURL()); | 1119 scoped_ptr<TemplateURL> expected_managed_default1(new TemplateURL()); |
1122 expected_managed_default1->SetURL(kSearchURL, 0, 0); | 1120 expected_managed_default1->SetURL(kSearchURL, 0, 0); |
1123 expected_managed_default1->SetFavIconURL(GURL(kIconURL)); | 1121 expected_managed_default1->SetFavIconURL(GURL(kIconURL)); |
1124 expected_managed_default1->set_short_name(L"test1"); | 1122 expected_managed_default1->set_short_name(L"test1"); |
1125 std::vector<std::string> encodings_vector; | 1123 std::vector<std::string> encodings_vector; |
1126 base::SplitString(kEncodings, ';', &encodings_vector); | 1124 base::SplitString(kEncodings, ';', &encodings_vector); |
1127 expected_managed_default1->set_input_encodings(encodings_vector); | 1125 expected_managed_default1->set_input_encodings(encodings_vector); |
1128 expected_managed_default1->set_show_in_default_list(true); | 1126 expected_managed_default1->set_show_in_default_list(true); |
1129 const TemplateURL* actual_managed_default = | 1127 const TemplateURL* actual_managed_default = |
1130 model()->GetDefaultSearchProvider(); | 1128 model()->GetDefaultSearchProvider(); |
1131 ExpectSimilar(actual_managed_default, expected_managed_default1.get()); | 1129 ExpectSimilar(actual_managed_default, expected_managed_default1.get()); |
1132 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); | 1130 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); |
1133 | 1131 |
1134 // Update the managed preference and check that the model has changed. | 1132 // Update the managed preference and check that the model has changed. |
1135 const char kNewName[] = "test2"; | 1133 const char kNewName[] = "test2"; |
1136 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}"; | 1134 const char kNewSearchURL[] = "http://other.com/search?t={searchTerms}"; |
1137 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}"; | 1135 const char kNewSuggestURL[] = "http://other.com/suggest?t={searchTerms}"; |
1138 SetManagedDefaultSearchPreferences(true, kNewName, kNewSearchURL, | 1136 SetManagedDefaultSearchPreferences(true, kNewName, kNewSearchURL, |
1139 kNewSuggestURL, "", "", ""); | 1137 kNewSuggestURL, "", "", ""); |
1140 VerifyObserverCount(1); | 1138 VerifyObserverFired(); |
1141 EXPECT_TRUE(model()->is_default_search_managed()); | 1139 EXPECT_TRUE(model()->is_default_search_managed()); |
1142 EXPECT_EQ(2 + initial_count, model()->GetTemplateURLs().size()); | 1140 EXPECT_EQ(2 + initial_count, model()->GetTemplateURLs().size()); |
1143 | 1141 |
1144 // Verify that the default manager we are now getting is the correct one. | 1142 // Verify that the default manager we are now getting is the correct one. |
1145 scoped_ptr<TemplateURL> expected_managed_default2(new TemplateURL()); | 1143 scoped_ptr<TemplateURL> expected_managed_default2(new TemplateURL()); |
1146 expected_managed_default2->SetURL(kNewSearchURL, 0, 0); | 1144 expected_managed_default2->SetURL(kNewSearchURL, 0, 0); |
1147 expected_managed_default2->SetSuggestionsURL(kNewSuggestURL, 0, 0); | 1145 expected_managed_default2->SetSuggestionsURL(kNewSuggestURL, 0, 0); |
1148 expected_managed_default2->set_short_name(L"test2"); | 1146 expected_managed_default2->set_short_name(L"test2"); |
1149 expected_managed_default2->set_show_in_default_list(true); | 1147 expected_managed_default2->set_show_in_default_list(true); |
1150 actual_managed_default = model()->GetDefaultSearchProvider(); | 1148 actual_managed_default = model()->GetDefaultSearchProvider(); |
1151 ExpectSimilar(actual_managed_default, expected_managed_default2.get()); | 1149 ExpectSimilar(actual_managed_default, expected_managed_default2.get()); |
1152 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); | 1150 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); |
1153 | 1151 |
1154 // Remove all the managed prefs and check that we are no longer managed. | 1152 // Remove all the managed prefs and check that we are no longer managed. |
1155 RemoveManagedDefaultSearchPreferences(); | 1153 RemoveManagedDefaultSearchPreferences(); |
1156 VerifyObserverCount(1); | 1154 VerifyObserverFired(); |
1157 EXPECT_FALSE(model()->is_default_search_managed()); | 1155 EXPECT_FALSE(model()->is_default_search_managed()); |
1158 EXPECT_EQ(1 + initial_count, model()->GetTemplateURLs().size()); | 1156 EXPECT_EQ(1 + initial_count, model()->GetTemplateURLs().size()); |
1159 | 1157 |
1160 // The default should now be the first URL added | 1158 // The default should now be the first URL added |
1161 const TemplateURL* actual_final_managed_default = | 1159 const TemplateURL* actual_final_managed_default = |
1162 model()->GetDefaultSearchProvider(); | 1160 model()->GetDefaultSearchProvider(); |
1163 ExpectSimilar(actual_final_managed_default, | 1161 ExpectSimilar(actual_final_managed_default, |
1164 model()->GetTemplateURLs()[0]); | 1162 model()->GetTemplateURLs()[0]); |
1165 EXPECT_EQ(actual_final_managed_default->show_in_default_list(), true); | 1163 EXPECT_EQ(actual_final_managed_default->show_in_default_list(), true); |
1166 | 1164 |
1167 // Disable the default search provider through policy. | 1165 // Disable the default search provider through policy. |
1168 SetManagedDefaultSearchPreferences(false, "", "", "", "", "", ""); | 1166 SetManagedDefaultSearchPreferences(false, "", "", "", "", "", ""); |
1169 VerifyObserverCount(1); | 1167 VerifyObserverFired(); |
1170 EXPECT_TRUE(model()->is_default_search_managed()); | 1168 EXPECT_TRUE(model()->is_default_search_managed()); |
1171 EXPECT_TRUE(NULL == model()->GetDefaultSearchProvider()); | 1169 EXPECT_TRUE(NULL == model()->GetDefaultSearchProvider()); |
1172 EXPECT_EQ(1 + initial_count, model()->GetTemplateURLs().size()); | 1170 EXPECT_EQ(1 + initial_count, model()->GetTemplateURLs().size()); |
1173 | 1171 |
1174 // Re-enable it. | 1172 // Re-enable it. |
1175 SetManagedDefaultSearchPreferences(true, kName, kSearchURL, "", kIconURL, | 1173 SetManagedDefaultSearchPreferences(true, kName, kSearchURL, "", kIconURL, |
1176 kEncodings, ""); | 1174 kEncodings, ""); |
1177 VerifyObserverCount(1); | 1175 VerifyObserverFired(); |
1178 EXPECT_TRUE(model()->is_default_search_managed()); | 1176 EXPECT_TRUE(model()->is_default_search_managed()); |
1179 EXPECT_EQ(2 + initial_count, model()->GetTemplateURLs().size()); | 1177 EXPECT_EQ(2 + initial_count, model()->GetTemplateURLs().size()); |
1180 | 1178 |
1181 // Verify that the default manager we are getting is the managed one. | 1179 // Verify that the default manager we are getting is the managed one. |
1182 actual_managed_default = model()->GetDefaultSearchProvider(); | 1180 actual_managed_default = model()->GetDefaultSearchProvider(); |
1183 ExpectSimilar(actual_managed_default, expected_managed_default1.get()); | 1181 ExpectSimilar(actual_managed_default, expected_managed_default1.get()); |
1184 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); | 1182 EXPECT_EQ(actual_managed_default->show_in_default_list(), true); |
1185 } | 1183 } |
OLD | NEW |