1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef ASH_TEST_SHELF_VIEW_TEST_API_H_ 6 #define ASH_TEST_SHELF_VIEW_TEST_API_H_ 7 8 #include "ash/shelf/shelf_item_types.h" 9 #include "base/basictypes.h" 10 11 namespace gfx { 12 class Rect; 13 class Size; 14 } 15 16 namespace ui { 17 class Event; 18 } 19 20 namespace views { 21 class Button; 22 } 23 24 namespace ash { 25 class OverflowBubble; 26 class ShelfButton; 27 class ShelfDelegate; 28 class ShelfView; 29 30 namespace test { 31 32 // Use the api in this class to test ShelfView. 33 class ShelfViewTestAPI { 34 public: 35 explicit ShelfViewTestAPI(ShelfView* shelf_view); 36 ~ShelfViewTestAPI(); 37 38 // Number of icons displayed. 39 int GetButtonCount(); 40 41 // Retrieve the button at |index|. 42 ShelfButton* GetButton(int index); 43 44 // First visible button index. 45 int GetFirstVisibleIndex(); 46 47 // Last visible button index. 48 int GetLastVisibleIndex(); 49 50 // Gets current/ideal bounds for button at |index|. 51 const gfx::Rect& GetBoundsByIndex(int index); 52 const gfx::Rect& GetIdealBoundsByIndex(int index); 53 54 // Returns true if overflow button is visible. 55 bool IsOverflowButtonVisible(); 56 57 // Makes shelf view show its overflow bubble. 58 void ShowOverflowBubble(); 59 60 // Sets animation duration in milliseconds for test. 61 void SetAnimationDuration(int duration_ms); 62 63 // Runs message loop and waits until all add/remove animations are done. 64 void RunMessageLoopUntilAnimationsDone(); 65 66 // An accessor for |shelf_view|. shelf_view()67 ShelfView* shelf_view() { return shelf_view_; } 68 69 // An accessor for overflow bubble. 70 OverflowBubble* overflow_bubble(); 71 72 // Returns the preferred size of |shelf_view_|. 73 gfx::Size GetPreferredSize(); 74 75 // Returns the button size. 76 int GetButtonSize(); 77 78 // Returns the button space size. 79 int GetButtonSpacing(); 80 81 // Wrapper for ShelfView::ButtonPressed. 82 void ButtonPressed(views::Button* sender, const ui::Event& event); 83 84 // Wrapper for ShelfView::SameDragType. 85 bool SameDragType(ShelfItemType typea, ShelfItemType typeb) const; 86 87 // Sets ShelfDelegate. 88 void SetShelfDelegate(ShelfDelegate* delegate); 89 90 // Returns re-insertable bounds in screen. 91 gfx::Rect GetBoundsForDragInsertInScreen(); 92 93 // Returns true if item is ripped off. 94 bool IsRippedOffFromShelf(); 95 96 // Returns true if an item is ripped off and entered into shelf. 97 bool DraggedItemFromOverflowToShelf(); 98 99 private: 100 ShelfView* shelf_view_; 101 102 DISALLOW_COPY_AND_ASSIGN(ShelfViewTestAPI); 103 }; 104 105 } // namespace test 106 } // namespace ash 107 108 #endif // ASH_TEST_SHELF_VIEW_TEST_API_H_ 109