OLD | NEW |
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" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 }; | 106 }; |
107 | 107 |
108 // This class models a system service that exposes two interfaces, Safe and | 108 // This class models a system service that exposes two interfaces, Safe and |
109 // Unsafe. The interface Unsafe is not to be exposed to untrusted applications. | 109 // Unsafe. The interface Unsafe is not to be exposed to untrusted applications. |
110 class ServiceApplication : public ApplicationDelegate, | 110 class ServiceApplication : public ApplicationDelegate, |
111 public InterfaceFactory<Safe>, | 111 public InterfaceFactory<Safe>, |
112 public InterfaceFactory<Unsafe>, | 112 public InterfaceFactory<Unsafe>, |
113 public Safe, | 113 public Safe, |
114 public Unsafe { | 114 public Unsafe { |
115 public: | 115 public: |
116 ServiceApplication() : app_(nullptr) {} | 116 ServiceApplication() : shell_(nullptr) {} |
117 ~ServiceApplication() override {} | 117 ~ServiceApplication() override {} |
118 | 118 |
119 private: | 119 private: |
120 // Overridden from ApplicationDelegate: | 120 // Overridden from ApplicationDelegate: |
121 void Initialize(ApplicationImpl* app) override { | 121 void Initialize(Shell* shell, const std::string& url, uint32_t id) override { |
122 app_ = app; | 122 shell_ = shell; |
123 // ServiceApplications have no capability filter and can thus connect | 123 // ServiceApplications have no capability filter and can thus connect |
124 // directly to the validator application. | 124 // directly to the validator application. |
125 app_->ConnectToService("test:validator", &validator_); | 125 shell_->ConnectToService("test:validator", &validator_); |
126 } | 126 } |
127 bool AcceptConnection(ApplicationConnection* connection) override { | 127 bool AcceptConnection(ApplicationConnection* connection) override { |
128 AddService<Safe>(connection); | 128 AddService<Safe>(connection); |
129 AddService<Unsafe>(connection); | 129 AddService<Unsafe>(connection); |
130 return true; | 130 return true; |
131 } | 131 } |
132 | 132 |
133 // Overridden from InterfaceFactory<Safe>: | 133 // Overridden from InterfaceFactory<Safe>: |
134 void Create(ApplicationConnection* connection, | 134 void Create(ApplicationConnection* connection, |
135 InterfaceRequest<Safe> request) override { | 135 InterfaceRequest<Safe> request) override { |
136 safe_bindings_.AddBinding(this, std::move(request)); | 136 safe_bindings_.AddBinding(this, std::move(request)); |
137 } | 137 } |
138 | 138 |
139 // Overridden from InterfaceFactory<Unsafe>: | 139 // Overridden from InterfaceFactory<Unsafe>: |
140 void Create(ApplicationConnection* connection, | 140 void Create(ApplicationConnection* connection, |
141 InterfaceRequest<Unsafe> request) override { | 141 InterfaceRequest<Unsafe> request) override { |
142 unsafe_bindings_.AddBinding(this, std::move(request)); | 142 unsafe_bindings_.AddBinding(this, std::move(request)); |
143 } | 143 } |
144 | 144 |
145 template <typename Interface> | 145 template <typename Interface> |
146 void AddService(ApplicationConnection* connection) { | 146 void AddService(ApplicationConnection* connection) { |
147 validator_->AddServiceCalled(connection->GetRemoteApplicationURL(), | 147 validator_->AddServiceCalled(connection->GetRemoteApplicationURL(), |
148 connection->GetConnectionURL(), | 148 connection->GetConnectionURL(), |
149 Interface::Name_, | 149 Interface::Name_, |
150 !connection->AddService<Interface>(this)); | 150 !connection->AddService<Interface>(this)); |
151 } | 151 } |
152 | 152 |
153 ApplicationImpl* app_; | 153 Shell* shell_; |
154 ValidatorPtr validator_; | 154 ValidatorPtr validator_; |
155 WeakBindingSet<Safe> safe_bindings_; | 155 WeakBindingSet<Safe> safe_bindings_; |
156 WeakBindingSet<Unsafe> unsafe_bindings_; | 156 WeakBindingSet<Unsafe> unsafe_bindings_; |
157 | 157 |
158 DISALLOW_COPY_AND_ASSIGN(ServiceApplication); | 158 DISALLOW_COPY_AND_ASSIGN(ServiceApplication); |
159 }; | 159 }; |
160 | 160 |
161 //////////////////////////////////////////////////////////////////////////////// | 161 //////////////////////////////////////////////////////////////////////////////// |
162 // TestApplication: | 162 // TestApplication: |
163 | 163 |
164 TestApplication::TestApplication() : app_(nullptr) {} | 164 TestApplication::TestApplication() : shell_(nullptr) {} |
165 TestApplication::~TestApplication() {} | 165 TestApplication::~TestApplication() {} |
166 | 166 |
167 void TestApplication::Initialize(ApplicationImpl* app) { | 167 void TestApplication::Initialize(Shell* shell, const std::string& url, |
168 app_ = app; | 168 uint32_t id) { |
| 169 shell_ = shell; |
| 170 url_ = url; |
169 } | 171 } |
170 bool TestApplication::AcceptConnection( | 172 bool TestApplication::AcceptConnection( |
171 ApplicationConnection* connection) { | 173 ApplicationConnection* connection) { |
172 // TestApplications receive their Validator via the inbound connection. | 174 // TestApplications receive their Validator via the inbound connection. |
173 connection->ConnectToService(&validator_); | 175 connection->ConnectToService(&validator_); |
174 | 176 |
175 connection1_ = app_->ConnectToApplication("test:service"); | 177 connection1_ = shell_->ConnectToApplication("test:service"); |
176 connection1_->SetRemoteServiceProviderConnectionErrorHandler( | 178 connection1_->SetRemoteServiceProviderConnectionErrorHandler( |
177 base::Bind(&TestApplication::ConnectionClosed, | 179 base::Bind(&TestApplication::ConnectionClosed, |
178 base::Unretained(this), "test:service")); | 180 base::Unretained(this), "test:service")); |
179 | 181 |
180 connection2_ = app_->ConnectToApplication("test:service2"); | 182 connection2_ = shell_->ConnectToApplication("test:service2"); |
181 connection2_->SetRemoteServiceProviderConnectionErrorHandler( | 183 connection2_->SetRemoteServiceProviderConnectionErrorHandler( |
182 base::Bind(&TestApplication::ConnectionClosed, | 184 base::Bind(&TestApplication::ConnectionClosed, |
183 base::Unretained(this), "test:service2")); | 185 base::Unretained(this), "test:service2")); |
184 return true; | 186 return true; |
185 } | 187 } |
186 | 188 |
187 void TestApplication::ConnectionClosed(const std::string& service_url) { | 189 void TestApplication::ConnectionClosed(const std::string& service_url) { |
188 validator_->ConnectionClosed(app_->url(), service_url); | 190 validator_->ConnectionClosed(url_, service_url); |
189 } | 191 } |
190 | 192 |
191 //////////////////////////////////////////////////////////////////////////////// | 193 //////////////////////////////////////////////////////////////////////////////// |
192 // TestLoader: | 194 // TestLoader: |
193 | 195 |
194 TestLoader::TestLoader(ApplicationDelegate* delegate) : delegate_(delegate) {} | 196 TestLoader::TestLoader(ApplicationDelegate* delegate) : delegate_(delegate) {} |
195 TestLoader::~TestLoader() {} | 197 TestLoader::~TestLoader() {} |
196 | 198 |
197 void TestLoader::Load(const GURL& url, | 199 void TestLoader::Load(const GURL& url, |
198 InterfaceRequest<mojom::Application> request) { | 200 InterfaceRequest<mojom::Application> request) { |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 void CapabilityFilterTest::RunTest() { | 323 void CapabilityFilterTest::RunTest() { |
322 loop()->Run(); | 324 loop()->Run(); |
323 EXPECT_TRUE(validator_->expectations_met()); | 325 EXPECT_TRUE(validator_->expectations_met()); |
324 if (!validator_->expectations_met()) | 326 if (!validator_->expectations_met()) |
325 validator_->PrintUnmetExpectations(); | 327 validator_->PrintUnmetExpectations(); |
326 } | 328 } |
327 | 329 |
328 } // namespace test | 330 } // namespace test |
329 } // namespace shell | 331 } // namespace shell |
330 } // namespace mojo | 332 } // namespace mojo |
OLD | NEW |