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