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

Unified Diff: chrome/browser/ui/app_list/arc/arc_app_unittest.cc

Issue 2520173002: arc: Fix duplicate icons in app launcher in case of crash. (Closed)
Patch Set: clean up Created 4 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 side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698