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)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class OverflowBubble;
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ShelfButton;
19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ShelfDelegate;
208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ShelfView;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Use the api in this class to test ShelfView.
258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ShelfViewTestAPI {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  explicit ShelfViewTestAPI(ShelfView* shelf_view);
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  ~ShelfViewTestAPI();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Number of icons displayed.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int GetButtonCount();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieve the button at |index|.
34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ShelfButton* GetButton(int index);
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // First visible button index.
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int GetFirstVisibleIndex();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Last visible button index.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int GetLastVisibleIndex();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets current/ideal bounds for button at |index|.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const gfx::Rect& GetBoundsByIndex(int index);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const gfx::Rect& GetIdealBoundsByIndex(int index);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if overflow button is visible.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsOverflowButtonVisible();
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Makes shelf view show its overflow bubble.
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void ShowOverflowBubble();
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets animation duration in milliseconds for test.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetAnimationDuration(int duration_ms);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Runs message loop and waits until all add/remove animations are done.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RunMessageLoopUntilAnimationsDone();
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // An accessor for |shelf_view|.
59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ShelfView* shelf_view() { return shelf_view_; }
60a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // An accessor for overflow bubble.
62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  OverflowBubble* overflow_bubble();
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns the preferred size of |shelf_view_|.
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  gfx::Size GetPreferredSize();
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns the button size.
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int GetButtonSize();
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns the button space size.
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int GetButtonSpacing();
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Wrapper for ShelfView::SameDragType.
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool SameDragType(ShelfItemType typea, ShelfItemType typeb) const;
75ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Sets ShelfDelegate.
77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void SetShelfDelegate(ShelfDelegate* delegate);
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Returns re-insertable bounds in screen.
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  gfx::Rect GetBoundsForDragInsertInScreen();
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Returns true if item is ripped off.
835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool IsRippedOffFromShelf();
84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Returns true if an item is ripped off and entered into shelf.
86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool DraggedItemFromOverflowToShelf();
87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
89c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ShelfView* shelf_view_;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShelfViewTestAPI);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace test
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif  // ASH_TEST_SHELF_VIEW_TEST_API_H_
98