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

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

Issue 2366073002: Fix crash on item drag in shelf. (Closed)
Patch Set: Created 4 years, 3 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_impl_unittest.cc
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc
index 4b3190b56537d63c21428e70c9ed0f590793525a..5af2c9063069c34c6f75f4ee3333ea605c1a29e0 100644
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_unittest.cc
@@ -3914,3 +3914,55 @@ TEST_F(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) {
EXPECT_NE(0, launcher_controller_->GetShelfIDForAppID(app_id));
EXPECT_FALSE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id));
}
+
+// Checks the case when several app items have the same ordinal position (which
+// is valid case).
+TEST_F(ChromeLauncherControllerImplTest, CheckPositionConflict) {
+ InitLauncherController();
+
+ extension_service_->AddExtension(extension1_.get());
+ extension_service_->AddExtension(extension2_.get());
+ extension_service_->AddExtension(extension3_.get());
+ extension_service_->AddExtension(extension4_.get());
+
+ syncer::SyncChangeList sync_list;
+ InsertAddPinChange(&sync_list, 0, extension_misc::kChromeAppId);
+ InsertAddPinChange(&sync_list, 1, extension1_->id());
+ InsertAddPinChange(&sync_list, 1, extension2_->id());
+ InsertAddPinChange(&sync_list, 1, extension3_->id());
+ SendPinChanges(sync_list, true);
+
+ EXPECT_EQ("AppList, Chrome, App1, App2, App3", GetPinnedAppStatus());
+
+ const syncer::StringOrdinal position_chrome =
+ app_service_->GetPinPosition(extension_misc::kChromeAppId);
+ const syncer::StringOrdinal position_1 =
+ app_service_->GetPinPosition(extension1_->id());
+ const syncer::StringOrdinal position_2 =
+ app_service_->GetPinPosition(extension2_->id());
+ const syncer::StringOrdinal position_3 =
+ app_service_->GetPinPosition(extension3_->id());
+ EXPECT_TRUE(position_chrome.LessThan(position_1));
+ EXPECT_TRUE(position_1.Equals(position_2));
+ EXPECT_TRUE(position_2.Equals(position_3));
+
+ // Move Chrome between App1 and App2.
+ // Note, move target_index is in context when moved element is removed from
+ // array first.
+ model_->Move(1, 2);
+ EXPECT_EQ("AppList, App1, Chrome, App2, App3", GetPinnedAppStatus());
+
+ // Expect sync positions for Chrome, App2, App3 are updated.
+ const syncer::StringOrdinal position_chrome_a =
+ app_service_->GetPinPosition(extension_misc::kChromeAppId);
+ const syncer::StringOrdinal position_1_a =
+ app_service_->GetPinPosition(extension1_->id());
+ const syncer::StringOrdinal position_2_a =
+ app_service_->GetPinPosition(extension2_->id());
+ const syncer::StringOrdinal position_3_a =
+ app_service_->GetPinPosition(extension3_->id());
+ EXPECT_TRUE(position_1.Equals(position_1_a));
+ EXPECT_TRUE(position_1_a.LessThan(position_chrome_a));
+ EXPECT_TRUE(position_chrome_a.LessThan(position_2_a));
+ EXPECT_TRUE(position_2_a.LessThan(position_3_a));
+}

Powered by Google App Engine
This is Rietveld 408576698