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

Side by Side Diff: chrome/browser/ui/app_list/arc/arc_app_unittest.cc

Issue 2860243002: arc: Fix removing shortcuts on package update. (Closed)
Patch Set: typo fix Created 3 years, 7 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
« no previous file with comments | « chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 // Removes icon request record and allowd re-sending icon request. 376 // Removes icon request record and allowd re-sending icon request.
377 void MaybeRemoveIconRequestRecord(const std::string& app_id) { 377 void MaybeRemoveIconRequestRecord(const std::string& app_id) {
378 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get()); 378 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get());
379 ASSERT_NE(nullptr, prefs); 379 ASSERT_NE(nullptr, prefs);
380 380
381 prefs->MaybeRemoveIconRequestRecord(app_id); 381 prefs->MaybeRemoveIconRequestRecord(app_id);
382 } 382 }
383 383
384 void AddPackage(const arc::mojom::ArcPackageInfo& package) { 384 void AddPackage(const arc::mojom::ArcPackageInfo& package) {
385 arc_test_.AddPackage(package); 385 arc_test_.AddPackage(package);
386 app_instance()->SendPackageAdded(package);
386 } 387 }
387 388
388 void RemovePackage(const arc::mojom::ArcPackageInfo& package) { 389 void RemovePackage(const arc::mojom::ArcPackageInfo& package) {
389 arc_test_.RemovePackage(package); 390 arc_test_.RemovePackage(package);
391 app_instance()->SendPackageUninstalled(package.package_name);
390 } 392 }
391 393
392 AppListControllerDelegate* controller() { return controller_.get(); } 394 AppListControllerDelegate* controller() { return controller_.get(); }
393 395
394 TestingProfile* profile() { return profile_.get(); } 396 TestingProfile* profile() { return profile_.get(); }
395 397
396 ArcAppTest* arc_test() { return &arc_test_; } 398 ArcAppTest* arc_test() { return &arc_test_; }
397 399
398 const std::vector<arc::mojom::AppInfo>& fake_apps() const { 400 const std::vector<arc::mojom::AppInfo>& fake_apps() const {
399 return arc_test_.fake_apps(); 401 return arc_test_.fake_apps();
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 ValidateHavePackages(fake_packages()); 552 ValidateHavePackages(fake_packages());
551 553
552 arc::mojom::ArcPackageInfo package; 554 arc::mojom::ArcPackageInfo package;
553 package.package_name = kTestPackageName; 555 package.package_name = kTestPackageName;
554 package.package_version = 2; 556 package.package_version = 2;
555 package.last_backup_android_id = 2; 557 package.last_backup_android_id = 2;
556 package.last_backup_time = 2; 558 package.last_backup_time = 2;
557 package.sync = true; 559 package.sync = true;
558 560
559 RemovePackage(package); 561 RemovePackage(package);
560 app_instance()->SendPackageUninstalled(package.package_name);
561 ValidateHavePackages(fake_packages()); 562 ValidateHavePackages(fake_packages());
562 563
563 AddPackage(package); 564 AddPackage(package);
564 app_instance()->SendPackageAdded(package);
565 ValidateHavePackages(fake_packages()); 565 ValidateHavePackages(fake_packages());
566 } 566 }
567 567
568 TEST_P(ArcAppModelBuilderTest, RefreshAllOnReady) { 568 TEST_P(ArcAppModelBuilderTest, RefreshAllOnReady) {
569 // There should already have been one call, when the interface was 569 // There should already have been one call, when the interface was
570 // registered. 570 // registered.
571 EXPECT_EQ(1, app_instance()->refresh_app_list_count()); 571 EXPECT_EQ(1, app_instance()->refresh_app_list_count());
572 app_instance()->RefreshAppList(); 572 app_instance()->RefreshAppList();
573 EXPECT_EQ(2, app_instance()->refresh_app_list_count()); 573 EXPECT_EQ(2, app_instance()->refresh_app_list_count());
574 } 574 }
575 575
576 TEST_P(ArcAppModelBuilderTest, RefreshAllFillsContent) { 576 TEST_P(ArcAppModelBuilderTest, RefreshAllFillsContent) {
577 ValidateHaveApps(std::vector<arc::mojom::AppInfo>()); 577 ValidateHaveApps(std::vector<arc::mojom::AppInfo>());
578 app_instance()->RefreshAppList(); 578 app_instance()->RefreshAppList();
579 app_instance()->SendRefreshAppList(fake_apps()); 579 app_instance()->SendRefreshAppList(fake_apps());
580 ValidateHaveApps(fake_apps()); 580 ValidateHaveApps(fake_apps());
581 } 581 }
582 582
583 TEST_P(ArcAppModelBuilderTest, InstallUninstallShortcut) { 583 TEST_P(ArcAppModelBuilderTest, InstallUninstallShortcut) {
584 ValidateHaveApps(std::vector<arc::mojom::AppInfo>()); 584 ValidateHaveApps(std::vector<arc::mojom::AppInfo>());
585 585
586 std::vector<arc::mojom::ShortcutInfo> shortcuts = fake_shortcuts(); 586 std::vector<arc::mojom::ShortcutInfo> shortcuts = fake_shortcuts();
587 ASSERT_GE(shortcuts.size(), 2U); 587 ASSERT_GE(shortcuts.size(), 2U);
588 588
589 // Adding package is requred to safely call SendPackageUninstalled. 589 // Adding package is required to safely call SendPackageUninstalled.
590 arc::mojom::ArcPackageInfo package; 590 arc::mojom::ArcPackageInfo package;
591 package.package_name = shortcuts[1].package_name; 591 package.package_name = shortcuts[1].package_name;
592 package.package_version = 1; 592 package.package_version = 1;
593 package.sync = true; 593 package.sync = true;
594 AddPackage(package); 594 AddPackage(package);
595 app_instance()->SendPackageAdded(package);
596 595
597 app_instance()->SendInstallShortcuts(shortcuts); 596 app_instance()->SendInstallShortcuts(shortcuts);
598 ValidateHaveShortcuts(shortcuts); 597 ValidateHaveShortcuts(shortcuts);
599 598
600 // Uninstall first shortcut and validate it was removed. 599 // Uninstall first shortcut and validate it was removed.
601 const std::string package_name = shortcuts[0].package_name; 600 const std::string package_name = shortcuts[0].package_name;
602 const std::string intent_uri = shortcuts[0].intent_uri; 601 const std::string intent_uri = shortcuts[0].intent_uri;
603 shortcuts.erase(shortcuts.begin()); 602 shortcuts.erase(shortcuts.begin());
604 app_instance()->SendUninstallShortcut(package_name, intent_uri); 603 app_instance()->SendUninstallShortcut(package_name, intent_uri);
605 ValidateHaveShortcuts(shortcuts); 604 ValidateHaveShortcuts(shortcuts);
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
1357 const std::string app_id = ArcAppTest::GetAppId(fake_apps()[0]); 1356 const std::string app_id = ArcAppTest::GetAppId(fake_apps()[0]);
1358 1357
1359 EXPECT_FALSE(prefs->IsRegistered(app_id)); 1358 EXPECT_FALSE(prefs->IsRegistered(app_id));
1360 EXPECT_FALSE(FindArcItem(app_id)); 1359 EXPECT_FALSE(FindArcItem(app_id));
1361 app_instance()->SendTaskCreated(0, fake_apps()[0], std::string()); 1360 app_instance()->SendTaskCreated(0, fake_apps()[0], std::string());
1362 // App should not appear now in the model but should be registered. 1361 // App should not appear now in the model but should be registered.
1363 EXPECT_FALSE(FindArcItem(app_id)); 1362 EXPECT_FALSE(FindArcItem(app_id));
1364 EXPECT_TRUE(prefs->IsRegistered(app_id)); 1363 EXPECT_TRUE(prefs->IsRegistered(app_id));
1365 } 1364 }
1366 1365
1367 TEST_P(ArcAppModelBuilderTest, ArcAppsOnPackageUpdated) { 1366 TEST_P(ArcAppModelBuilderTest, ArcAppsAndShortcutsOnPackageChange) {
1368 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get()); 1367 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get());
1369 ASSERT_NE(nullptr, prefs); 1368 ASSERT_NE(nullptr, prefs);
1370 1369
1371 std::vector<arc::mojom::AppInfo> apps = fake_apps(); 1370 std::vector<arc::mojom::AppInfo> apps = fake_apps();
1372 ASSERT_GE(3u, apps.size()); 1371 ASSERT_GE(3u, apps.size());
1373 apps[0].package_name = apps[2].package_name; 1372 apps[0].package_name = apps[2].package_name;
1374 apps[1].package_name = apps[2].package_name; 1373 apps[1].package_name = apps[2].package_name;
1374
1375 std::vector<arc::mojom::ShortcutInfo> shortcuts = fake_shortcuts();
1376 for (auto& shortcut : shortcuts)
1377 shortcut.package_name = apps[0].package_name;
1378
1375 // Second app should be preserved after update. 1379 // Second app should be preserved after update.
1376 std::vector<arc::mojom::AppInfo> apps1(apps.begin(), apps.begin() + 2); 1380 std::vector<arc::mojom::AppInfo> apps1(apps.begin(), apps.begin() + 2);
1377 std::vector<arc::mojom::AppInfo> apps2(apps.begin() + 1, apps.begin() + 3); 1381 std::vector<arc::mojom::AppInfo> apps2(apps.begin() + 1, apps.begin() + 3);
1378 1382
1383 // Adding package is required to safely call SendPackageUninstalled.
1384 arc::mojom::ArcPackageInfo package;
1385 package.package_name = apps[0].package_name;
1386 package.package_version = 1;
1387 package.sync = true;
1388 AddPackage(package);
1389
1379 app_instance()->RefreshAppList(); 1390 app_instance()->RefreshAppList();
1380 app_instance()->SendRefreshAppList(apps1); 1391 app_instance()->SendRefreshAppList(apps1);
1381 ValidateHaveApps(apps1); 1392 app_instance()->SendInstallShortcuts(shortcuts);
1393
1394 ValidateHaveAppsAndShortcuts(apps1, shortcuts);
1382 1395
1383 const std::string app_id = ArcAppTest::GetAppId(apps[1]); 1396 const std::string app_id = ArcAppTest::GetAppId(apps[1]);
1384 const base::Time now_time = base::Time::Now(); 1397 const base::Time now_time = base::Time::Now();
1385 prefs->SetLastLaunchTime(app_id, now_time); 1398 prefs->SetLastLaunchTime(app_id, now_time);
1386 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info_before = 1399 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info_before =
1387 prefs->GetApp(app_id); 1400 prefs->GetApp(app_id);
1388 ASSERT_TRUE(app_info_before); 1401 ASSERT_TRUE(app_info_before);
1389 EXPECT_EQ(now_time, app_info_before->last_launch_time); 1402 EXPECT_EQ(now_time, app_info_before->last_launch_time);
1390 1403
1391 app_instance()->SendPackageAppListRefreshed(apps[0].package_name, apps2); 1404 app_instance()->SendPackageAppListRefreshed(apps[0].package_name, apps2);
1392 ValidateHaveApps(apps2); 1405 ValidateHaveAppsAndShortcuts(apps2, shortcuts);
1393 1406
1394 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info_after = 1407 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info_after =
1395 prefs->GetApp(app_id); 1408 prefs->GetApp(app_id);
1396 ASSERT_TRUE(app_info_after); 1409 ASSERT_TRUE(app_info_after);
1397 EXPECT_EQ(now_time, app_info_after->last_launch_time); 1410 EXPECT_EQ(now_time, app_info_after->last_launch_time);
1411
1412 RemovePackage(package);
1413 ValidateHaveAppsAndShortcuts(std::vector<arc::mojom::AppInfo>(),
1414 std::vector<arc::mojom::ShortcutInfo>());
1398 } 1415 }
1399 1416
1400 TEST_P(ArcDefaulAppTest, DefaultApps) { 1417 TEST_P(ArcDefaulAppTest, DefaultApps) {
1401 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get()); 1418 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get());
1402 ASSERT_NE(nullptr, prefs); 1419 ASSERT_NE(nullptr, prefs);
1403 1420
1404 ValidateHaveApps(fake_default_apps()); 1421 ValidateHaveApps(fake_default_apps());
1405 1422
1406 // Start normal apps. We should have apps from 2 subsets. 1423 // Start normal apps. We should have apps from 2 subsets.
1407 app_instance()->RefreshAppList(); 1424 app_instance()->RefreshAppList();
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1603 ::testing::ValuesIn(kUnmanagedArcStates)); 1620 ::testing::ValuesIn(kUnmanagedArcStates));
1604 INSTANTIATE_TEST_CASE_P(, 1621 INSTANTIATE_TEST_CASE_P(,
1605 ArcDefaulAppForManagedUserTest, 1622 ArcDefaulAppForManagedUserTest,
1606 ::testing::ValuesIn(kManagedArcStates)); 1623 ::testing::ValuesIn(kManagedArcStates));
1607 INSTANTIATE_TEST_CASE_P(, 1624 INSTANTIATE_TEST_CASE_P(,
1608 ArcPlayStoreAppTest, 1625 ArcPlayStoreAppTest,
1609 ::testing::ValuesIn(kUnmanagedArcStates)); 1626 ::testing::ValuesIn(kUnmanagedArcStates));
1610 INSTANTIATE_TEST_CASE_P(, 1627 INSTANTIATE_TEST_CASE_P(,
1611 ArcAppModelBuilderRecreate, 1628 ArcAppModelBuilderRecreate,
1612 ::testing::ValuesIn(kUnmanagedArcStates)); 1629 ::testing::ValuesIn(kUnmanagedArcStates));
OLDNEW
« no previous file with comments | « chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698