Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: services/service_manager/tests/connect/connect_unittest.cc

Issue 2427443002: Replace remaining shell references with service manager (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 114 }
115 115
116 ConnectTest* connect_test_; 116 ConnectTest* connect_test_;
117 117
118 DISALLOW_COPY_AND_ASSIGN(TestService); 118 DISALLOW_COPY_AND_ASSIGN(TestService);
119 }; 119 };
120 120
121 // test::ServiceTest: 121 // test::ServiceTest:
122 void SetUp() override { 122 void SetUp() override {
123 test::ServiceTest::SetUp(); 123 test::ServiceTest::SetUp();
124 // We need to connect to the package first to force the shell to read the 124 // We need to connect to the package first to force the service manager to
125 // read the
125 // package app's manifest and register aliases for the applications it 126 // package app's manifest and register aliases for the applications it
126 // provides. 127 // provides.
127 test::mojom::ConnectTestServicePtr root_service; 128 test::mojom::ConnectTestServicePtr root_service;
128 std::unique_ptr<Connection> connection = 129 std::unique_ptr<Connection> connection =
129 connector()->Connect(kTestPackageName); 130 connector()->Connect(kTestPackageName);
130 connection->GetInterface(&root_service); 131 connection->GetInterface(&root_service);
131 base::RunLoop run_loop; 132 base::RunLoop run_loop;
132 std::string root_name; 133 std::string root_name;
133 root_service->GetTitle( 134 root_service->GetTitle(
134 base::Bind(&ReceiveOneString, &root_name, &run_loop)); 135 base::Bind(&ReceiveOneString, &root_name, &run_loop));
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 base::RunLoop loop; 358 base::RunLoop loop;
358 user_id_test->ConnectToClassAppAsDifferentUser( 359 user_id_test->ConnectToClassAppAsDifferentUser(
359 target, 360 target,
360 base::Bind(&ReceiveConnectionResult, &result, &result_identity, &loop)); 361 base::Bind(&ReceiveConnectionResult, &result, &result_identity, &loop));
361 loop.Run(); 362 loop.Run();
362 } 363 }
363 EXPECT_EQ(mojom::ConnectResult::ACCESS_DENIED, result); 364 EXPECT_EQ(mojom::ConnectResult::ACCESS_DENIED, result);
364 EXPECT_FALSE(target == result_identity); 365 EXPECT_FALSE(target == result_identity);
365 } 366 }
366 367
367 // There are various other tests (shell, lifecycle) that test valid client 368 // There are various other tests (service manager, lifecycle) that test valid
369 // client
368 // process specifications. This is the only one for blocking. 370 // process specifications. This is the only one for blocking.
369 TEST_F(ConnectTest, ConnectToClientProcess_Blocked) { 371 TEST_F(ConnectTest, ConnectToClientProcess_Blocked) {
370 std::unique_ptr<Connection> connection = 372 std::unique_ptr<Connection> connection =
371 connector()->Connect(kTestDriverName); 373 connector()->Connect(kTestDriverName);
372 test::mojom::ClientProcessTestPtr client_process_test; 374 test::mojom::ClientProcessTestPtr client_process_test;
373 connection->GetInterface(&client_process_test); 375 connection->GetInterface(&client_process_test);
374 mojom::ConnectResult result; 376 mojom::ConnectResult result;
375 Identity result_identity; 377 Identity result_identity;
376 { 378 {
377 base::RunLoop loop; 379 base::RunLoop loop;
378 client_process_test->LaunchAndConnectToProcess( 380 client_process_test->LaunchAndConnectToProcess(
379 base::Bind(&ReceiveConnectionResult, &result, &result_identity, &loop)); 381 base::Bind(&ReceiveConnectionResult, &result, &result_identity, &loop));
380 loop.Run(); 382 loop.Run();
381 } 383 }
382 EXPECT_EQ(mojom::ConnectResult::ACCESS_DENIED, result); 384 EXPECT_EQ(mojom::ConnectResult::ACCESS_DENIED, result);
383 } 385 }
384 386
385 // Verifies that a client with the "all_users" capability class can receive 387 // Verifies that a client with the "all_users" capability class can receive
386 // connections from clients run as other users. 388 // connections from clients run as other users.
387 TEST_F(ConnectTest, AllUsersSingleton) { 389 TEST_F(ConnectTest, AllUsersSingleton) {
388 // Connect to an instance with an explicitly different user_id. This supplied 390 // Connect to an instance with an explicitly different user_id. This supplied
389 // user id should be ignored by the shell (which will generate its own 391 // user id should be ignored by the service manager (which will generate its
392 // own
390 // synthetic user id for all-user singleton instances). 393 // synthetic user id for all-user singleton instances).
391 const std::string singleton_userid = base::GenerateGUID(); 394 const std::string singleton_userid = base::GenerateGUID();
392 Connector::ConnectParams params( 395 Connector::ConnectParams params(
393 Identity(kTestSingletonAppName, singleton_userid)); 396 Identity(kTestSingletonAppName, singleton_userid));
394 std::unique_ptr<Connection> connection = connector()->Connect(&params); 397 std::unique_ptr<Connection> connection = connector()->Connect(&params);
395 { 398 {
396 base::RunLoop loop; 399 base::RunLoop loop;
397 connection->AddConnectionCompletedClosure(base::Bind(&QuitLoop, &loop)); 400 connection->AddConnectionCompletedClosure(base::Bind(&QuitLoop, &loop));
398 loop.Run(); 401 loop.Run();
399 EXPECT_NE(connection->GetRemoteIdentity().user_id(), singleton_userid); 402 EXPECT_NE(connection->GetRemoteIdentity().user_id(), singleton_userid);
400 } 403 }
401 // This connects using the current client's user_id. It should be bound to the 404 // This connects using the current client's user_id. It should be bound to the
402 // same service started above, with the same shell-generated user id. 405 // same service started above, with the same service manager-generated user
406 // id.
403 std::unique_ptr<Connection> inherit_connection = 407 std::unique_ptr<Connection> inherit_connection =
404 connector()->Connect(kTestSingletonAppName); 408 connector()->Connect(kTestSingletonAppName);
405 { 409 {
406 base::RunLoop loop; 410 base::RunLoop loop;
407 inherit_connection->AddConnectionCompletedClosure( 411 inherit_connection->AddConnectionCompletedClosure(
408 base::Bind(&QuitLoop, &loop)); 412 base::Bind(&QuitLoop, &loop));
409 loop.Run(); 413 loop.Run();
410 EXPECT_EQ(inherit_connection->GetRemoteIdentity().user_id(), 414 EXPECT_EQ(inherit_connection->GetRemoteIdentity().user_id(),
411 connection->GetRemoteIdentity().user_id()); 415 connection->GetRemoteIdentity().user_id());
412 } 416 }
413 } 417 }
414 418
415 } // namespace service_manager 419 } // namespace service_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698