Chromium Code Reviews| Index: chrome/browser/ui/app_list/arc/arc_app_unittest.cc |
| diff --git a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc |
| index 78386c02d4b9c2b7e2e793fca95d8dea4e8331cf..6f2925d77a87a743e801dcb341b5b405d4647d6e 100644 |
| --- a/chrome/browser/ui/app_list/arc/arc_app_unittest.cc |
| +++ b/chrome/browser/ui/app_list/arc/arc_app_unittest.cc |
| @@ -27,10 +27,12 @@ |
| #include "chrome/browser/ui/app_list/arc/arc_app_item.h" |
| #include "chrome/browser/ui/app_list/arc/arc_app_launcher.h" |
| #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" |
| +#include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h" |
| #include "chrome/browser/ui/app_list/arc/arc_app_model_builder.h" |
| #include "chrome/browser/ui/app_list/arc/arc_app_test.h" |
| #include "chrome/browser/ui/app_list/arc/arc_app_utils.h" |
| #include "chrome/browser/ui/app_list/arc/arc_default_app_list.h" |
| +#include "chrome/browser/ui/app_list/arc/arc_package_syncable_service_factory.h" |
| #include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "components/arc/test/fake_app_instance.h" |
| @@ -163,12 +165,15 @@ class ArcAppModelBuilderTest : public AppListTestBase { |
| ArcAppItem* FindArcItem(const std::string& id) const { |
| const size_t count = GetArcItemCount(); |
| + ArcAppItem* found_item = nullptr; |
| for (size_t i = 0; i < count; ++i) { |
| ArcAppItem* item = GetArcItem(i); |
| - if (item && item->id() == id) |
| - return item; |
| + if (item && item->id() == id) { |
| + DCHECK(!found_item); |
| + found_item = item; |
| + } |
| } |
| - return nullptr; |
| + return found_item; |
| } |
| // Validate that prefs and model have right content. |
| @@ -427,6 +432,22 @@ class ArcPlayStoreAppTest : public ArcDefaulAppTest { |
| DISALLOW_COPY_AND_ASSIGN(ArcPlayStoreAppTest); |
| }; |
| +class ArcAppModelBuilderRecreate : public ArcAppModelBuilderTest { |
| + public: |
| + ArcAppModelBuilderRecreate() {} |
|
Luis Héctor Chávez
2016/11/22 17:14:14
nit: = default. Same below.
khmel
2016/11/22 18:43:05
Done.
|
| + ~ArcAppModelBuilderRecreate() override {} |
| + |
| + protected: |
| + // ArcAppModelBuilderTest: |
| + void OnBeforeArcTestSetup() override { |
| + arc::ArcPackageSyncableServiceFactory::GetInstance()->SetTestingFactory( |
| + profile_.get(), nullptr); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(ArcAppModelBuilderRecreate); |
| +}; |
| + |
| TEST_F(ArcAppModelBuilderTest, ArcPackagePref) { |
| ValidateHavePackages(std::vector<arc::mojom::ArcPackageInfo>()); |
| app_instance()->SendRefreshPackageList(fake_packages()); |
| @@ -1038,6 +1059,40 @@ TEST_F(ArcAppModelBuilderTest, AppLauncher) { |
| EXPECT_TRUE(app_instance()->launch_requests()[1]->IsForApp(app2)); |
| } |
| +// Validate that arc model contains expected elements on restart. |
| +TEST_F(ArcAppModelBuilderRecreate, AppModelRestart) { |
| + // No apps on fist initial start. |
|
Luis Héctor Chávez
2016/11/22 17:14:14
nit: "No apps on first initial start." (also, firs
khmel
2016/11/22 18:43:05
Done.
|
| + ValidateHaveApps(std::vector<arc::mojom::AppInfo>()); |
| + |
| + // Send info about all fake apps except last. |
| + std::vector<arc::mojom::AppInfo> apps1(fake_apps().begin(), |
| + fake_apps().end() - 1); |
| + app_instance()->RefreshAppList(); |
| + app_instance()->SendRefreshAppList(apps1); |
| + // Model has refreshed apps. |
| + ValidateHaveApps(apps1); |
| + EXPECT_EQ(apps1.size(), GetArcItemCount()); |
| + |
| + // Simulate restart. |
| + arc_test()->TearDown(); |
| + ResetBuilder(); |
| + |
| + ArcAppListPrefsFactory::GetInstance()->RecreateServiceInstanceForTesting( |
| + profile_.get()); |
| + arc_test()->SetUp(profile_.get()); |
| + CreateBuilder(); |
| + |
| + // On restart new model contains last apps. |
| + ValidateHaveApps(apps1); |
| + EXPECT_EQ(apps1.size(), GetArcItemCount()); |
| + |
| + // Now refresh old apps with new one. |
| + app_instance()->RefreshAppList(); |
| + app_instance()->SendRefreshAppList(fake_apps()); |
| + ValidateHaveApps(fake_apps()); |
| + EXPECT_EQ(fake_apps().size(), GetArcItemCount()); |
| +} |
| + |
| // Validates an app that have no launchable flag. |
| TEST_F(ArcAppModelBuilderTest, NonLaunchableApp) { |
| ArcAppListPrefs* prefs = ArcAppListPrefs::Get(profile_.get()); |