| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/views/test/views_test_base.h" |
| |
| #include "base/run_loop.h" |
| #include "ui/base/clipboard/clipboard.h" |
| |
| namespace views { |
| |
| ViewsTestBase::ViewsTestBase() |
| : setup_called_(false), |
| teardown_called_(false) { |
| } |
| |
| ViewsTestBase::~ViewsTestBase() { |
| CHECK(setup_called_) |
| << "You have overridden SetUp but never called super class's SetUp"; |
| CHECK(teardown_called_) |
| << "You have overridden TearDown but never called super class's TearDown"; |
| } |
| |
| void ViewsTestBase::SetUp() { |
| testing::Test::SetUp(); |
| setup_called_ = true; |
| if (!views_delegate_for_setup_) |
| views_delegate_for_setup_.reset(new TestViewsDelegate()); |
| |
| test_helper_.reset( |
| new ScopedViewsTestHelper(views_delegate_for_setup_.Pass())); |
| } |
| |
| void ViewsTestBase::TearDown() { |
| ui::Clipboard::DestroyClipboardForCurrentThread(); |
| |
| // Flush the message loop because we have pending release tasks |
| // and these tasks if un-executed would upset Valgrind. |
| RunPendingMessages(); |
| teardown_called_ = true; |
| testing::Test::TearDown(); |
| test_helper_.reset(); |
| } |
| |
| void ViewsTestBase::RunPendingMessages() { |
| base::RunLoop run_loop; |
| run_loop.RunUntilIdle(); |
| } |
| |
| Widget::InitParams ViewsTestBase::CreateParams( |
| Widget::InitParams::Type type) { |
| Widget::InitParams params(type); |
| params.context = GetContext(); |
| return params; |
| } |
| |
| gfx::NativeWindow ViewsTestBase::GetContext() { |
| return test_helper_->GetContext(); |
| } |
| |
| } // namespace views |