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

Unified Diff: chrome/browser/ui/app_list/app_list_extension_sorting_unittest.cc

Issue 17038002: Separate the NTP app ordering from the app list app ordering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rework + fix tests Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/app_list/app_list_extension_sorting_unittest.cc
diff --git a/chrome/browser/ui/app_list/app_list_extension_sorting_unittest.cc b/chrome/browser/ui/app_list/app_list_extension_sorting_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9ba8aca35bb75b8e4e52a4bda40bc125f4da62fb
--- /dev/null
+++ b/chrome/browser/ui/app_list/app_list_extension_sorting_unittest.cc
@@ -0,0 +1,233 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/app_list/app_list_extension_sorting.h"
+
+#include <string>
+
+#include "chrome/browser/extensions/extension_prefs_unittest.h"
+#include "chrome/browser/extensions/extension_sorting.h"
+#include "chrome/browser/extensions/test_extension_service.h"
+#include "chrome/common/extensions/extension_constants.h"
+#include "sync/api/string_ordinal.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const char kNotInstalledAppId[] = "dceacbkfkmllgmjmbhgkpjegnodmildf";
+
+class MockExtensionService : public TestExtensionService {
+ public:
+ virtual const extensions::Extension* GetInstalledExtension(
+ const std::string& id) const OVERRIDE {
+ return NULL;
+ }
+ virtual void SyncExtensionChangeIfNeeded(
+ const extensions::Extension& extension) OVERRIDE {}
+};
+
+} // namespace
+
+class AppListExtensionSortingTest : public extensions::ExtensionPrefsTest {
+ public:
+ AppListExtensionSortingTest() {}
+ virtual ~AppListExtensionSortingTest() {}
+
+ virtual void SetUp() OVERRIDE {
+ prefs()->app_list_extension_sorting()->
+ SetExtensionService(&extension_service_);
+ extension_1_ = prefs_.AddApp("app_1");
+ extension_2_ = prefs_.AddApp("app_2");
+ extension_3_ = prefs_.AddApp("app_3");
+ extensions::ExtensionPrefsTest::SetUp();
+ }
+
+ protected:
+ AppListExtensionSorting* app_list_extension_sorting() {
+ return prefs()->app_list_extension_sorting();
+ }
+
+ scoped_refptr<extensions::Extension> extension_1_;
+ scoped_refptr<extensions::Extension> extension_2_;
+ scoped_refptr<extensions::Extension> extension_3_;
+
+ private:
+ MockExtensionService extension_service_;
+
+ DISALLOW_COPY_AND_ASSIGN(AppListExtensionSortingTest);
+};
+
+class AppListExtensionSortingInsertion : public AppListExtensionSortingTest {
+ public:
+ virtual void Initialize() OVERRIDE {
+ app_list_extension_sorting()->InsertAtFront(extension_1_->id());
+ app_list_extension_sorting()->InsertAtFront(extension_2_->id());
+ app_list_extension_sorting()->InsertAtBack(extension_3_->id());
+ }
+
+ virtual void Verify() OVERRIDE {
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_2_->id(), extension_1_->id()));
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_1_->id(), extension_3_->id()));
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_2_->id(), extension_3_->id()));
+ }
+};
+TEST_F(AppListExtensionSortingInsertion, AppListExtensionSortingInsertion) {}
+
+class AppListExtensionSortingContains : public AppListExtensionSortingTest {
+ public:
+ virtual void Initialize() OVERRIDE {
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(extension_1_->id()));
+ app_list_extension_sorting()->InsertAtFront(extension_1_->id());
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(extension_2_->id()));
+ app_list_extension_sorting()->InsertAtBack(extension_2_->id());
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(extension_3_->id()));
+ app_list_extension_sorting()->InsertAtBack(extension_3_->id());
+ }
+
+ virtual void Verify() OVERRIDE {
+ EXPECT_TRUE(app_list_extension_sorting()->Contains(extension_1_->id()));
+ EXPECT_TRUE(app_list_extension_sorting()->Contains(extension_2_->id()));
+ EXPECT_TRUE(app_list_extension_sorting()->Contains(extension_3_->id()));
+ }
+};
+TEST_F(AppListExtensionSortingContains, AppListExtensionSortingContains) {}
+
+class AppListExtensionSortingErase : public AppListExtensionSortingTest {
+ public:
+ virtual void Initialize() OVERRIDE {
+ app_list_extension_sorting()->InsertAtFront(kNotInstalledAppId);
+ EXPECT_TRUE(app_list_extension_sorting()->Contains(kNotInstalledAppId));
+ app_list_extension_sorting()->Erase(kNotInstalledAppId);
+ }
+
+ virtual void Verify() OVERRIDE {
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(kNotInstalledAppId));
+ }
+};
+TEST_F(AppListExtensionSortingErase, AppListExtensionSortingErase) {}
+
+class AppListExtensionSortingFixSyncCollisions
+ : public AppListExtensionSortingTest {
+ public:
+ virtual void Initialize() OVERRIDE {
+ syncer::StringOrdinal conflict_ordinal =
+ syncer::StringOrdinal::CreateInitialOrdinal();
+ app_list_extension_sorting()->
+ UpdateAppListOrdinalFromSync(extension_1_->id(), conflict_ordinal);
+ app_list_extension_sorting()->
+ UpdateAppListOrdinalFromSync(extension_2_->id(), conflict_ordinal);
+ app_list_extension_sorting()->
+ UpdateAppListOrdinalFromSync(extension_3_->id(), conflict_ordinal);
+
+ app_list_extension_sorting()->FixSyncCollisions();
+ }
+
+ virtual void Verify() OVERRIDE {
+ // Conflicts are ordered by extension id.
+ std::vector<std::string> extension_ids;
+ extension_ids.push_back(extension_1_->id());
+ extension_ids.push_back(extension_2_->id());
+ extension_ids.push_back(extension_3_->id());
+ std::sort(extension_ids.begin(), extension_ids.end());
+
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_ids[0], extension_ids[1]));
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_ids[1], extension_ids[2]));
+ }
+};
+TEST_F(AppListExtensionSortingFixSyncCollisions,
+ AppListExtensionSortingFixSyncCollisions) {}
+
+class AppListExtensionSortingDefaultAppOrder
+ : public AppListExtensionSortingTest {
+ public:
+ virtual void Initialize() OVERRIDE {
+ // Erase the default ordinals set up when constructing the test environment.
+ app_list_extension_sorting()->Erase(extension_misc::kChromeAppId);
+ app_list_extension_sorting()->Erase(extension_misc::kWebStoreAppId);
+ app_list_extension_sorting()->Erase(extension_2_->id());
+
+ // Add a pre-existing app. The default apps should be added in front of it.
+ app_list_extension_sorting()->UpdateAppListOrdinalFromSync(
+ extension_3_->id(),
+ syncer::StringOrdinal::CreateInitialOrdinal());
+
+ extensions::ExtensionIdList ids;
+ ids.push_back(kNotInstalledAppId);
+ ids.push_back(extension_3_->id());
+ app_list_extension_sorting()->Initialize(ids,
+ extensions::ExtensionIdList());
+ }
+
+ virtual void Verify() OVERRIDE {
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_misc::kChromeAppId,
+ extension_misc::kWebStoreAppId));
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_misc::kWebStoreAppId,
+ extension_3_->id()));
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(kNotInstalledAppId));
+ }
+};
+TEST_F(AppListExtensionSortingDefaultAppOrder,
+ AppListExtensionSortingDefaultAppOrder) {}
+
+class AppListExtensionSortingInitializedFromNTP
+ : public AppListExtensionSortingTest {
+ public:
+ virtual void Initialize() OVERRIDE {
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(extension_1_->id()));
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(extension_2_->id()));
+ EXPECT_FALSE(app_list_extension_sorting()->Contains(extension_3_->id()));
+
+ // Add apps to the NTP.
+ syncer::StringOrdinal first_page =
+ syncer::StringOrdinal::CreateInitialOrdinal();
+ prefs()->extension_sorting()->SetPageOrdinal(
+ extension_3_->id(),
+ first_page);
koz (OOO until 15th September) 2013/08/22 01:31:14 nit: this can go on the previous line
calamity 2013/08/22 01:39:22 Done.
+ prefs()->extension_sorting()->SetPageOrdinal(
+ extension_2_->id(),
+ first_page);
koz (OOO until 15th September) 2013/08/22 01:31:14 nit: same here
calamity 2013/08/22 01:39:22 Done.
+
+ syncer::StringOrdinal first_app =
+ syncer::StringOrdinal::CreateInitialOrdinal();
+ prefs()->extension_sorting()->SetAppLaunchOrdinal(
+ extension_3_->id(),
+ first_app);
koz (OOO until 15th September) 2013/08/22 01:31:14 nit: same here
calamity 2013/08/22 01:39:22 Done.
+ prefs()->extension_sorting()->SetAppLaunchOrdinal(
+ extension_2_->id(),
+ first_app.CreateAfter());
koz (OOO until 15th September) 2013/08/22 01:31:14 nit: same here
calamity 2013/08/22 01:39:22 Done.
+
+ extensions::ExtensionIdList ntp_sorted_extension_ids;
+ prefs()->extension_sorting()->GetOrderedExtensionIds(
+ &ntp_sorted_extension_ids);
+
+ // Add a pre-existing app to the app list. The NTP apps should be added
+ // behind it.
+ app_list_extension_sorting()->UpdateAppListOrdinalFromSync(
+ extension_1_->id(),
+ syncer::StringOrdinal::CreateInitialOrdinal());
+
+ extensions::ExtensionIdList ids;
+ ids.push_back(extension_2_->id());
+ ids.push_back(extension_3_->id());
+ ids.push_back(extension_1_->id());
+
+ app_list_extension_sorting()->Initialize(ids, ntp_sorted_extension_ids);
+ }
+
+ virtual void Verify() OVERRIDE {
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_1_->id(), extension_3_->id()));
+ EXPECT_TRUE(app_list_extension_sorting()->
+ ExtensionPrecedes(extension_3_->id(), extension_2_->id()));
+ }
+};
+TEST_F(AppListExtensionSortingInitializedFromNTP,
+ AppListExtensionSortingInitializedFromNTP) {}

Powered by Google App Engine
This is Rietveld 408576698