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