Make ViewsTestHelpers DCHECK that all Widgets are destroyed before unit test tear...
[chromium-blink-merge.git] / ui / views / test / views_test_helper_aura.cc
blobf3705b6d0830e6e8174526248be9538ef962637c
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.
5 #include "ui/views/test/views_test_helper_aura.h"
7 #include "ui/aura/client/screen_position_client.h"
8 #include "ui/aura/test/aura_test_helper.h"
9 #include "ui/wm/core/capture_controller.h"
10 #include "ui/wm/core/default_activation_client.h"
11 #include "ui/wm/core/default_screen_position_client.h"
12 #include "ui/wm/core/wm_state.h"
14 namespace views {
16 // static
17 ViewsTestHelper* ViewsTestHelper::Create(base::MessageLoopForUI* message_loop,
18 ui::ContextFactory* context_factory) {
19 return new ViewsTestHelperAura(message_loop, context_factory);
22 ViewsTestHelperAura::ViewsTestHelperAura(base::MessageLoopForUI* message_loop,
23 ui::ContextFactory* context_factory)
24 : context_factory_(context_factory) {
25 aura_test_helper_.reset(new aura::test::AuraTestHelper(message_loop));
28 ViewsTestHelperAura::~ViewsTestHelperAura() {
31 void ViewsTestHelperAura::SetUp() {
32 aura_test_helper_->SetUp(context_factory_);
33 gfx::NativeWindow root_window = GetContext();
34 new wm::DefaultActivationClient(root_window);
35 wm_state_.reset(new wm::WMState);
37 if (!aura::client::GetScreenPositionClient(root_window)) {
38 screen_position_client_.reset(new wm::DefaultScreenPositionClient);
39 aura::client::SetScreenPositionClient(root_window,
40 screen_position_client_.get());
44 void ViewsTestHelperAura::TearDown() {
45 // Ensure all Widgets (and windows) are closed in unit tests. This is done
46 // automatically when the RootWindow is torn down, but is an error on
47 // platforms that must ensure no Compositors are alive when the ContextFactory
48 // is torn down.
49 // So, although it's optional, check the root window to detect failures before
50 // they hit the CQ on other platforms.
51 DCHECK(aura_test_helper_->root_window()->children().empty())
52 << "Not all windows were closed.";
54 if (screen_position_client_.get() ==
55 aura::client::GetScreenPositionClient(GetContext()))
56 aura::client::SetScreenPositionClient(GetContext(), nullptr);
58 aura_test_helper_->TearDown();
59 wm_state_.reset();
60 CHECK(!wm::ScopedCaptureClient::IsActive());
63 gfx::NativeWindow ViewsTestHelperAura::GetContext() {
64 return aura_test_helper_->root_window();
67 } // namespace views