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/shell/tests/connect/connect_test_package.cc

Issue 2179023004: Make Service own ServiceContext. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 title_(title), 54 title_(title),
55 request_(std::move(request)) { 55 request_(std::move(request)) {
56 Start(); 56 Start();
57 } 57 }
58 ~ProvidedService() override { 58 ~ProvidedService() override {
59 Join(); 59 Join();
60 } 60 }
61 61
62 private: 62 private:
63 // shell::Service: 63 // shell::Service:
64 void OnStart(Connector* connector, const Identity& identity, 64 void OnStart(const Identity& identity) override {
65 uint32_t id) override {
66 connector_ = connector;
67 identity_ = identity; 65 identity_ = identity;
68 id_ = id;
69 bindings_.set_connection_error_handler( 66 bindings_.set_connection_error_handler(
70 base::Bind(&ProvidedService::OnConnectionError, 67 base::Bind(&ProvidedService::OnConnectionError,
71 base::Unretained(this))); 68 base::Unretained(this)));
72 } 69 }
73 bool OnConnect(Connection* connection) override { 70 bool OnConnect(Connection* connection) override {
74 connection->AddInterface<test::mojom::ConnectTestService>(this); 71 connection->AddInterface<test::mojom::ConnectTestService>(this);
75 connection->AddInterface<test::mojom::BlockedInterface>(this); 72 connection->AddInterface<test::mojom::BlockedInterface>(this);
76 connection->AddInterface<test::mojom::UserIdTest>(this); 73 connection->AddInterface<test::mojom::UserIdTest>(this);
77 74
78 uint32_t remote_id = connection->GetRemoteInstanceID(); 75 uint32_t remote_id = connection->GetRemoteInstanceID();
79 test::mojom::ConnectionStatePtr state(test::mojom::ConnectionState::New()); 76 test::mojom::ConnectionStatePtr state(test::mojom::ConnectionState::New());
80 state->connection_local_name = connection->GetConnectionName(); 77 state->connection_local_name = connection->GetConnectionName();
81 state->connection_remote_name = connection->GetRemoteIdentity().name(); 78 state->connection_remote_name = connection->GetRemoteIdentity().name();
82 state->connection_remote_userid = connection->GetRemoteIdentity().user_id(); 79 state->connection_remote_userid = connection->GetRemoteIdentity().user_id();
83 state->connection_remote_id = remote_id; 80 state->connection_remote_id = remote_id;
84 state->initialize_local_name = identity_.name(); 81 state->initialize_local_name = identity_.name();
85 state->initialize_id = id_;
86 state->initialize_userid = identity_.user_id(); 82 state->initialize_userid = identity_.user_id();
87 connection->GetInterface(&caller_); 83 connection->GetInterface(&caller_);
88 caller_->ConnectionAccepted(std::move(state)); 84 caller_->ConnectionAccepted(std::move(state));
89 85
90 return true; 86 return true;
91 } 87 }
92 88
93 // InterfaceFactory<test::mojom::ConnectTestService>: 89 // InterfaceFactory<test::mojom::ConnectTestService>:
94 void Create(const Identity& remote_identity, 90 void Create(const Identity& remote_identity,
95 test::mojom::ConnectTestServiceRequest request) override { 91 test::mojom::ConnectTestServiceRequest request) override {
(...skipping 23 matching lines...) Expand all
119 // test::mojom::BlockedInterface: 115 // test::mojom::BlockedInterface:
120 void GetTitleBlocked(const GetTitleBlockedCallback& callback) override { 116 void GetTitleBlocked(const GetTitleBlockedCallback& callback) override {
121 callback.Run("Called Blocked Interface!"); 117 callback.Run("Called Blocked Interface!");
122 } 118 }
123 119
124 // test::mojom::UserIdTest: 120 // test::mojom::UserIdTest:
125 void ConnectToClassAppAsDifferentUser( 121 void ConnectToClassAppAsDifferentUser(
126 mojom::IdentityPtr target, 122 mojom::IdentityPtr target,
127 const ConnectToClassAppAsDifferentUserCallback& callback) override { 123 const ConnectToClassAppAsDifferentUserCallback& callback) override {
128 Connector::ConnectParams params(target.To<Identity>()); 124 Connector::ConnectParams params(target.To<Identity>());
129 std::unique_ptr<Connection> connection = connector_->Connect(&params); 125 std::unique_ptr<Connection> connection =
126 connector()->Connect(&params);
130 { 127 {
131 base::RunLoop loop; 128 base::RunLoop loop;
132 connection->AddConnectionCompletedClosure(base::Bind(&QuitLoop, &loop)); 129 connection->AddConnectionCompletedClosure(base::Bind(&QuitLoop, &loop));
133 base::MessageLoop::ScopedNestableTaskAllower allow( 130 base::MessageLoop::ScopedNestableTaskAllower allow(
134 base::MessageLoop::current()); 131 base::MessageLoop::current());
135 loop.Run(); 132 loop.Run();
136 } 133 }
137 callback.Run(static_cast<int32_t>(connection->GetResult()), 134 callback.Run(static_cast<int32_t>(connection->GetResult()),
138 mojom::Identity::From(connection->GetRemoteIdentity())); 135 mojom::Identity::From(connection->GetRemoteIdentity()));
139 } 136 }
140 137
141 // base::SimpleThread: 138 // base::SimpleThread:
142 void Run() override { 139 void Run() override {
143 ServiceRunner(this).Run(request_.PassMessagePipe().release().value(), 140 ServiceRunner(this).Run(request_.PassMessagePipe().release().value(),
144 false); 141 false);
145 delete this; 142 delete this;
146 } 143 }
147 144
148 void OnConnectionError() { 145 void OnConnectionError() {
149 if (bindings_.empty()) 146 if (bindings_.empty())
150 base::MessageLoop::current()->QuitWhenIdle(); 147 base::MessageLoop::current()->QuitWhenIdle();
151 } 148 }
152 149
153 Connector* connector_ = nullptr;
154 Identity identity_; 150 Identity identity_;
155 uint32_t id_ = shell::mojom::kInvalidInstanceID;
156 const std::string title_; 151 const std::string title_;
157 mojom::ServiceRequest request_; 152 mojom::ServiceRequest request_;
158 test::mojom::ExposedInterfacePtr caller_; 153 test::mojom::ExposedInterfacePtr caller_;
159 mojo::BindingSet<test::mojom::ConnectTestService> bindings_; 154 mojo::BindingSet<test::mojom::ConnectTestService> bindings_;
160 mojo::BindingSet<test::mojom::BlockedInterface> blocked_bindings_; 155 mojo::BindingSet<test::mojom::BlockedInterface> blocked_bindings_;
161 mojo::BindingSet<test::mojom::UserIdTest> user_id_test_bindings_; 156 mojo::BindingSet<test::mojom::UserIdTest> user_id_test_bindings_;
162 157
163 DISALLOW_COPY_AND_ASSIGN(ProvidedService); 158 DISALLOW_COPY_AND_ASSIGN(ProvidedService);
164 }; 159 };
165 160
166 class ConnectTestService 161 class ConnectTestService
167 : public Service, 162 : public Service,
168 public InterfaceFactory<mojom::ServiceFactory>, 163 public InterfaceFactory<mojom::ServiceFactory>,
169 public InterfaceFactory<test::mojom::ConnectTestService>, 164 public InterfaceFactory<test::mojom::ConnectTestService>,
170 public mojom::ServiceFactory, 165 public mojom::ServiceFactory,
171 public test::mojom::ConnectTestService { 166 public test::mojom::ConnectTestService {
172 public: 167 public:
173 ConnectTestService() {} 168 ConnectTestService() {}
174 ~ConnectTestService() override {} 169 ~ConnectTestService() override {}
175 170
176 private: 171 private:
177 // shell::Service: 172 // shell::Service:
178 void OnStart(Connector* connector, const Identity& identity, 173 void OnStart(const Identity& identity) override {
179 uint32_t id) override {
180 identity_ = identity; 174 identity_ = identity;
181 bindings_.set_connection_error_handler( 175 bindings_.set_connection_error_handler(
182 base::Bind(&ConnectTestService::OnConnectionError, 176 base::Bind(&ConnectTestService::OnConnectionError,
183 base::Unretained(this))); 177 base::Unretained(this)));
184 } 178 }
185 bool OnConnect(Connection* connection) override { 179 bool OnConnect(Connection* connection) override {
186 connection->AddInterface<ServiceFactory>(this); 180 connection->AddInterface<ServiceFactory>(this);
187 connection->AddInterface<test::mojom::ConnectTestService>(this); 181 connection->AddInterface<test::mojom::ConnectTestService>(this);
188 return true; 182 return true;
189 } 183 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 DISALLOW_COPY_AND_ASSIGN(ConnectTestService); 224 DISALLOW_COPY_AND_ASSIGN(ConnectTestService);
231 }; 225 };
232 226
233 } // namespace shell 227 } // namespace shell
234 228
235 MojoResult MojoMain(MojoHandle shell_handle) { 229 MojoResult MojoMain(MojoHandle shell_handle) {
236 MojoResult rv = shell::ServiceRunner(new shell::ConnectTestService) 230 MojoResult rv = shell::ServiceRunner(new shell::ConnectTestService)
237 .Run(shell_handle); 231 .Run(shell_handle);
238 return rv; 232 return rv;
239 } 233 }
OLDNEW
« no previous file with comments | « services/shell/tests/connect/connect_test_exe.cc ('k') | services/shell/tests/connect/connect_test_singleton_app.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698