Index: ash/shelf/shelf_model_unittest.cc |
diff --git a/ash/shelf/shelf_model_unittest.cc b/ash/shelf/shelf_model_unittest.cc |
index 817f2010ef92a03db5849b077451ec2668dfd3f3..8fc120ca8695741c4eebaf0d0fda577ac87dc68a 100644 |
--- a/ash/shelf/shelf_model_unittest.cc |
+++ b/ash/shelf/shelf_model_unittest.cc |
@@ -302,6 +302,89 @@ |
EXPECT_EQ(running_app_index, model_->FirstRunningAppIndex()); |
} |
+// Assertions around where items are added. |
+TEST_F(ShelfModelTest, AddIndicesForLegacyShelfLayout) { |
+ CommandLine::ForCurrentProcess()->AppendSwitch( |
+ ash::switches::kAshDisableAlternateShelfLayout); |
+ |
+ // Insert browser short cut at index 0. |
+ ShelfItem browser_shortcut; |
+ browser_shortcut.type = TYPE_BROWSER_SHORTCUT; |
+ int browser_shortcut_index = model_->Add(browser_shortcut); |
+ EXPECT_EQ(0, browser_shortcut_index); |
+ |
+ // platform app items should be after browser shortcut. |
+ ShelfItem item; |
+ item.type = TYPE_PLATFORM_APP; |
+ int platform_app_index1 = model_->Add(item); |
+ EXPECT_EQ(1, platform_app_index1); |
+ |
+ // Add another platform app item, it should follow first. |
+ int platform_app_index2 = model_->Add(item); |
+ EXPECT_EQ(2, platform_app_index2); |
+ |
+ // APP_SHORTCUT priority is higher than PLATFORM_APP but same as |
+ // BROWSER_SHORTCUT. So APP_SHORTCUT is located after BROWSER_SHORCUT. |
+ item.type = TYPE_APP_SHORTCUT; |
+ int app_shortcut_index1 = model_->Add(item); |
+ EXPECT_EQ(1, app_shortcut_index1); |
+ |
+ item.type = TYPE_APP_SHORTCUT; |
+ int app_shortcut_index2 = model_->Add(item); |
+ EXPECT_EQ(2, app_shortcut_index2); |
+ |
+ // Check that AddAt() figures out the correct indexes for app shortcuts. |
+ // APP_SHORTCUT and BROWSER_SHORTCUT has the same weight. |
+ // So APP_SHORTCUT is located at index 0. And, BROWSER_SHORTCUT is located at |
+ // index 1. |
+ item.type = TYPE_APP_SHORTCUT; |
+ int app_shortcut_index3 = model_->AddAt(0, item); |
+ EXPECT_EQ(0, app_shortcut_index3); |
+ |
+ item.type = TYPE_APP_SHORTCUT; |
+ int app_shortcut_index4 = model_->AddAt(5, item); |
+ EXPECT_EQ(4, app_shortcut_index4); |
+ |
+ item.type = TYPE_APP_SHORTCUT; |
+ int app_shortcut_index5 = model_->AddAt(2, item); |
+ EXPECT_EQ(2, app_shortcut_index5); |
+ |
+ // Before there are any panels, no icons should be right aligned. |
+ EXPECT_EQ(model_->item_count(), model_->FirstPanelIndex()); |
+ |
+ // Check that AddAt() figures out the correct indexes for platform apps and |
+ // panels. |
+ item.type = TYPE_PLATFORM_APP; |
+ int platform_app_index3 = model_->AddAt(2, item); |
+ EXPECT_EQ(6, platform_app_index3); |
+ |
+ item.type = TYPE_APP_PANEL; |
+ int app_panel_index1 = model_->AddAt(2, item); |
+ EXPECT_EQ(10, app_panel_index1); |
+ |
+ item.type = TYPE_PLATFORM_APP; |
+ int platform_app_index4 = model_->AddAt(11, item); |
+ EXPECT_EQ(9, platform_app_index4); |
+ |
+ item.type = TYPE_APP_PANEL; |
+ int app_panel_index2 = model_->AddAt(12, item); |
+ EXPECT_EQ(12, app_panel_index2); |
+ |
+ item.type = TYPE_PLATFORM_APP; |
+ int platform_app_index5 = model_->AddAt(7, item); |
+ EXPECT_EQ(7, platform_app_index5); |
+ |
+ item.type = TYPE_APP_PANEL; |
+ int app_panel_index3 = model_->AddAt(13, item); |
+ EXPECT_EQ(13, app_panel_index3); |
+ |
+ // Right aligned index should be the first app panel index. |
+ EXPECT_EQ(12, model_->FirstPanelIndex()); |
+ |
+ EXPECT_EQ(TYPE_BROWSER_SHORTCUT, model_->items()[1].type); |
+ EXPECT_EQ(TYPE_APP_LIST, model_->items()[model_->FirstPanelIndex() - 1].type); |
+} |
+ |
// Assertions around id generation and usage. |
TEST_F(ShelfModelTest, ShelfIDTests) { |
// Get the next to use ID counter. |
@@ -355,4 +438,34 @@ |
EXPECT_EQ(TYPE_PLATFORM_APP, model_->items()[4].type); |
} |
+TEST_F(ShelfModelTest, CorrectMoveItemsWhenStateChangeForLegacyShelfLayout) { |
+ CommandLine::ForCurrentProcess()->AppendSwitch( |
+ ash::switches::kAshDisableAlternateShelfLayout); |
+ |
+ // The first item is the browser and the second item is app list. |
+ ShelfItem browser_shortcut; |
+ browser_shortcut.type = TYPE_BROWSER_SHORTCUT; |
+ int browser_shortcut_index = model_->Add(browser_shortcut); |
+ EXPECT_EQ(0, browser_shortcut_index); |
+ EXPECT_EQ(TYPE_APP_LIST, model_->items()[1].type); |
+ |
+ // Add three shortcuts. They should all be moved between the two. |
+ ShelfItem item; |
+ item.type = TYPE_APP_SHORTCUT; |
+ int app1_index = model_->Add(item); |
+ EXPECT_EQ(1, app1_index); |
+ int app2_index = model_->Add(item); |
+ EXPECT_EQ(2, app2_index); |
+ int app3_index = model_->Add(item); |
+ EXPECT_EQ(3, app3_index); |
+ |
+ // Now change the type of the second item and make sure that it is moving |
+ // behind the shortcuts. |
+ item.type = TYPE_PLATFORM_APP; |
+ model_->Set(app2_index, item); |
+ |
+ // The item should have moved in front of the app launcher. |
+ EXPECT_EQ(TYPE_PLATFORM_APP, model_->items()[3].type); |
+} |
+ |
} // namespace ash |