aura_test_helper.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/aura_test_helper.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/message_loop.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/run_loop.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/client/aura_constants.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/client/default_capture_client.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/env.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/focus_manager.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/display_manager.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/root_window.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/single_display_manager.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/test_activation_client.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/test_screen.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/test_stacking_client.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/ui_controls_aura.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/test/dummy_input_method.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/compositor/layer_animator.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/ui_controls/ui_controls.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AuraTestHelper::AuraTestHelper(MessageLoopForUI* message_loop) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : setup_called_(false), 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) teardown_called_(false), 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) owns_root_window_(false) { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(message_loop); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) message_loop_ = message_loop; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Disable animations during tests. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::LayerAnimator::set_disable_animations_for_test(true); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AuraTestHelper::~AuraTestHelper() { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(setup_called_) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "You have overridden SetUp but never called super class's SetUp"; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(teardown_called_) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "You have overridden TearDown but never called super class's TearDown"; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AuraTestHelper::SetUp() { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setup_called_ = true; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Env::GetInstance()->SetDisplayManager(new SingleDisplayManager); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window_.reset(aura::DisplayManager::CreateRootWindowForPrimaryDisplay()); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_screen_.reset(new aura::TestScreen(root_window_.get())); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, test_screen_.get()); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::InstallUIControlsAura(CreateUIControlsAura(root_window_.get())); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) focus_manager_.reset(new FocusManager); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window_->set_focus_manager(focus_manager_.get()); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stacking_client_.reset(new TestStackingClient(root_window_.get())); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_activation_client_.reset( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new test::TestActivationClient(root_window_.get())); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) capture_client_.reset(new client::DefaultCaptureClient(root_window_.get())); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_input_method_.reset(new ui::test::DummyInputMethod); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window_->SetProperty( 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura::client::kRootWindowInputMethodKey, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_input_method_.get()); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window_->Show(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure width != height so tests won't confuse them. 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window_->SetHostSize(gfx::Size(800, 600)); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AuraTestHelper::TearDown() { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) teardown_called_ = true; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_input_method_.reset(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stacking_client_.reset(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_activation_client_.reset(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) capture_client_.reset(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) focus_manager_.reset(); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window_.reset(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_screen_.reset(); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, NULL); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura::Env::DeleteInstance(); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AuraTestHelper::RunAllPendingInMessageLoop() { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(jbates) crbug.com/134753 Find quitters of this RunLoop and have them 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // use run_loop.QuitClosure(). 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::RunLoop run_loop(Env::GetInstance()->GetDispatcher()); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run_loop.RunUntilIdle(); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace test 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace aura 93