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