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

Side by Side Diff: mojo/shell/capability_filter_test.cc

Issue 1684783002: Rename ServiceProvider to InterfaceProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 10 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
« no previous file with comments | « mojo/shell/application_manager_unittest.cc ('k') | mojo/shell/capability_filter_unittest.mojom » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "mojo/shell/capability_filter_test.h" 5 #include "mojo/shell/capability_filter_test.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "mojo/common/weak_binding_set.h" 12 #include "mojo/common/weak_binding_set.h"
13 #include "mojo/public/cpp/bindings/strong_binding.h" 13 #include "mojo/public/cpp/bindings/strong_binding.h"
14 #include "mojo/shell/application_loader.h" 14 #include "mojo/shell/application_loader.h"
15 #include "mojo/shell/package_manager.h" 15 #include "mojo/shell/package_manager.h"
16 #include "mojo/shell/public/cpp/connection.h" 16 #include "mojo/shell/public/cpp/connection.h"
17 #include "mojo/shell/public/cpp/interface_factory.h" 17 #include "mojo/shell/public/cpp/interface_factory.h"
18 #include "mojo/shell/public/cpp/shell_connection.h" 18 #include "mojo/shell/public/cpp/shell_connection.h"
19 19
20 namespace mojo { 20 namespace mojo {
21 namespace shell { 21 namespace shell {
22 namespace test { 22 namespace test {
23 23
24 // Lives on the main thread of the test. 24 // Lives on the main thread of the test.
25 // Listens for services exposed/blocked and for application connections being 25 // Listens for interfaces exposed/blocked and for application connections being
26 // closed. Quits |loop| when all expectations are met. 26 // closed. Quits |loop| when all expectations are met.
27 class ConnectionValidator : public ApplicationLoader, 27 class ConnectionValidator : public ApplicationLoader,
28 public ShellClient, 28 public ShellClient,
29 public InterfaceFactory<Validator>, 29 public InterfaceFactory<Validator>,
30 public Validator { 30 public Validator {
31 public: 31 public:
32 ConnectionValidator(const std::set<std::string>& expectations, 32 ConnectionValidator(const std::set<std::string>& expectations,
33 base::MessageLoop* loop) 33 base::MessageLoop* loop)
34 : app_(nullptr), 34 : app_(nullptr),
35 expectations_(expectations), 35 expectations_(expectations),
(...skipping 24 matching lines...) Expand all
60 return true; 60 return true;
61 } 61 }
62 62
63 // Overridden from InterfaceFactory<Validator>: 63 // Overridden from InterfaceFactory<Validator>:
64 void Create(Connection* connection, 64 void Create(Connection* connection,
65 InterfaceRequest<Validator> request) override { 65 InterfaceRequest<Validator> request) override {
66 validator_bindings_.AddBinding(this, std::move(request)); 66 validator_bindings_.AddBinding(this, std::move(request));
67 } 67 }
68 68
69 // Overridden from Validator: 69 // Overridden from Validator:
70 void AddServiceCalled(const String& app_url, 70 void AddInterfaceCalled(const String& app_url,
71 const String& service_url, 71 const String& service_url,
72 const String& name, 72 const String& name,
73 bool blocked) override { 73 bool blocked) override {
74 Validate(base::StringPrintf("%s %s %s %s", 74 Validate(base::StringPrintf("%s %s %s %s",
75 blocked ? "B" : "E", app_url.data(), service_url.data(), name.data())); 75 blocked ? "B" : "E", app_url.data(), service_url.data(), name.data()));
76 } 76 }
77 void ConnectionClosed(const String& app_url, 77 void ConnectionClosed(const String& app_url,
78 const String& service_url) override { 78 const String& service_url) override {
79 Validate(base::StringPrintf("C %s %s", app_url.data(), service_url.data())); 79 Validate(base::StringPrintf("C %s %s", app_url.data(), service_url.data()));
80 } 80 }
81 81
82 void Validate(const std::string& result) { 82 void Validate(const std::string& result) {
83 DVLOG(1) << "Validate: " << result; 83 DVLOG(1) << "Validate: " << result;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 116
117 private: 117 private:
118 // Overridden from ShellClient: 118 // Overridden from ShellClient:
119 void Initialize(Shell* shell, const std::string& url, uint32_t id) override { 119 void Initialize(Shell* shell, const std::string& url, uint32_t id) override {
120 shell_ = shell; 120 shell_ = shell;
121 // ServiceApplications have no capability filter and can thus connect 121 // ServiceApplications have no capability filter and can thus connect
122 // directly to the validator application. 122 // directly to the validator application.
123 shell_->ConnectToService("test:validator", &validator_); 123 shell_->ConnectToService("test:validator", &validator_);
124 } 124 }
125 bool AcceptConnection(Connection* connection) override { 125 bool AcceptConnection(Connection* connection) override {
126 AddService<Safe>(connection); 126 AddInterface<Safe>(connection);
127 AddService<Unsafe>(connection); 127 AddInterface<Unsafe>(connection);
128 return true; 128 return true;
129 } 129 }
130 130
131 // Overridden from InterfaceFactory<Safe>: 131 // Overridden from InterfaceFactory<Safe>:
132 void Create(Connection* connection, 132 void Create(Connection* connection,
133 InterfaceRequest<Safe> request) override { 133 InterfaceRequest<Safe> request) override {
134 safe_bindings_.AddBinding(this, std::move(request)); 134 safe_bindings_.AddBinding(this, std::move(request));
135 } 135 }
136 136
137 // Overridden from InterfaceFactory<Unsafe>: 137 // Overridden from InterfaceFactory<Unsafe>:
138 void Create(Connection* connection, 138 void Create(Connection* connection,
139 InterfaceRequest<Unsafe> request) override { 139 InterfaceRequest<Unsafe> request) override {
140 unsafe_bindings_.AddBinding(this, std::move(request)); 140 unsafe_bindings_.AddBinding(this, std::move(request));
141 } 141 }
142 142
143 template <typename Interface> 143 template <typename Interface>
144 void AddService(Connection* connection) { 144 void AddInterface(Connection* connection) {
145 validator_->AddServiceCalled(connection->GetRemoteApplicationURL(), 145 validator_->AddInterfaceCalled(connection->GetRemoteApplicationURL(),
146 connection->GetConnectionURL(), 146 connection->GetConnectionURL(),
147 Interface::Name_, 147 Interface::Name_,
148 !connection->AddInterface<Interface>(this)); 148 !connection->AddInterface<Interface>(this));
149 } 149 }
150 150
151 Shell* shell_; 151 Shell* shell_;
152 ValidatorPtr validator_; 152 ValidatorPtr validator_;
153 WeakBindingSet<Safe> safe_bindings_; 153 WeakBindingSet<Safe> safe_bindings_;
154 WeakBindingSet<Unsafe> unsafe_bindings_; 154 WeakBindingSet<Unsafe> unsafe_bindings_;
155 155
156 DISALLOW_COPY_AND_ASSIGN(ServiceApplication); 156 DISALLOW_COPY_AND_ASSIGN(ServiceApplication);
157 }; 157 };
158 158
159 //////////////////////////////////////////////////////////////////////////////// 159 ////////////////////////////////////////////////////////////////////////////////
160 // TestApplication: 160 // TestApplication:
161 161
162 TestApplication::TestApplication() : shell_(nullptr) {} 162 TestApplication::TestApplication() : shell_(nullptr) {}
163 TestApplication::~TestApplication() {} 163 TestApplication::~TestApplication() {}
164 164
165 void TestApplication::Initialize(Shell* shell, const std::string& url, 165 void TestApplication::Initialize(Shell* shell, const std::string& url,
166 uint32_t id) { 166 uint32_t id) {
167 shell_ = shell; 167 shell_ = shell;
168 url_ = url; 168 url_ = url;
169 } 169 }
170 bool TestApplication::AcceptConnection(Connection* connection) { 170 bool TestApplication::AcceptConnection(Connection* connection) {
171 // TestApplications receive their Validator via the inbound connection. 171 // TestApplications receive their Validator via the inbound connection.
172 connection->GetInterface(&validator_); 172 connection->GetInterface(&validator_);
173 173
174 connection1_ = shell_->Connect("test:service"); 174 connection1_ = shell_->Connect("test:service");
175 connection1_->SetRemoteServiceProviderConnectionErrorHandler( 175 connection1_->SetRemoteInterfaceProviderConnectionErrorHandler(
176 base::Bind(&TestApplication::ConnectionClosed, 176 base::Bind(&TestApplication::ConnectionClosed,
177 base::Unretained(this), "test:service")); 177 base::Unretained(this), "test:service"));
178 178
179 connection2_ = shell_->Connect("test:service2"); 179 connection2_ = shell_->Connect("test:service2");
180 connection2_->SetRemoteServiceProviderConnectionErrorHandler( 180 connection2_->SetRemoteInterfaceProviderConnectionErrorHandler(
181 base::Bind(&TestApplication::ConnectionClosed, 181 base::Bind(&TestApplication::ConnectionClosed,
182 base::Unretained(this), "test:service2")); 182 base::Unretained(this), "test:service2"));
183 return true; 183 return true;
184 } 184 }
185 185
186 void TestApplication::ConnectionClosed(const std::string& service_url) { 186 void TestApplication::ConnectionClosed(const std::string& service_url) {
187 validator_->ConnectionClosed(url_, service_url); 187 validator_->ConnectionClosed(url_, service_url);
188 } 188 }
189 189
190 //////////////////////////////////////////////////////////////////////////////// 190 ////////////////////////////////////////////////////////////////////////////////
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 application_manager_.reset( 284 application_manager_.reset(
285 new ApplicationManager(make_scoped_ptr(CreatePackageManager()))); 285 new ApplicationManager(make_scoped_ptr(CreatePackageManager())));
286 CreateLoader<ServiceApplication>("test:service"); 286 CreateLoader<ServiceApplication>("test:service");
287 CreateLoader<ServiceApplication>("test:service2"); 287 CreateLoader<ServiceApplication>("test:service2");
288 } 288 }
289 289
290 void CapabilityFilterTest::TearDown() { 290 void CapabilityFilterTest::TearDown() {
291 application_manager_.reset(); 291 application_manager_.reset();
292 } 292 }
293 293
294 class ServiceProviderImpl : public ServiceProvider { 294 class InterfaceProviderImpl : public InterfaceProvider {
295 public: 295 public:
296 explicit ServiceProviderImpl( 296 explicit InterfaceProviderImpl(
297 InterfaceRequest<ServiceProvider> service_provider, 297 InterfaceRequest<InterfaceProvider> interfaces,
298 InterfaceFactory<Validator>* factory) 298 InterfaceFactory<Validator>* factory)
299 : binding_(this, std::move(service_provider)), 299 : binding_(this, std::move(interfaces)),
300 factory_(factory) {} 300 factory_(factory) {}
301 ~ServiceProviderImpl() override {} 301 ~InterfaceProviderImpl() override {}
302 302
303 private: 303 private:
304 // ServiceProvider method. 304 // InterfaceProvider method.
305 void ConnectToService(const mojo::String& service_name, 305 void GetInterface(const mojo::String& interface_name,
306 ScopedMessagePipeHandle client_handle) override { 306 ScopedMessagePipeHandle client_handle) override {
307 if (service_name == Validator::Name_) { 307 if (interface_name == Validator::Name_) {
308 factory_->Create(nullptr, 308 factory_->Create(nullptr,
309 MakeRequest<Validator>(std::move(client_handle))); 309 MakeRequest<Validator>(std::move(client_handle)));
310 } 310 }
311 } 311 }
312 312
313 Binding<ServiceProvider> binding_; 313 Binding<InterfaceProvider> binding_;
314 InterfaceFactory<Validator>* factory_; 314 InterfaceFactory<Validator>* factory_;
315 315
316 DISALLOW_COPY_AND_ASSIGN(ServiceProviderImpl); 316 DISALLOW_COPY_AND_ASSIGN(InterfaceProviderImpl);
317 }; 317 };
318 318
319 void CapabilityFilterTest::RunApplication(const std::string& url, 319 void CapabilityFilterTest::RunApplication(const std::string& url,
320 const CapabilityFilter& filter) { 320 const CapabilityFilter& filter) {
321 ServiceProviderPtr services; 321 InterfaceProviderPtr remote_interfaces;
322 322
323 // We expose Validator to the test application via ConnectToApplication 323 // We expose Validator to the test application via ConnectToApplication
324 // because we don't allow the test application to connect to test:validator. 324 // because we don't allow the test application to connect to test:validator.
325 // Adding it to the CapabilityFilter would interfere with the test. 325 // Adding it to the CapabilityFilter would interfere with the test.
326 ServiceProviderPtr exposed_services; 326 InterfaceProviderPtr local_interfaces;
327 new ServiceProviderImpl(GetProxy(&exposed_services), validator_); 327 new InterfaceProviderImpl(GetProxy(&local_interfaces), validator_);
328 scoped_ptr<ConnectToApplicationParams> params( 328 scoped_ptr<ConnectToApplicationParams> params(
329 new ConnectToApplicationParams); 329 new ConnectToApplicationParams);
330 params->SetTarget(Identity(GURL(url), std::string(), filter)); 330 params->SetTarget(Identity(GURL(url), std::string(), filter));
331 params->set_services(GetProxy(&services)); 331 params->set_remote_interfaces(GetProxy(&remote_interfaces));
332 params->set_exposed_services(std::move(exposed_services)); 332 params->set_local_interfaces(std::move(local_interfaces));
333 params->set_on_application_end(base::MessageLoop::QuitWhenIdleClosure()); 333 params->set_on_application_end(base::MessageLoop::QuitWhenIdleClosure());
334 application_manager_->ConnectToApplication(std::move(params)); 334 application_manager_->ConnectToApplication(std::move(params));
335 } 335 }
336 336
337 void CapabilityFilterTest::InitValidator( 337 void CapabilityFilterTest::InitValidator(
338 const std::set<std::string>& expectations) { 338 const std::set<std::string>& expectations) {
339 validator_ = new ConnectionValidator(expectations, &loop_); 339 validator_ = new ConnectionValidator(expectations, &loop_);
340 application_manager()->SetLoaderForURL(make_scoped_ptr(validator_), 340 application_manager()->SetLoaderForURL(make_scoped_ptr(validator_),
341 GURL("test:validator")); 341 GURL("test:validator"));
342 } 342 }
343 343
344 void CapabilityFilterTest::RunTest() { 344 void CapabilityFilterTest::RunTest() {
345 loop()->Run(); 345 loop()->Run();
346 EXPECT_TRUE(validator_->expectations_met()); 346 EXPECT_TRUE(validator_->expectations_met());
347 if (!validator_->expectations_met()) 347 if (!validator_->expectations_met())
348 validator_->PrintUnmetExpectations(); 348 validator_->PrintUnmetExpectations();
349 } 349 }
350 350
351 } // namespace test 351 } // namespace test
352 } // namespace shell 352 } // namespace shell
353 } // namespace mojo 353 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/shell/application_manager_unittest.cc ('k') | mojo/shell/capability_filter_unittest.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698