OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 track_root_bounds_changes_ = value; | 144 track_root_bounds_changes_ = value; |
145 } | 145 } |
146 | 146 |
147 // Runs a nested MessageLoop until |count| changes (calls to | 147 // Runs a nested MessageLoop until |count| changes (calls to |
148 // WindowTreeClient functions) have been received. | 148 // WindowTreeClient functions) have been received. |
149 void WaitForChangeCount(size_t count) { | 149 void WaitForChangeCount(size_t count) { |
150 if (tracker_.changes()->size() >= count) | 150 if (tracker_.changes()->size() >= count) |
151 return; | 151 return; |
152 | 152 |
153 ASSERT_TRUE(wait_state_.get() == nullptr); | 153 ASSERT_TRUE(wait_state_.get() == nullptr); |
154 wait_state_.reset(new WaitState); | 154 wait_state_ = base::MakeUnique<WaitState>(); |
155 wait_state_->change_count = count; | 155 wait_state_->change_count = count; |
156 wait_state_->run_loop.Run(); | 156 wait_state_->run_loop.Run(); |
157 wait_state_.reset(); | 157 wait_state_.reset(); |
158 } | 158 } |
159 | 159 |
160 uint32_t GetAndAdvanceChangeId() { return next_change_id_++; } | 160 uint32_t GetAndAdvanceChangeId() { return next_change_id_++; } |
161 | 161 |
162 // Runs a nested MessageLoop until OnEmbed() has been encountered. | 162 // Runs a nested MessageLoop until OnEmbed() has been encountered. |
163 void WaitForOnEmbed() { | 163 void WaitForOnEmbed() { |
164 if (tree_) | 164 if (tree_) |
165 return; | 165 return; |
166 embed_run_loop_.reset(new base::RunLoop); | 166 embed_run_loop_ = base::MakeUnique<base::RunLoop>(); |
167 embed_run_loop_->Run(); | 167 embed_run_loop_->Run(); |
168 embed_run_loop_.reset(); | 168 embed_run_loop_.reset(); |
169 } | 169 } |
170 | 170 |
171 bool WaitForChangeCompleted(uint32_t id) { | 171 bool WaitForChangeCompleted(uint32_t id) { |
172 waiting_change_id_ = id; | 172 waiting_change_id_ = id; |
173 change_completed_run_loop_.reset(new base::RunLoop); | 173 change_completed_run_loop_ = base::MakeUnique<base::RunLoop>(); |
174 change_completed_run_loop_->Run(); | 174 change_completed_run_loop_->Run(); |
175 return on_change_completed_result_; | 175 return on_change_completed_result_; |
176 } | 176 } |
177 | 177 |
178 bool DeleteWindow(Id id) { | 178 bool DeleteWindow(Id id) { |
179 const uint32_t change_id = GetAndAdvanceChangeId(); | 179 const uint32_t change_id = GetAndAdvanceChangeId(); |
180 tree()->DeleteWindow(change_id, id); | 180 tree()->DeleteWindow(change_id, id); |
181 return WaitForChangeCompleted(change_id); | 181 return WaitForChangeCompleted(change_id); |
182 } | 182 } |
183 | 183 |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 | 410 |
411 void OnChangeCompleted(uint32_t change_id, bool success) override { | 411 void OnChangeCompleted(uint32_t change_id, bool success) override { |
412 if (waiting_change_id_ == change_id && change_completed_run_loop_) { | 412 if (waiting_change_id_ == change_id && change_completed_run_loop_) { |
413 on_change_completed_result_ = success; | 413 on_change_completed_result_ = success; |
414 change_completed_run_loop_->Quit(); | 414 change_completed_run_loop_->Quit(); |
415 } | 415 } |
416 } | 416 } |
417 void RequestClose(uint32_t window_id) override {} | 417 void RequestClose(uint32_t window_id) override {} |
418 void GetWindowManager(mojo::AssociatedInterfaceRequest<mojom::WindowManager> | 418 void GetWindowManager(mojo::AssociatedInterfaceRequest<mojom::WindowManager> |
419 internal) override { | 419 internal) override { |
420 window_manager_binding_.reset( | 420 window_manager_binding_ = |
421 new mojo::AssociatedBinding<mojom::WindowManager>(this, | 421 base::MakeUnique<mojo::AssociatedBinding<mojom::WindowManager>>( |
422 std::move(internal))); | 422 this, std::move(internal)); |
423 tree_->GetWindowManagerClient( | 423 tree_->GetWindowManagerClient( |
424 GetProxy(&window_manager_client_, tree_.associated_group())); | 424 GetProxy(&window_manager_client_, tree_.associated_group())); |
425 } | 425 } |
426 | 426 |
427 // mojom::WindowManager: | 427 // mojom::WindowManager: |
428 void OnConnect(uint16_t client_id) override {} | 428 void OnConnect(uint16_t client_id) override {} |
429 void WmNewDisplayAdded(const display::Display& display, | 429 void WmNewDisplayAdded(const display::Display& display, |
430 mojom::WindowDataPtr root_data, | 430 mojom::WindowDataPtr root_data, |
431 bool drawn) override { | 431 bool drawn) override { |
432 NOTIMPLEMENTED(); | 432 NOTIMPLEMENTED(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 class WindowTreeClientFactory | 499 class WindowTreeClientFactory |
500 : public shell::InterfaceFactory<WindowTreeClient> { | 500 : public shell::InterfaceFactory<WindowTreeClient> { |
501 public: | 501 public: |
502 WindowTreeClientFactory() {} | 502 WindowTreeClientFactory() {} |
503 ~WindowTreeClientFactory() override {} | 503 ~WindowTreeClientFactory() override {} |
504 | 504 |
505 // Runs a nested MessageLoop until a new instance has been created. | 505 // Runs a nested MessageLoop until a new instance has been created. |
506 std::unique_ptr<TestWindowTreeClient> WaitForInstance() { | 506 std::unique_ptr<TestWindowTreeClient> WaitForInstance() { |
507 if (!client_impl_.get()) { | 507 if (!client_impl_.get()) { |
508 DCHECK(!run_loop_); | 508 DCHECK(!run_loop_); |
509 run_loop_.reset(new base::RunLoop); | 509 run_loop_ = base::MakeUnique<base::RunLoop>(); |
510 run_loop_->Run(); | 510 run_loop_->Run(); |
511 run_loop_.reset(); | 511 run_loop_.reset(); |
512 } | 512 } |
513 return std::move(client_impl_); | 513 return std::move(client_impl_); |
514 } | 514 } |
515 | 515 |
516 private: | 516 private: |
517 // InterfaceFactory<WindowTreeClient>: | 517 // InterfaceFactory<WindowTreeClient>: |
518 void Create(const shell::Identity& remote_identity, | 518 void Create(const shell::Identity& remote_identity, |
519 InterfaceRequest<WindowTreeClient> request) override { | 519 InterfaceRequest<WindowTreeClient> request) override { |
520 client_impl_.reset(new TestWindowTreeClient()); | 520 client_impl_ = base::MakeUnique<TestWindowTreeClient>(); |
521 client_impl_->Bind(std::move(request)); | 521 client_impl_->Bind(std::move(request)); |
522 if (run_loop_.get()) | 522 if (run_loop_.get()) |
523 run_loop_->Quit(); | 523 run_loop_->Quit(); |
524 } | 524 } |
525 | 525 |
526 std::unique_ptr<TestWindowTreeClient> client_impl_; | 526 std::unique_ptr<TestWindowTreeClient> client_impl_; |
527 std::unique_ptr<base::RunLoop> run_loop_; | 527 std::unique_ptr<base::RunLoop> run_loop_; |
528 | 528 |
529 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientFactory); | 529 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientFactory); |
530 }; | 530 }; |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 } | 624 } |
625 | 625 |
626 // WindowServerServiceTestBase: | 626 // WindowServerServiceTestBase: |
627 bool OnConnect(const shell::Identity& remote_identity, | 627 bool OnConnect(const shell::Identity& remote_identity, |
628 shell::InterfaceRegistry* registry) override { | 628 shell::InterfaceRegistry* registry) override { |
629 registry->AddInterface(client_factory_.get()); | 629 registry->AddInterface(client_factory_.get()); |
630 return true; | 630 return true; |
631 } | 631 } |
632 | 632 |
633 void SetUp() override { | 633 void SetUp() override { |
634 client_factory_.reset(new WindowTreeClientFactory()); | 634 client_factory_ = base::MakeUnique<WindowTreeClientFactory>(); |
635 | 635 |
636 WindowServerServiceTestBase::SetUp(); | 636 WindowServerServiceTestBase::SetUp(); |
637 | 637 |
638 mojom::WindowTreeHostFactoryPtr factory; | 638 mojom::WindowTreeHostFactoryPtr factory; |
639 connector()->ConnectToInterface("mojo:ui", &factory); | 639 connector()->ConnectToInterface("mojo:ui", &factory); |
640 | 640 |
641 mojom::WindowTreeClientPtr tree_client_ptr; | 641 mojom::WindowTreeClientPtr tree_client_ptr; |
642 wt_client1_.reset(new TestWindowTreeClient()); | 642 wt_client1_ = base::MakeUnique<TestWindowTreeClient>(); |
643 wt_client1_->Bind(GetProxy(&tree_client_ptr)); | 643 wt_client1_->Bind(GetProxy(&tree_client_ptr)); |
644 | 644 |
645 factory->CreateWindowTreeHost(GetProxy(&host_), | 645 factory->CreateWindowTreeHost(GetProxy(&host_), |
646 std::move(tree_client_ptr)); | 646 std::move(tree_client_ptr)); |
647 | 647 |
648 // Next we should get an embed call on the "window manager" client. | 648 // Next we should get an embed call on the "window manager" client. |
649 wt_client1_->WaitForOnEmbed(); | 649 wt_client1_->WaitForOnEmbed(); |
650 | 650 |
651 ASSERT_EQ(1u, changes1()->size()); | 651 ASSERT_EQ(1u, changes1()->size()); |
652 EXPECT_EQ(CHANGE_TYPE_EMBED, (*changes1())[0].type); | 652 EXPECT_EQ(CHANGE_TYPE_EMBED, (*changes1())[0].type); |
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2118 | 2118 |
2119 // TODO(sky): make sure coverage of what was | 2119 // TODO(sky): make sure coverage of what was |
2120 // WindowManagerTest.SecondEmbedRoot_InitService and | 2120 // WindowManagerTest.SecondEmbedRoot_InitService and |
2121 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window | 2121 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window |
2122 // manager | 2122 // manager |
2123 // tests. | 2123 // tests. |
2124 | 2124 |
2125 } // namespace test | 2125 } // namespace test |
2126 } // namespace ws | 2126 } // namespace ws |
2127 } // namespace ui | 2127 } // namespace ui |
OLD | NEW |