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

Side by Side Diff: chrome/browser/ui/app_list/extension_app_model_builder_unittest.cc

Issue 1419823011: app_sorting() calls should go via ExtensionSystem intsead of prefs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes as per review comments. Created 5 years, 1 month 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
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 "chrome/browser/ui/app_list/extension_app_model_builder.h" 5 #include "chrome/browser/ui/app_list/extension_app_model_builder.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "base/run_loop.h" 12 #include "base/run_loop.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/extensions/extension_function_test_utils.h" 14 #include "chrome/browser/extensions/extension_function_test_utils.h"
15 #include "chrome/browser/extensions/extension_service.h" 15 #include "chrome/browser/extensions/extension_service.h"
16 #include "chrome/browser/extensions/install_tracker.h" 16 #include "chrome/browser/extensions/install_tracker.h"
17 #include "chrome/browser/extensions/install_tracker_factory.h" 17 #include "chrome/browser/extensions/install_tracker_factory.h"
18 #include "chrome/browser/ui/app_list/app_list_test_util.h" 18 #include "chrome/browser/ui/app_list/app_list_test_util.h"
19 #include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h" 19 #include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
20 #include "chrome/common/chrome_constants.h" 20 #include "chrome/common/chrome_constants.h"
21 #include "chrome/common/extensions/extension_constants.h" 21 #include "chrome/common/extensions/extension_constants.h"
22 #include "chrome/common/pref_names.h" 22 #include "chrome/common/pref_names.h"
23 #include "chrome/test/base/testing_profile.h" 23 #include "chrome/test/base/testing_profile.h"
24 #include "extensions/browser/app_sorting.h" 24 #include "extensions/browser/app_sorting.h"
25 #include "extensions/browser/extension_prefs.h" 25 #include "extensions/browser/extension_prefs.h"
26 #include "extensions/browser/extension_registry.h" 26 #include "extensions/browser/extension_registry.h"
27 #include "extensions/browser/extension_system.h"
27 #include "extensions/browser/uninstall_reason.h" 28 #include "extensions/browser/uninstall_reason.h"
28 #include "extensions/common/constants.h" 29 #include "extensions/common/constants.h"
29 #include "extensions/common/extension_set.h" 30 #include "extensions/common/extension_set.h"
30 #include "extensions/common/manifest.h" 31 #include "extensions/common/manifest.h"
31 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
32 #include "ui/app_list/app_list_item.h" 33 #include "ui/app_list/app_list_item.h"
33 34
35 using extensions::AppSorting;
36 using extensions::ExtensionSystem;
37
34 namespace { 38 namespace {
35 39
36 // Get a string of all apps in |model| joined with ','. 40 // Get a string of all apps in |model| joined with ','.
37 std::string GetModelContent(app_list::AppListModel* model) { 41 std::string GetModelContent(app_list::AppListModel* model) {
38 std::string content; 42 std::string content;
39 for (size_t i = 0; i < model->top_level_item_list()->item_count(); ++i) { 43 for (size_t i = 0; i < model->top_level_item_list()->item_count(); ++i) {
40 if (i > 0) 44 if (i > 0)
41 content += ','; 45 content += ',';
42 content += model->top_level_item_list()->item_at(i)->name(); 46 content += model->top_level_item_list()->item_at(i)->name();
43 } 47 }
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 extensions::InstallTracker* tracker = 211 extensions::InstallTracker* tracker =
208 extensions::InstallTrackerFactory::GetForBrowserContext(profile_.get()); 212 extensions::InstallTrackerFactory::GetForBrowserContext(profile_.get());
209 extensions::InstallObserver::ExtensionInstallParams params( 213 extensions::InstallObserver::ExtensionInstallParams params(
210 kPackagedApp1Id, "", gfx::ImageSkia(), true, true); 214 kPackagedApp1Id, "", gfx::ImageSkia(), true, true);
211 tracker->OnBeginExtensionInstall(params); 215 tracker->OnBeginExtensionInstall(params);
212 216
213 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get())); 217 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get()));
214 } 218 }
215 219
216 TEST_F(ExtensionAppModelBuilderTest, OrdinalPrefsChange) { 220 TEST_F(ExtensionAppModelBuilderTest, OrdinalPrefsChange) {
217 extensions::AppSorting* sorting = 221 AppSorting* sorting = ExtensionSystem::Get(profile_.get())->app_sorting();
218 extensions::ExtensionPrefs::Get(profile_.get())->app_sorting();
219 222
220 syncer::StringOrdinal package_app_page = 223 syncer::StringOrdinal package_app_page =
221 sorting->GetPageOrdinal(kPackagedApp1Id); 224 sorting->GetPageOrdinal(kPackagedApp1Id);
222 sorting->SetPageOrdinal(kHostedAppId, package_app_page.CreateBefore()); 225 sorting->SetPageOrdinal(kHostedAppId, package_app_page.CreateBefore());
223 // Old behavior: This would be "Hosted App,Packaged App 1,Packaged App 2" 226 // Old behavior: This would be "Hosted App,Packaged App 1,Packaged App 2"
224 // New behavior: Sorting order doesn't change. 227 // New behavior: Sorting order doesn't change.
225 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get())); 228 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get()));
226 229
227 syncer::StringOrdinal app1_ordinal = 230 syncer::StringOrdinal app1_ordinal =
228 sorting->GetAppLaunchOrdinal(kPackagedApp1Id); 231 sorting->GetAppLaunchOrdinal(kPackagedApp1Id);
229 syncer::StringOrdinal app2_ordinal = 232 syncer::StringOrdinal app2_ordinal =
230 sorting->GetAppLaunchOrdinal(kPackagedApp2Id); 233 sorting->GetAppLaunchOrdinal(kPackagedApp2Id);
231 sorting->SetPageOrdinal(kHostedAppId, package_app_page); 234 sorting->SetPageOrdinal(kHostedAppId, package_app_page);
232 sorting->SetAppLaunchOrdinal(kHostedAppId, 235 sorting->SetAppLaunchOrdinal(kHostedAppId,
233 app1_ordinal.CreateBetween(app2_ordinal)); 236 app1_ordinal.CreateBetween(app2_ordinal));
234 // Old behavior: This would be "Packaged App 1,Hosted App,Packaged App 2" 237 // Old behavior: This would be "Packaged App 1,Hosted App,Packaged App 2"
235 // New behavior: Sorting order doesn't change. 238 // New behavior: Sorting order doesn't change.
236 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get())); 239 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get()));
237 } 240 }
238 241
239 TEST_F(ExtensionAppModelBuilderTest, OnExtensionMoved) { 242 TEST_F(ExtensionAppModelBuilderTest, OnExtensionMoved) {
240 extensions::AppSorting* sorting = 243 AppSorting* sorting = ExtensionSystem::Get(profile_.get())->app_sorting();
241 extensions::ExtensionPrefs::Get(profile_.get())->app_sorting();
242 sorting->SetPageOrdinal(kHostedAppId, 244 sorting->SetPageOrdinal(kHostedAppId,
243 sorting->GetPageOrdinal(kPackagedApp1Id)); 245 sorting->GetPageOrdinal(kPackagedApp1Id));
244 246
245 sorting->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id); 247 sorting->OnExtensionMoved(kHostedAppId, kPackagedApp1Id, kPackagedApp2Id);
246 // Old behavior: This would be "Packaged App 1,Hosted App,Packaged App 2" 248 // Old behavior: This would be "Packaged App 1,Hosted App,Packaged App 2"
247 // New behavior: Sorting order doesn't change. 249 // New behavior: Sorting order doesn't change.
248 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get())); 250 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get()));
249 251
250 sorting->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string()); 252 sorting->OnExtensionMoved(kHostedAppId, kPackagedApp2Id, std::string());
251 // Old behavior: This would be restored to the default order. 253 // Old behavior: This would be restored to the default order.
252 // New behavior: Sorting order still doesn't change. 254 // New behavior: Sorting order still doesn't change.
253 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get())); 255 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get()));
254 256
255 sorting->OnExtensionMoved(kHostedAppId, std::string(), kPackagedApp1Id); 257 sorting->OnExtensionMoved(kHostedAppId, std::string(), kPackagedApp1Id);
256 // Old behavior: This would be "Hosted App,Packaged App 1,Packaged App 2" 258 // Old behavior: This would be "Hosted App,Packaged App 1,Packaged App 2"
257 // New behavior: Sorting order doesn't change. 259 // New behavior: Sorting order doesn't change.
258 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get())); 260 EXPECT_EQ(std::string(kDefaultApps), GetModelContent(model_.get()));
259 } 261 }
260 262
261 TEST_F(ExtensionAppModelBuilderTest, InvalidOrdinal) { 263 TEST_F(ExtensionAppModelBuilderTest, InvalidOrdinal) {
262 // Creates a no-ordinal case. 264 // Creates a no-ordinal case.
263 extensions::AppSorting* sorting = 265 AppSorting* sorting = ExtensionSystem::Get(profile_.get())->app_sorting();
264 extensions::ExtensionPrefs::Get(profile_.get())->app_sorting();
265 sorting->ClearOrdinals(kPackagedApp1Id); 266 sorting->ClearOrdinals(kPackagedApp1Id);
266 267
267 // Creates a corrupted ordinal case. 268 // Creates a corrupted ordinal case.
268 extensions::ExtensionScopedPrefs* scoped_prefs = 269 extensions::ExtensionScopedPrefs* scoped_prefs =
269 extensions::ExtensionPrefs::Get(profile_.get()); 270 extensions::ExtensionPrefs::Get(profile_.get());
270 scoped_prefs->UpdateExtensionPref( 271 scoped_prefs->UpdateExtensionPref(
271 kHostedAppId, 272 kHostedAppId,
272 "page_ordinal", 273 "page_ordinal",
273 new base::StringValue("a corrupted ordinal")); 274 new base::StringValue("a corrupted ordinal"));
274 275
275 // This should not assert or crash. 276 // This should not assert or crash.
276 CreateBuilder(); 277 CreateBuilder();
277 } 278 }
278 279
279 TEST_F(ExtensionAppModelBuilderTest, OrdinalConfilicts) { 280 TEST_F(ExtensionAppModelBuilderTest, OrdinalConfilicts) {
280 // Creates conflict ordinals for app1 and app2. 281 // Creates conflict ordinals for app1 and app2.
281 syncer::StringOrdinal conflict_ordinal = 282 syncer::StringOrdinal conflict_ordinal =
282 syncer::StringOrdinal::CreateInitialOrdinal(); 283 syncer::StringOrdinal::CreateInitialOrdinal();
283 284
284 extensions::AppSorting* sorting = 285 AppSorting* sorting = ExtensionSystem::Get(profile_.get())->app_sorting();
285 extensions::ExtensionPrefs::Get(profile_.get())->app_sorting();
286 sorting->SetPageOrdinal(kHostedAppId, conflict_ordinal); 286 sorting->SetPageOrdinal(kHostedAppId, conflict_ordinal);
287 sorting->SetAppLaunchOrdinal(kHostedAppId, conflict_ordinal); 287 sorting->SetAppLaunchOrdinal(kHostedAppId, conflict_ordinal);
288 288
289 sorting->SetPageOrdinal(kPackagedApp1Id, conflict_ordinal); 289 sorting->SetPageOrdinal(kPackagedApp1Id, conflict_ordinal);
290 sorting->SetAppLaunchOrdinal(kPackagedApp1Id, conflict_ordinal); 290 sorting->SetAppLaunchOrdinal(kPackagedApp1Id, conflict_ordinal);
291 291
292 sorting->SetPageOrdinal(kPackagedApp2Id, conflict_ordinal); 292 sorting->SetPageOrdinal(kPackagedApp2Id, conflict_ordinal);
293 sorting->SetAppLaunchOrdinal(kPackagedApp2Id, conflict_ordinal); 293 sorting->SetAppLaunchOrdinal(kPackagedApp2Id, conflict_ordinal);
294 294
295 // This should not assert or crash. 295 // This should not assert or crash.
(...skipping 23 matching lines...) Expand all
319 extensions::Extension::WAS_INSTALLED_BY_DEFAULT | 319 extensions::Extension::WAS_INSTALLED_BY_DEFAULT |
320 extensions::Extension::FROM_BOOKMARK, 320 extensions::Extension::FROM_BOOKMARK,
321 kAppId, 321 kAppId,
322 &err); 322 &err);
323 EXPECT_TRUE(err.empty()); 323 EXPECT_TRUE(err.empty());
324 324
325 service_->AddExtension(bookmark_app.get()); 325 service_->AddExtension(bookmark_app.get());
326 EXPECT_EQ(kDefaultAppCount + 1, model_->top_level_item_list()->item_count()); 326 EXPECT_EQ(kDefaultAppCount + 1, model_->top_level_item_list()->item_count());
327 EXPECT_NE(std::string::npos, GetModelContent(model_.get()).find(kAppName)); 327 EXPECT_NE(std::string::npos, GetModelContent(model_.get()).find(kAppName));
328 } 328 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/app_list/extension_app_item.cc ('k') | chrome/browser/ui/webui/ntp/app_launcher_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698