OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 } | 85 } |
86 | 86 |
87 void set_ping_callback(const base::Closure& callback) { | 87 void set_ping_callback(const base::Closure& callback) { |
88 ping_callback_ = callback; | 88 ping_callback_ = callback; |
89 } | 89 } |
90 | 90 |
91 void CompareConnectionState( | 91 void CompareConnectionState( |
92 const std::string& connection_local_name, | 92 const std::string& connection_local_name, |
93 const std::string& connection_remote_name, | 93 const std::string& connection_remote_name, |
94 const std::string& connection_remote_userid, | 94 const std::string& connection_remote_userid, |
95 uint32_t connection_remote_id, | |
96 const std::string& initialize_local_name, | 95 const std::string& initialize_local_name, |
97 const std::string& initialize_userid, | 96 const std::string& initialize_userid) { |
98 uint32_t initialize_id) { | |
99 EXPECT_EQ(connection_local_name, connection_state_->connection_local_name); | 97 EXPECT_EQ(connection_local_name, connection_state_->connection_local_name); |
100 EXPECT_EQ(connection_remote_name, | 98 EXPECT_EQ(connection_remote_name, |
101 connection_state_->connection_remote_name); | 99 connection_state_->connection_remote_name); |
102 EXPECT_EQ(connection_remote_userid, | 100 EXPECT_EQ(connection_remote_userid, |
103 connection_state_->connection_remote_userid); | 101 connection_state_->connection_remote_userid); |
104 EXPECT_EQ(connection_remote_id, connection_state_->connection_remote_id); | |
105 EXPECT_EQ(initialize_local_name, connection_state_->initialize_local_name); | 102 EXPECT_EQ(initialize_local_name, connection_state_->initialize_local_name); |
106 EXPECT_EQ(initialize_id, connection_state_->initialize_id); | |
107 EXPECT_EQ(initialize_userid, connection_state_->initialize_userid); | 103 EXPECT_EQ(initialize_userid, connection_state_->initialize_userid); |
108 } | 104 } |
109 | 105 |
110 private: | 106 private: |
111 // test::ServiceTest: | 107 // test::ServiceTest: |
112 void SetUp() override { | 108 void SetUp() override { |
113 test::ServiceTest::SetUp(); | 109 test::ServiceTest::SetUp(); |
114 // We need to connect to the package first to force the shell to read the | 110 // We need to connect to the package first to force the shell to read the |
115 // package app's manifest and register aliases for the applications it | 111 // package app's manifest and register aliases for the applications it |
116 // provides. | 112 // provides. |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 | 402 |
407 // Tests that we can expose an interface to targets on outbound connections. | 403 // Tests that we can expose an interface to targets on outbound connections. |
408 TEST_F(ConnectTest, LocalInterface) { | 404 TEST_F(ConnectTest, LocalInterface) { |
409 // Connect to a standalone application. | 405 // Connect to a standalone application. |
410 { | 406 { |
411 test::mojom::ConnectTestServicePtr service; | 407 test::mojom::ConnectTestServicePtr service; |
412 std::unique_ptr<Connection> connection = connector()->Connect(kTestAppName); | 408 std::unique_ptr<Connection> connection = connector()->Connect(kTestAppName); |
413 connection->GetInterface(&service); | 409 connection->GetInterface(&service); |
414 connection->AddInterface<test::mojom::ExposedInterface>(this); | 410 connection->AddInterface<test::mojom::ExposedInterface>(this); |
415 | 411 |
416 uint32_t remote_id = mojom::kInvalidInstanceID; | |
417 { | 412 { |
418 base::RunLoop run_loop; | 413 base::RunLoop run_loop; |
419 EXPECT_TRUE(connection->IsPending()); | 414 EXPECT_TRUE(connection->IsPending()); |
420 EXPECT_EQ(mojom::kInvalidInstanceID, connection->GetRemoteInstanceID()); | 415 EXPECT_EQ(mojom::kInvalidInstanceID, connection->GetRemoteInstanceID()); |
421 connection->AddConnectionCompletedClosure( | 416 connection->AddConnectionCompletedClosure( |
422 base::Bind(&QuitLoop, &run_loop)); | 417 base::Bind(&QuitLoop, &run_loop)); |
423 run_loop.Run(); | 418 run_loop.Run(); |
424 EXPECT_FALSE(connection->IsPending()); | 419 EXPECT_FALSE(connection->IsPending()); |
425 remote_id = connection->GetRemoteInstanceID(); | |
426 EXPECT_NE(mojom::kInvalidInstanceID, remote_id); | |
427 } | 420 } |
428 | 421 |
429 { | 422 { |
430 base::RunLoop run_loop; | 423 base::RunLoop run_loop; |
431 set_ping_callback(base::Bind(&QuitLoop, &run_loop)); | 424 set_ping_callback(base::Bind(&QuitLoop, &run_loop)); |
432 run_loop.Run(); | 425 run_loop.Run(); |
433 CompareConnectionState( | 426 CompareConnectionState( |
434 kTestAppName, test_name(), test_userid(), test_instance_id(), | 427 kTestAppName, test_name(), test_userid(), kTestAppName, |
435 kTestAppName, connection->GetRemoteIdentity().user_id(), remote_id); | 428 connection->GetRemoteIdentity().user_id()); |
436 } | 429 } |
437 } | 430 } |
438 | 431 |
439 // Connect to an application provided by a package. | 432 // Connect to an application provided by a package. |
440 { | 433 { |
441 test::mojom::ConnectTestServicePtr service_a; | 434 test::mojom::ConnectTestServicePtr service_a; |
442 std::unique_ptr<Connection> connection = | 435 std::unique_ptr<Connection> connection = |
443 connector()->Connect(kTestAppAName); | 436 connector()->Connect(kTestAppAName); |
444 connection->GetInterface(&service_a); | 437 connection->GetInterface(&service_a); |
445 connection->AddInterface<test::mojom::ExposedInterface>(this); | 438 connection->AddInterface<test::mojom::ExposedInterface>(this); |
446 | 439 |
447 uint32_t remote_id = mojom::kInvalidInstanceID; | |
448 { | 440 { |
449 base::RunLoop run_loop; | 441 base::RunLoop run_loop; |
450 EXPECT_TRUE(connection->IsPending()); | 442 EXPECT_TRUE(connection->IsPending()); |
451 EXPECT_EQ(mojom::kInvalidInstanceID, connection->GetRemoteInstanceID()); | 443 EXPECT_EQ(mojom::kInvalidInstanceID, connection->GetRemoteInstanceID()); |
452 connection->AddConnectionCompletedClosure( | 444 connection->AddConnectionCompletedClosure( |
453 base::Bind(&QuitLoop, &run_loop)); | 445 base::Bind(&QuitLoop, &run_loop)); |
454 run_loop.Run(); | 446 run_loop.Run(); |
455 EXPECT_FALSE(connection->IsPending()); | 447 EXPECT_FALSE(connection->IsPending()); |
456 remote_id = connection->GetRemoteInstanceID(); | |
457 EXPECT_NE(mojom::kInvalidInstanceID, remote_id); | |
458 } | 448 } |
459 | 449 |
460 { | 450 { |
461 base::RunLoop run_loop; | 451 base::RunLoop run_loop; |
462 set_ping_callback(base::Bind(&QuitLoop, &run_loop)); | 452 set_ping_callback(base::Bind(&QuitLoop, &run_loop)); |
463 run_loop.Run(); | 453 run_loop.Run(); |
464 CompareConnectionState( | 454 CompareConnectionState( |
465 kTestAppAName, test_name(), test_userid(), test_instance_id(), | 455 kTestAppAName, test_name(), test_userid(), kTestAppAName, |
466 kTestAppAName, connection->GetRemoteIdentity().user_id(), remote_id); | 456 connection->GetRemoteIdentity().user_id()); |
467 } | 457 } |
468 | 458 |
469 } | 459 } |
470 } | 460 } |
471 | 461 |
472 } // namespace shell | 462 } // namespace shell |
OLD | NEW |