1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "athena/test/athena_test_base.h" 6 7#include "athena/env/public/athena_env.h" 8#include "athena/screen/public/screen_manager.h" 9#include "athena/test/athena_test_helper.h" 10#include "ui/aura/client/window_tree_client.h" 11#include "ui/aura/test/event_generator_delegate_aura.h" 12#include "ui/aura/window.h" 13#include "ui/compositor/test/context_factories_for_test.h" 14 15#if defined(USE_X11) 16#include "ui/aura/window_tree_host_x11.h" 17#endif 18 19namespace athena { 20namespace test { 21 22AthenaTestBase::AthenaTestBase() 23 : setup_called_(false), teardown_called_(false) { 24} 25 26AthenaTestBase::~AthenaTestBase() { 27 CHECK(setup_called_) 28 << "You have overridden SetUp but never called super class's SetUp"; 29 CHECK(teardown_called_) 30 << "You have overridden TearDown but never called super class's TearDown"; 31} 32 33void AthenaTestBase::SetUp() { 34 setup_called_ = true; 35 testing::Test::SetUp(); 36 37 // The ContextFactory must exist before any Compositors are created. 38 bool enable_pixel_output = false; 39 ui::ContextFactory* context_factory = 40 ui::InitializeContextFactoryForTests(enable_pixel_output); 41 42 helper_.reset(new AthenaTestHelper(&message_loop_)); 43#if defined(USE_X11) 44 aura::test::SetUseOverrideRedirectWindowByDefault(true); 45#endif 46 aura::test::InitializeAuraEventGeneratorDelegate(); 47 helper_->SetUp(context_factory); 48} 49 50void AthenaTestBase::TearDown() { 51 AthenaEnv::Get()->OnTerminating(); 52 53 teardown_called_ = true; 54 55 // Flush the message loop because we have pending release tasks 56 // and these tasks if un-executed would upset Valgrind. 57 RunAllPendingInMessageLoop(); 58 59 helper_->TearDown(); 60 ui::TerminateContextFactoryForTests(); 61 testing::Test::TearDown(); 62} 63 64void AthenaTestBase::RunAllPendingInMessageLoop() { 65 helper_->RunAllPendingInMessageLoop(); 66} 67 68scoped_ptr<aura::Window> AthenaTestBase::CreateTestWindow( 69 aura::WindowDelegate* delegate, 70 const gfx::Rect& bounds) { 71 scoped_ptr<aura::Window> window(new aura::Window(delegate)); 72 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); 73 window->Init(aura::WINDOW_LAYER_SOLID_COLOR); 74 aura::client::ParentWindowWithContext( 75 window.get(), ScreenManager::Get()->GetContext(), bounds); 76 return window.Pass(); 77} 78 79} // namespace test 80} // namespace athena 81