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" |
11 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "components/mus/public/interfaces/window_tree.mojom.h" | 13 #include "components/mus/public/interfaces/window_tree.mojom.h" |
14 #include "components/mus/public/interfaces/window_tree_host.mojom.h" | 14 #include "components/mus/public/interfaces/window_tree_host.mojom.h" |
15 #include "components/mus/ws/ids.h" | 15 #include "components/mus/ws/ids.h" |
16 #include "components/mus/ws/test_change_tracker.h" | 16 #include "components/mus/ws/test_change_tracker.h" |
17 #include "mojo/converters/geometry/geometry_type_converters.h" | 17 #include "mojo/converters/geometry/geometry_type_converters.h" |
18 #include "mojo/public/cpp/bindings/associated_binding.h" | 18 #include "mojo/public/cpp/bindings/associated_binding.h" |
19 #include "mojo/shell/public/cpp/application_delegate.h" | |
20 #include "mojo/shell/public/cpp/application_test_base.h" | 19 #include "mojo/shell/public/cpp/application_test_base.h" |
21 | 20 |
22 using mojo::ApplicationConnection; | |
23 using mojo::ApplicationDelegate; | |
24 using mojo::Array; | 21 using mojo::Array; |
25 using mojo::Callback; | 22 using mojo::Callback; |
| 23 using mojo::Connection; |
26 using mojo::InterfaceRequest; | 24 using mojo::InterfaceRequest; |
27 using mojo::RectPtr; | 25 using mojo::RectPtr; |
| 26 using mojo::ShellClient; |
28 using mojo::String; | 27 using mojo::String; |
29 using mus::mojom::ErrorCode; | 28 using mus::mojom::ErrorCode; |
30 using mus::mojom::EventPtr; | 29 using mus::mojom::EventPtr; |
31 using mus::mojom::ViewportMetricsPtr; | 30 using mus::mojom::ViewportMetricsPtr; |
32 using mus::mojom::WindowDataPtr; | 31 using mus::mojom::WindowDataPtr; |
33 using mus::mojom::WindowTree; | 32 using mus::mojom::WindowTree; |
34 using mus::mojom::WindowTreeClient; | 33 using mus::mojom::WindowTreeClient; |
35 | 34 |
36 namespace mus { | 35 namespace mus { |
37 namespace ws { | 36 namespace ws { |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 DCHECK(!run_loop_); | 441 DCHECK(!run_loop_); |
443 run_loop_.reset(new base::RunLoop); | 442 run_loop_.reset(new base::RunLoop); |
444 run_loop_->Run(); | 443 run_loop_->Run(); |
445 run_loop_.reset(); | 444 run_loop_.reset(); |
446 } | 445 } |
447 return std::move(client_impl_); | 446 return std::move(client_impl_); |
448 } | 447 } |
449 | 448 |
450 private: | 449 private: |
451 // InterfaceFactory<WindowTreeClient>: | 450 // InterfaceFactory<WindowTreeClient>: |
452 void Create(ApplicationConnection* connection, | 451 void Create(Connection* connection, |
453 InterfaceRequest<WindowTreeClient> request) override { | 452 InterfaceRequest<WindowTreeClient> request) override { |
454 client_impl_.reset(new TestWindowTreeClientImpl()); | 453 client_impl_.reset(new TestWindowTreeClientImpl()); |
455 client_impl_->Bind(std::move(request)); | 454 client_impl_->Bind(std::move(request)); |
456 if (run_loop_.get()) | 455 if (run_loop_.get()) |
457 run_loop_->Quit(); | 456 run_loop_->Quit(); |
458 } | 457 } |
459 | 458 |
460 scoped_ptr<TestWindowTreeClientImpl> client_impl_; | 459 scoped_ptr<TestWindowTreeClientImpl> client_impl_; |
461 scoped_ptr<base::RunLoop> run_loop_; | 460 scoped_ptr<base::RunLoop> run_loop_; |
462 | 461 |
463 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientFactory); | 462 DISALLOW_COPY_AND_ASSIGN(WindowTreeClientFactory); |
464 }; | 463 }; |
465 | 464 |
466 } // namespace | 465 } // namespace |
467 | 466 |
468 class WindowTreeAppTest : public mojo::test::ApplicationTestBase, | 467 class WindowTreeAppTest : public mojo::test::ApplicationTestBase, |
469 public ApplicationDelegate { | 468 public mojo::ShellClient { |
470 public: | 469 public: |
471 WindowTreeAppTest() | 470 WindowTreeAppTest() |
472 : connection_id_1_(0), connection_id_2_(0), root_window_id_(0) {} | 471 : connection_id_1_(0), connection_id_2_(0), root_window_id_(0) {} |
473 ~WindowTreeAppTest() override {} | 472 ~WindowTreeAppTest() override {} |
474 | 473 |
475 protected: | 474 protected: |
476 // Returns the changes from the various connections. | 475 // Returns the changes from the various connections. |
477 std::vector<Change>* changes1() { return ws_client1_->tracker()->changes(); } | 476 std::vector<Change>* changes1() { return ws_client1_->tracker()->changes(); } |
478 std::vector<Change>* changes2() { return ws_client2_->tracker()->changes(); } | 477 std::vector<Change>* changes2() { return ws_client2_->tracker()->changes(); } |
479 std::vector<Change>* changes3() { return ws_client3_->tracker()->changes(); } | 478 std::vector<Change>* changes3() { return ws_client3_->tracker()->changes(); } |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 client->WaitForOnEmbed(); | 553 client->WaitForOnEmbed(); |
555 | 554 |
556 EXPECT_EQ("OnEmbed", | 555 EXPECT_EQ("OnEmbed", |
557 SingleChangeToDescription(*client->tracker()->changes())); | 556 SingleChangeToDescription(*client->tracker()->changes())); |
558 if (connection_id) | 557 if (connection_id) |
559 *connection_id = (*client->tracker()->changes())[0].connection_id; | 558 *connection_id = (*client->tracker()->changes())[0].connection_id; |
560 return client; | 559 return client; |
561 } | 560 } |
562 | 561 |
563 // ApplicationTestBase: | 562 // ApplicationTestBase: |
564 ApplicationDelegate* GetApplicationDelegate() override { return this; } | 563 mojo::ShellClient* GetShellClient() override { return this; } |
565 void SetUp() override { | 564 void SetUp() override { |
566 ApplicationTestBase::SetUp(); | 565 ApplicationTestBase::SetUp(); |
567 client_factory_.reset(new WindowTreeClientFactory()); | 566 client_factory_.reset(new WindowTreeClientFactory()); |
568 | 567 |
569 mojom::WindowTreeHostFactoryPtr factory; | 568 mojom::WindowTreeHostFactoryPtr factory; |
570 shell()->ConnectToService("mojo:mus", &factory); | 569 shell()->ConnectToService("mojo:mus", &factory); |
571 | 570 |
572 mojom::WindowTreeClientPtr tree_client_ptr; | 571 mojom::WindowTreeClientPtr tree_client_ptr; |
573 ws_client1_.reset(new TestWindowTreeClientImpl()); | 572 ws_client1_.reset(new TestWindowTreeClientImpl()); |
574 ws_client1_->Bind(GetProxy(&tree_client_ptr)); | 573 ws_client1_->Bind(GetProxy(&tree_client_ptr)); |
(...skipping 10 matching lines...) Expand all Loading... |
585 // is the client id is not zero, but adding this as rest of code here | 584 // is the client id is not zero, but adding this as rest of code here |
586 // assumes 1. | 585 // assumes 1. |
587 ASSERT_GT((*changes1())[0].connection_id, 0); | 586 ASSERT_GT((*changes1())[0].connection_id, 0); |
588 connection_id_1_ = (*changes1())[0].connection_id; | 587 connection_id_1_ = (*changes1())[0].connection_id; |
589 ASSERT_FALSE((*changes1())[0].windows.empty()); | 588 ASSERT_FALSE((*changes1())[0].windows.empty()); |
590 root_window_id_ = (*changes1())[0].windows[0].window_id; | 589 root_window_id_ = (*changes1())[0].windows[0].window_id; |
591 ASSERT_EQ(root_window_id_, ws_client1_->root_window_id()); | 590 ASSERT_EQ(root_window_id_, ws_client1_->root_window_id()); |
592 changes1()->clear(); | 591 changes1()->clear(); |
593 } | 592 } |
594 | 593 |
595 // ApplicationDelegate implementation. | 594 // mojo::ShellClient implementation. |
596 bool AcceptConnection(ApplicationConnection* connection) override { | 595 bool AcceptConnection(Connection* connection) override { |
597 connection->AddService(client_factory_.get()); | 596 connection->AddService(client_factory_.get()); |
598 return true; | 597 return true; |
599 } | 598 } |
600 | 599 |
601 scoped_ptr<TestWindowTreeClientImpl> ws_client1_; | 600 scoped_ptr<TestWindowTreeClientImpl> ws_client1_; |
602 scoped_ptr<TestWindowTreeClientImpl> ws_client2_; | 601 scoped_ptr<TestWindowTreeClientImpl> ws_client2_; |
603 scoped_ptr<TestWindowTreeClientImpl> ws_client3_; | 602 scoped_ptr<TestWindowTreeClientImpl> ws_client3_; |
604 | 603 |
605 mojom::WindowTreeHostPtr host_; | 604 mojom::WindowTreeHostPtr host_; |
606 | 605 |
(...skipping 1258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1865 // originating connection. | 1864 // originating connection. |
1866 | 1865 |
1867 // TODO(sky): make sure coverage of what was | 1866 // TODO(sky): make sure coverage of what was |
1868 // WindowManagerTest.SecondEmbedRoot_InitService and | 1867 // WindowManagerTest.SecondEmbedRoot_InitService and |
1869 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window | 1868 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window |
1870 // manager | 1869 // manager |
1871 // tests. | 1870 // tests. |
1872 | 1871 |
1873 } // namespace ws | 1872 } // namespace ws |
1874 } // namespace mus | 1873 } // namespace mus |
OLD | NEW |