cygprofile: increase timeouts to allow showing web contents
[chromium-blink-merge.git] / components / view_manager / public / cpp / tests / view_manager_test_base.cc
bloba3821916b4d2c027f4a297842ecad779a77680be
1 // Copyright 2015 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 "components/view_manager/public/cpp/tests/view_manager_test_base.h"
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h"
10 #include "base/test/test_timeouts.h"
11 #include "components/view_manager/public/cpp/view.h"
12 #include "components/view_manager/public/cpp/view_tree_connection.h"
13 #include "components/view_manager/public/cpp/view_tree_host_factory.h"
14 #include "mojo/application/public/cpp/application_impl.h"
16 namespace mojo {
17 namespace {
19 base::RunLoop* current_run_loop = nullptr;
21 void TimeoutRunLoop(const base::Closure& timeout_task, bool* timeout) {
22 CHECK(current_run_loop);
23 *timeout = true;
24 timeout_task.Run();
27 } // namespace
29 ViewManagerTestBase::ViewManagerTestBase()
30 : most_recent_connection_(nullptr),
31 window_manager_(nullptr),
32 view_tree_connection_destroyed_(false) {
35 ViewManagerTestBase::~ViewManagerTestBase() {
38 // static
39 bool ViewManagerTestBase::DoRunLoopWithTimeout() {
40 if (current_run_loop != nullptr)
41 return false;
43 bool timeout = false;
44 base::RunLoop run_loop;
45 base::MessageLoop::current()->PostDelayedTask(
46 FROM_HERE, base::Bind(&TimeoutRunLoop, run_loop.QuitClosure(), &timeout),
47 TestTimeouts::action_timeout());
49 current_run_loop = &run_loop;
50 current_run_loop->Run();
51 current_run_loop = nullptr;
52 return !timeout;
55 // static
56 bool ViewManagerTestBase::QuitRunLoop() {
57 if (!current_run_loop)
58 return false;
60 current_run_loop->Quit();
61 current_run_loop = nullptr;
62 return true;
65 void ViewManagerTestBase::SetUp() {
66 ApplicationTestBase::SetUp();
68 CreateSingleViewTreeHost(application_impl(), this, &host_);
70 ASSERT_TRUE(DoRunLoopWithTimeout()); // RunLoop should be quit by OnEmbed().
71 std::swap(window_manager_, most_recent_connection_);
74 void ViewManagerTestBase::TearDown() {
75 ApplicationTestBase::TearDown();
78 ApplicationDelegate* ViewManagerTestBase::GetApplicationDelegate() {
79 return this;
82 bool ViewManagerTestBase::ConfigureIncomingConnection(
83 ApplicationConnection* connection) {
84 connection->AddService<ViewTreeClient>(this);
85 return true;
88 void ViewManagerTestBase::OnEmbed(View* root) {
89 most_recent_connection_ = root->connection();
90 EXPECT_TRUE(QuitRunLoop());
93 void ViewManagerTestBase::OnConnectionLost(ViewTreeConnection* connection) {
94 view_tree_connection_destroyed_ = true;
97 void ViewManagerTestBase::Create(ApplicationConnection* connection,
98 InterfaceRequest<ViewTreeClient> request) {
99 ViewTreeConnection::Create(this, request.Pass());
102 } // namespace mojo