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

Unified Diff: ash/shelf/shelf_view_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
« no previous file with comments | « ash/shelf/shelf_view.cc ('k') | ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/shelf/shelf_view_unittest.cc
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 87fe1b9b512436aaae546e49c01e4b6c9be99c39..3b9956e24edf92ffd6ae19fc0fb3f82e66b68531 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -270,7 +270,8 @@
shelf_view_ = ShelfTestAPI(shelf).shelf_view();
// The bounds should be big enough for 4 buttons + overflow chevron.
- shelf_view_->SetBounds(0, 0, 500, kShelfSize);
+ shelf_view_->SetBounds(0, 0, 500,
+ internal::ShelfLayoutManager::GetPreferredShelfSize());
test_api_.reset(new ShelfViewTestAPI(shelf_view_));
test_api_->SetAnimationDuration(1); // Speeds up animation for test.
@@ -581,6 +582,24 @@
DISALLOW_COPY_AND_ASSIGN(ShelfViewTest);
};
+class ShelfViewLegacyShelfLayoutTest : public ShelfViewTest {
+ public:
+ ShelfViewLegacyShelfLayoutTest() : ShelfViewTest() {
+ browser_index_ = 0;
+ }
+
+ virtual ~ShelfViewLegacyShelfLayoutTest() {}
+
+ virtual void SetUp() OVERRIDE {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ ash::switches::kAshDisableAlternateShelfLayout);
+ ShelfViewTest::SetUp();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ShelfViewLegacyShelfLayoutTest);
+};
+
class ScopedTextDirectionChange {
public:
ScopedTextDirectionChange(bool is_rtl)
@@ -726,6 +745,33 @@
EXPECT_FALSE(GetButtonByID(browser_button_id)->visible());
}
+TEST_F(ShelfViewLegacyShelfLayoutTest,
+ AddAppShortcutWithBrowserButtonUntilOverflow) {
+ // All buttons should be visible.
+ ASSERT_EQ(test_api_->GetButtonCount(),
+ test_api_->GetLastVisibleIndex() + 1);
+
+
+ ShelfID browser_button_id = AddPlatformApp();
+
+ // Add app shortcut until overflow.
+ int items_added = 0;
+ ShelfID last_added = AddAppShortcut();
+ while (!test_api_->IsOverflowButtonVisible()) {
+ // Added button is visible after animation while in this loop.
+ EXPECT_TRUE(GetButtonByID(last_added)->visible());
+
+ last_added = AddAppShortcut();
+ ++items_added;
+ ASSERT_LT(items_added, 10000);
+ }
+
+ // The last added app short button should be visible.
+ EXPECT_TRUE(GetButtonByID(last_added)->visible());
+ // And the platform app button is invisible.
+ EXPECT_FALSE(GetButtonByID(browser_button_id)->visible());
+}
+
TEST_F(ShelfViewTest, AddPanelHidesPlatformAppButton) {
// All buttons should be visible.
ASSERT_EQ(test_api_->GetButtonCount(),
@@ -754,6 +800,36 @@
EXPECT_FALSE(test_api_->IsOverflowButtonVisible());
}
+TEST_F(ShelfViewLegacyShelfLayoutTest, AddPanelHidesPlatformAppButton) {
+ // All buttons should be visible.
+ ASSERT_EQ(test_api_->GetButtonCount(),
+ test_api_->GetLastVisibleIndex() + 1);
+
+ // Add platform app button until overflow, remember last visible platform app
+ // button.
+ int items_added = 0;
+ ShelfID first_added = AddPlatformApp();
+ EXPECT_TRUE(GetButtonByID(first_added)->visible());
+ ShelfID last_visible = first_added;
+ while (true) {
+ ShelfID added = AddPlatformApp();
+ if (test_api_->IsOverflowButtonVisible()) {
+ EXPECT_FALSE(GetButtonByID(added)->visible());
+ break;
+ }
+ last_visible = added;
+ ++items_added;
+ ASSERT_LT(items_added, 10000);
+ }
+
+ ShelfID panel = AddPanel();
+ EXPECT_TRUE(GetButtonByID(panel)->visible());
+ EXPECT_FALSE(GetButtonByID(last_visible)->visible());
+
+ RemoveByID(panel);
+ EXPECT_TRUE(GetButtonByID(last_visible)->visible());
+}
+
// When there are more panels then platform app buttons we should hide panels
// rather than platform apps.
TEST_F(ShelfViewTest, PlatformAppHidesExcessPanels) {
@@ -937,6 +1013,72 @@
// Adding a shelf item at the end (i.e. a panel) canels drag and respects
// the order.
dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3);
+ new_id = AddPanel();
+ id_map.insert(id_map.begin() + 7,
+ std::make_pair(new_id, GetButtonByID(new_id)));
+ ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
+ button_host->PointerReleasedOnButton(dragged_button,
+ internal::ShelfButtonHost::MOUSE,
+ false);
+}
+
+TEST_F(ShelfViewLegacyShelfLayoutTest, ModelChangesWhileDragging) {
+ internal::ShelfButtonHost* button_host = shelf_view_;
+
+ std::vector<std::pair<ShelfID, views::View*> > id_map;
+ SetupForDragTest(&id_map);
+
+ // Dragging browser shortcut at index 0.
+ EXPECT_TRUE(model_->items()[0].type == TYPE_BROWSER_SHORTCUT);
+ views::View* dragged_button = SimulateDrag(
+ internal::ShelfButtonHost::MOUSE, 0, 2);
+ std::rotate(id_map.begin(),
+ id_map.begin() + 1,
+ id_map.begin() + 3);
+ ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
+ button_host->PointerReleasedOnButton(dragged_button,
+ internal::ShelfButtonHost::MOUSE,
+ false);
+ EXPECT_TRUE(model_->items()[2].type == TYPE_BROWSER_SHORTCUT);
+
+ // Dragging changes model order.
+ dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
+ std::rotate(id_map.begin(),
+ id_map.begin() + 1,
+ id_map.begin() + 3);
+ ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
+
+ // Cancelling the drag operation restores previous order.
+ button_host->PointerReleasedOnButton(dragged_button,
+ internal::ShelfButtonHost::MOUSE,
+ true);
+ std::rotate(id_map.begin(),
+ id_map.begin() + 2,
+ id_map.begin() + 3);
+ ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
+
+ // Deleting an item keeps the remaining intact.
+ dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
+ model_->RemoveItemAt(1);
+ id_map.erase(id_map.begin() + 1);
+ ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
+ button_host->PointerReleasedOnButton(dragged_button,
+ internal::ShelfButtonHost::MOUSE,
+ false);
+
+ // Adding a shelf item cancels the drag and respects the order.
+ dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
+ ShelfID new_id = AddAppShortcut();
+ id_map.insert(id_map.begin() + 5,
+ std::make_pair(new_id, GetButtonByID(new_id)));
+ ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
+ button_host->PointerReleasedOnButton(dragged_button,
+ internal::ShelfButtonHost::MOUSE,
+ false);
+
+ // Adding a shelf item at the end (i.e. a panel) canels drag and respects
+ // the order.
+ dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
new_id = AddPanel();
id_map.insert(id_map.begin() + 7,
std::make_pair(new_id, GetButtonByID(new_id)));
@@ -1037,6 +1179,40 @@
ASSERT_EQ(internal::ShelfButton::STATE_ATTENTION, button->state());
}
+TEST_F(ShelfViewLegacyShelfLayoutTest,
+ ShelfItemPositionReflectedOnStateChanged) {
+ // All buttons should be visible.
+ ASSERT_EQ(test_api_->GetButtonCount(),
+ test_api_->GetLastVisibleIndex() + 1);
+
+ // Add 2 items to the shelf.
+ ShelfID item1_id = AddPlatformApp();
+ ShelfID item2_id = AddPlatformAppNoWait();
+ internal::ShelfButton* item1_button = GetButtonByID(item1_id);
+ internal::ShelfButton* item2_button = GetButtonByID(item2_id);
+
+ internal::ShelfButton::State state_mask =
+ static_cast<internal::ShelfButton::State>(
+ internal::ShelfButton::STATE_NORMAL |
+ internal::ShelfButton::STATE_HOVERED |
+ internal::ShelfButton::STATE_RUNNING |
+ internal::ShelfButton::STATE_ACTIVE |
+ internal::ShelfButton::STATE_ATTENTION |
+ internal::ShelfButton::STATE_FOCUSED);
+
+ // Clear the button states.
+ item1_button->ClearState(state_mask);
+ item2_button->ClearState(state_mask);
+
+ // Since default alignment in tests is bottom, state is reflected in y-axis.
+ ASSERT_EQ(item1_button->GetIconBounds().y(),
+ item2_button->GetIconBounds().y());
+ item1_button->AddState(internal::ShelfButton::STATE_HOVERED);
+ ASSERT_NE(item1_button->GetIconBounds().y(),
+ item2_button->GetIconBounds().y());
+ item1_button->ClearState(internal::ShelfButton::STATE_HOVERED);
+}
+
// Confirm that item status changes are reflected in the buttons
// for platform apps.
TEST_F(ShelfViewTest, ShelfItemStatusPlatformApp) {
@@ -1298,7 +1474,7 @@
// Resize shelf view with that animation running and stay overflown.
gfx::Rect bounds = shelf_view_->bounds();
- bounds.set_width(bounds.width() - kShelfSize);
+ bounds.set_width(bounds.width() - kShelfPreferredSize);
shelf_view_->SetBoundsRect(bounds);
ASSERT_TRUE(test_api_->IsOverflowButtonVisible());
@@ -1371,6 +1547,17 @@
test_for_overflow_view.GetPreferredSize().width());
}
+// Check that the first item in the list follows Fitt's law by including the
+// first pixel and being therefore bigger then the others.
+TEST_F(ShelfViewLegacyShelfLayoutTest, CheckFittsLaw) {
+ // All buttons should be visible.
+ ASSERT_EQ(test_api_->GetButtonCount(),
+ test_api_->GetLastVisibleIndex() + 1);
+ gfx::Rect ideal_bounds_0 = test_api_->GetIdealBoundsByIndex(0);
+ gfx::Rect ideal_bounds_1 = test_api_->GetIdealBoundsByIndex(1);
+ EXPECT_GT(ideal_bounds_0.width(), ideal_bounds_1.width());
+}
+
// Check the drag insertion bounds of scrolled overflow bubble.
TEST_F(ShelfViewTest, CheckDragInsertBoundsOfScrolledOverflowBubble) {
UpdateDisplay("400x300");
@@ -1437,7 +1624,8 @@
ShelfTestAPI(secondary_shelf).shelf_view();
// The bounds should be big enough for 4 buttons + overflow chevron.
- shelf_view_for_secondary->SetBounds(0, 0, 500, kShelfSize);
+ shelf_view_for_secondary->SetBounds(0, 0, 500,
+ internal::ShelfLayoutManager::GetPreferredShelfSize());
ShelfViewTestAPI test_api_for_secondary(shelf_view_for_secondary);
// Speeds up animation for test.
« no previous file with comments | « ash/shelf/shelf_view.cc ('k') | ash/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698