15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#ifndef ASH_TEST_SHELF_VIEW_TEST_API_H_
68bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#define ASH_TEST_SHELF_VIEW_TEST_API_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/shelf/shelf_item_types.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Rect;
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Size;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace ui {
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass Event;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace views {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass Button;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class OverflowBubble;
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ShelfButton;
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ShelfDelegate;
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ShelfView;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Use the api in this class to test ShelfView.
338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ShelfViewTestAPI {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  explicit ShelfViewTestAPI(ShelfView* shelf_view);
368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  ~ShelfViewTestAPI();
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Number of icons displayed.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int GetButtonCount();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieve the button at |index|.
42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ShelfButton* GetButton(int index);
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // First visible button index.
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int GetFirstVisibleIndex();
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Last visible button index.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int GetLastVisibleIndex();
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets current/ideal bounds for button at |index|.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const gfx::Rect& GetBoundsByIndex(int index);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const gfx::Rect& GetIdealBoundsByIndex(int index);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if overflow button is visible.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsOverflowButtonVisible();
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Makes shelf view show its overflow bubble.
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void ShowOverflowBubble();
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets animation duration in milliseconds for test.
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetAnimationDuration(int duration_ms);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Runs message loop and waits until all add/remove animations are done.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RunMessageLoopUntilAnimationsDone();
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // An accessor for |shelf_view|.
67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ShelfView* shelf_view() { return shelf_view_; }
68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // An accessor for overflow bubble.
70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  OverflowBubble* overflow_bubble();
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns the preferred size of |shelf_view_|.
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  gfx::Size GetPreferredSize();
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns the button size.
76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int GetButtonSize();
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns the button space size.
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int GetButtonSpacing();
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Wrapper for ShelfView::ButtonPressed.
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void ButtonPressed(views::Button* sender, const ui::Event& event);
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Wrapper for ShelfView::SameDragType.
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool SameDragType(ShelfItemType typea, ShelfItemType typeb) const;
86ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Sets ShelfDelegate.
88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void SetShelfDelegate(ShelfDelegate* delegate);
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns re-insertable bounds in screen.
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  gfx::Rect GetBoundsForDragInsertInScreen();
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Returns true if item is ripped off.
945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool IsRippedOffFromShelf();
95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Returns true if an item is ripped off and entered into shelf.
97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool DraggedItemFromOverflowToShelf();
98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
100c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ShelfView* shelf_view_;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShelfViewTestAPI);
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace test
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif  // ASH_TEST_SHELF_VIEW_TEST_API_H_
109