1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef ASH_TEST_ASH_TEST_HELPER_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define ASH_TEST_ASH_TEST_HELPER_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/compiler_specific.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace aura { 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class Window; 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace aura 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace base { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class MessageLoopForUI; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace base 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ui { 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ScopedAnimationDurationScaleMode; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ui 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace views { 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ViewsDelegate; 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ash { 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace test { 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class TestScreenshotDelegate; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TestShellDelegate; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// A helper class that does common initialization required for Ash. Creates a 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// root window and an ash::Shell instance with a test delegate. 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class AshTestHelper { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) explicit AshTestHelper(base::MessageLoopForUI* message_loop); 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ~AshTestHelper(); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Creates the ash::Shell and performs associated initialization. 41bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch // Set |start_session| to true if the user should log in before 42bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch // the test is run. 43bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch void SetUp(bool start_session); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Destroys the ash::Shell and performs associated cleanup. 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void TearDown(); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Returns a root Window. Usually this is the active root Window, but that 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // method can return NULL sometimes, and in those cases, we fall back on the 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // primary root Window. 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* CurrentContext(); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void RunAllPendingInMessageLoop(); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MessageLoopForUI* message_loop() { return message_loop_; } 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestShellDelegate* test_shell_delegate() { return test_shell_delegate_; } 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void set_test_shell_delegate(TestShellDelegate* test_shell_delegate) { 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) test_shell_delegate_ = test_shell_delegate; 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) TestScreenshotDelegate* test_screenshot_delegate() { 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return test_screenshot_delegate_; 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // True if the running environment supports multiple displays, 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // or false otherwise (e.g. win8 bot). 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static bool SupportsMultipleDisplays(); 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // True if the running environment supports host window resize, 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // or false otherwise (e.g. win8 bot). 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static bool SupportsHostWindowResize(); 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MessageLoopForUI* message_loop_; // Not owned. 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestShellDelegate* test_shell_delegate_; // Owned by ash::Shell. 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ui::ScopedAnimationDurationScaleMode> zero_duration_mode_; 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Owned by ash::AcceleratorController 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) TestScreenshotDelegate* test_screenshot_delegate_; 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<views::ViewsDelegate> views_delegate_; 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check if DBus Thread Manager was initialized here. 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool dbus_thread_manager_initialized_; 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AshTestHelper); 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace test 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ash 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // ASH_TEST_ASH_TEST_HELPER_H_ 92