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

Unified Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc

Issue 198063003: Revert of Shelf Cleanup (- binary files) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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/ash/launcher/chrome_launcher_controller_unittest.cc
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
index 5033de334f560ccd0cf1297da68cc92b80230923..e104fc12cc7f448b9da5e68cee7806eb0c3fadcb 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
@@ -616,6 +616,27 @@
DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerTest);
};
+// The testing framework to test the legacy shelf layout.
+class LegacyShelfLayoutChromeLauncherControllerTest
+ : public ChromeLauncherControllerTest {
+ protected:
+ LegacyShelfLayoutChromeLauncherControllerTest() {
+ }
+
+ virtual ~LegacyShelfLayoutChromeLauncherControllerTest() {
+ }
+
+ // Overwrite the Setup function to use the legacy shelf layout option.
+ virtual void SetUp() OVERRIDE {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ ash::switches::kAshDisableAlternateShelfLayout);
+ ChromeLauncherControllerTest::SetUp();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(LegacyShelfLayoutChromeLauncherControllerTest);
+};
+
#if defined(OS_CHROMEOS)
// A browser window proxy which is able to associate an aura native window with
// it.
@@ -951,9 +972,179 @@
};
#endif // defined(OS_CHROMEOS)
+TEST_F(LegacyShelfLayoutChromeLauncherControllerTest, DefaultApps) {
+ InitLauncherController();
+ // Model should only contain the browser shortcut and app list items.
+ EXPECT_EQ(2, model_->item_count());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+
+ // Installing |extension3_| should add it to the launcher - behind the
+ // chrome icon.
+ extension_service_->AddExtension(extension3_.get());
+ EXPECT_EQ("Chrome, App3, AppList", GetPinnedAppStatus());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+}
+
+// Check that the restauration of launcher items is happening in the same order
+// as the user has pinned them (on another system) when they are synced reverse
+// order.
+TEST_F(LegacyShelfLayoutChromeLauncherControllerTest,
+ RestoreDefaultAppsReverseOrder) {
+ InitLauncherController();
+
+ base::ListValue policy_value;
+ InsertPrefValue(&policy_value, 0, extension1_->id());
+ InsertPrefValue(&policy_value, 1, extension2_->id());
+ InsertPrefValue(&policy_value, 2, extension3_->id());
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value.DeepCopy());
+ EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex));
+ // Model should only contain the browser shortcut and app list items.
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus());
+
+ // Installing |extension3_| should add it to the shelf - behind the
+ // chrome icon.
+ ash::ShelfItem item;
+ extension_service_->AddExtension(extension3_.get());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+ EXPECT_EQ("Chrome, App3, AppList", GetPinnedAppStatus());
+
+ // Installing |extension2_| should add it to the launcher - behind the
+ // chrome icon, but in first location.
+ extension_service_->AddExtension(extension2_.get());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_EQ("Chrome, App2, App3, AppList", GetPinnedAppStatus());
+
+ // Installing |extension1_| should add it to the launcher - behind the
+ // chrome icon, but in first location.
+ extension_service_->AddExtension(extension1_.get());
+ EXPECT_EQ("Chrome, App1, App2, App3, AppList", GetPinnedAppStatus());
+}
+
+// Check that the restauration of launcher items is happening in the same order
+// as the user has pinned them (on another system) when they are synced random
+// order.
+TEST_F(LegacyShelfLayoutChromeLauncherControllerTest,
+ RestoreDefaultAppsRandomOrder) {
+ InitLauncherController();
+
+ base::ListValue policy_value;
+ InsertPrefValue(&policy_value, 0, extension1_->id());
+ InsertPrefValue(&policy_value, 1, extension2_->id());
+ InsertPrefValue(&policy_value, 2, extension3_->id());
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value.DeepCopy());
+ EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex));
+ // Model should only contain the browser shortcut and app list items.
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus());
+
+ // Installing |extension2_| should add it to the launcher - behind the
+ // chrome icon.
+ extension_service_->AddExtension(extension2_.get());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("Chrome, App2, AppList", GetPinnedAppStatus());
+
+ // Installing |extension1_| should add it to the launcher - behind the
+ // chrome icon, but in first location.
+ extension_service_->AddExtension(extension1_.get());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("Chrome, App1, App2, AppList", GetPinnedAppStatus());
+
+ // Installing |extension3_| should add it to the launcher - behind the
+ // chrome icon, but in first location.
+ extension_service_->AddExtension(extension3_.get());
+ EXPECT_EQ("Chrome, App1, App2, App3, AppList", GetPinnedAppStatus());
+}
+
// Check that the restauration of launcher items is happening in the same order
// as the user has pinned / moved them (on another system) when they are synced
// random order - including the chrome icon.
+TEST_F(LegacyShelfLayoutChromeLauncherControllerTest,
+ RestoreDefaultAppsRandomOrderChromeMoved) {
+ InitLauncherController();
+
+ base::ListValue policy_value;
+ InsertPrefValue(&policy_value, 0, extension1_->id());
+ InsertPrefValue(&policy_value, 1, extension2_->id());
+ InsertPrefValue(&policy_value, 2, extension3_->id());
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value.DeepCopy());
+ profile()->GetTestingPrefService()->SetInteger(prefs::kShelfChromeIconIndex,
+ 1);
+ // Model should only contain the browser shortcut and app list items.
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("Chrome, AppList", GetPinnedAppStatus());
+
+ // Installing |extension2_| should add it to the shelf - behind the
+ // chrome icon.
+ ash::ShelfItem item;
+ extension_service_->AddExtension(extension2_.get());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("Chrome, App2, AppList", GetPinnedAppStatus());
+
+ // Installing |extension1_| should add it to the launcher - behind the
+ // chrome icon, but in first location.
+ extension_service_->AddExtension(extension1_.get());
+ EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
+ EXPECT_EQ("App1, Chrome, App2, AppList", GetPinnedAppStatus());
+
+ // Installing |extension3_| should add it to the launcher - behind the
+ // chrome icon, but in first location.
+ extension_service_->AddExtension(extension3_.get());
+ EXPECT_EQ("App1, Chrome, App2, App3, AppList", GetPinnedAppStatus());
+}
+
+// Check that syncing to a different state does the correct thing.
+TEST_F(LegacyShelfLayoutChromeLauncherControllerTest,
+ RestoreDefaultAppsResyncOrder) {
+ InitLauncherController();
+ base::ListValue policy_value;
+ InsertPrefValue(&policy_value, 0, extension1_->id());
+ InsertPrefValue(&policy_value, 1, extension2_->id());
+ InsertPrefValue(&policy_value, 2, extension3_->id());
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value.DeepCopy());
+ EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex));
+ extension_service_->AddExtension(extension2_.get());
+ extension_service_->AddExtension(extension1_.get());
+ extension_service_->AddExtension(extension3_.get());
+ EXPECT_EQ("Chrome, App1, App2, App3, AppList", GetPinnedAppStatus());
+
+ // Change the order with increasing chrome position and decreasing position.
+ base::ListValue policy_value1;
+ InsertPrefValue(&policy_value1, 0, extension3_->id());
+ InsertPrefValue(&policy_value1, 1, extension1_->id());
+ InsertPrefValue(&policy_value1, 2, extension2_->id());
+ profile()->GetTestingPrefService()->SetInteger(prefs::kShelfChromeIconIndex,
+ 2);
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value1.DeepCopy());
+ EXPECT_EQ("App3, App1, Chrome, App2, AppList", GetPinnedAppStatus());
+ base::ListValue policy_value2;
+ InsertPrefValue(&policy_value2, 0, extension2_->id());
+ InsertPrefValue(&policy_value2, 1, extension3_->id());
+ InsertPrefValue(&policy_value2, 2, extension1_->id());
+ profile()->GetTestingPrefService()->SetInteger(prefs::kShelfChromeIconIndex,
+ 1);
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value2.DeepCopy());
+ EXPECT_EQ("App2, Chrome, App3, App1, AppList", GetPinnedAppStatus());
+}
+
TEST_F(ChromeLauncherControllerTest, DefaultApps) {
InitLauncherController();
// Model should only contain the browser shortcut and app list items.
@@ -968,6 +1159,29 @@
EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus());
EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
+}
+
+// Check that changing from the alternate shelf layout to the old shelflayout
+// and back does keep the app launcher at location #0.
+TEST_F(ChromeLauncherControllerTest,
+ SwitchingFromAlternateShelfLayoutToLegacyAndBack) {
+ InitLauncherController();
+
+ // We simulate this problem by intentionally placing the app list item in
+ // the middle of several apps which caused a crash (see crbug.com/329597).
+ const char kAppShelfIdPlaceholder[] = "AppShelfIDPlaceholder--------";
+
+ base::ListValue policy_value;
+ InsertPrefValue(&policy_value, 0, extension1_->id());
+ InsertPrefValue(&policy_value, 1, kAppShelfIdPlaceholder);
+ InsertPrefValue(&policy_value, 2, extension2_->id());
+ profile()->GetTestingPrefService()->SetUserPref(prefs::kPinnedLauncherApps,
+ policy_value.DeepCopy());
+ EXPECT_EQ(0, profile()->GetPrefs()->GetInteger(prefs::kShelfChromeIconIndex));
+ // Model should only contain the browser shortcut and app list items.
+ extension_service_->AddExtension(extension1_.get());
+ extension_service_->AddExtension(extension2_.get());
+ EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
}
// Check that the restauration of launcher items is happening in the same order

Powered by Google App Engine
This is Rietveld 408576698