OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/service_worker/service_worker_provider_host.h" | 5 #include "content/browser/service_worker/service_worker_provider_host.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 | 50 |
51 void SetUp() override { | 51 void SetUp() override { |
52 old_content_browser_client_ = | 52 old_content_browser_client_ = |
53 SetBrowserClientForTesting(&test_content_browser_client_); | 53 SetBrowserClientForTesting(&test_content_browser_client_); |
54 ResetSchemesAndOriginsWhitelist(); | 54 ResetSchemesAndOriginsWhitelist(); |
55 | 55 |
56 helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath())); | 56 helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath())); |
57 context_ = helper_->context(); | 57 context_ = helper_->context(); |
58 script_url_ = GURL("https://www.example.com/service_worker.js"); | 58 script_url_ = GURL("https://www.example.com/service_worker.js"); |
59 registration1_ = new ServiceWorkerRegistration( | 59 registration1_ = new ServiceWorkerRegistration( |
60 GURL("https://www.example.com/"), 1L, context_->AsWeakPtr()); | 60 ServiceWorkerRegistrationOptions(GURL("https://www.example.com/")), 1L, |
| 61 context_->AsWeakPtr()); |
61 registration2_ = new ServiceWorkerRegistration( | 62 registration2_ = new ServiceWorkerRegistration( |
62 GURL("https://www.example.com/example"), 2L, context_->AsWeakPtr()); | 63 ServiceWorkerRegistrationOptions( |
| 64 GURL("https://www.example.com/example")), |
| 65 2L, context_->AsWeakPtr()); |
63 registration3_ = new ServiceWorkerRegistration( | 66 registration3_ = new ServiceWorkerRegistration( |
64 GURL("https://other.example.com/"), 3L, context_->AsWeakPtr()); | 67 ServiceWorkerRegistrationOptions(GURL("https://other.example.com/")), |
| 68 3L, context_->AsWeakPtr()); |
65 } | 69 } |
66 | 70 |
67 void TearDown() override { | 71 void TearDown() override { |
68 registration1_ = 0; | 72 registration1_ = 0; |
69 registration2_ = 0; | 73 registration2_ = 0; |
70 helper_.reset(); | 74 helper_.reset(); |
71 SetBrowserClientForTesting(old_content_browser_client_); | 75 SetBrowserClientForTesting(old_content_browser_client_); |
72 // Reset cached security schemes so we don't affect other tests. | 76 // Reset cached security schemes so we don't affect other tests. |
73 ResetSchemesAndOriginsWhitelist(); | 77 ResetSchemesAndOriginsWhitelist(); |
74 } | 78 } |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 EXPECT_TRUE(provider_host_secure_parent->IsContextSecureForServiceWorker()); | 245 EXPECT_TRUE(provider_host_secure_parent->IsContextSecureForServiceWorker()); |
242 | 246 |
243 // Exceptional service worker scheme with insecure parent frame. | 247 // Exceptional service worker scheme with insecure parent frame. |
244 provider_host_insecure_parent->SetDocumentUrl(url); | 248 provider_host_insecure_parent->SetDocumentUrl(url); |
245 EXPECT_FALSE( | 249 EXPECT_FALSE( |
246 provider_host_insecure_parent->IsContextSecureForServiceWorker()); | 250 provider_host_insecure_parent->IsContextSecureForServiceWorker()); |
247 } | 251 } |
248 | 252 |
249 class MockServiceWorkerRegistration : public ServiceWorkerRegistration { | 253 class MockServiceWorkerRegistration : public ServiceWorkerRegistration { |
250 public: | 254 public: |
251 MockServiceWorkerRegistration(const GURL& pattern, | 255 MockServiceWorkerRegistration(const ServiceWorkerRegistrationOptions& options, |
252 int64_t registration_id, | 256 int64_t registration_id, |
253 base::WeakPtr<ServiceWorkerContextCore> context) | 257 base::WeakPtr<ServiceWorkerContextCore> context) |
254 : ServiceWorkerRegistration(pattern, registration_id, context) {} | 258 : ServiceWorkerRegistration(options, registration_id, context) {} |
255 | 259 |
256 void AddListener(ServiceWorkerRegistration::Listener* listener) override { | 260 void AddListener(ServiceWorkerRegistration::Listener* listener) override { |
257 listeners_.insert(listener); | 261 listeners_.insert(listener); |
258 } | 262 } |
259 | 263 |
260 void RemoveListener(ServiceWorkerRegistration::Listener* listener) override { | 264 void RemoveListener(ServiceWorkerRegistration::Listener* listener) override { |
261 listeners_.erase(listener); | 265 listeners_.erase(listener); |
262 } | 266 } |
263 | 267 |
264 const std::set<ServiceWorkerRegistration::Listener*>& listeners() { | 268 const std::set<ServiceWorkerRegistration::Listener*>& listeners() { |
265 return listeners_; | 269 return listeners_; |
266 } | 270 } |
267 | 271 |
268 protected: | 272 protected: |
269 ~MockServiceWorkerRegistration() override{}; | 273 ~MockServiceWorkerRegistration() override{}; |
270 | 274 |
271 private: | 275 private: |
272 std::set<ServiceWorkerRegistration::Listener*> listeners_; | 276 std::set<ServiceWorkerRegistration::Listener*> listeners_; |
273 }; | 277 }; |
274 | 278 |
275 TEST_F(ServiceWorkerProviderHostTest, CrossSiteTransfer) { | 279 TEST_F(ServiceWorkerProviderHostTest, CrossSiteTransfer) { |
276 if (IsBrowserSideNavigationEnabled()) | 280 if (IsBrowserSideNavigationEnabled()) |
277 return; | 281 return; |
278 | 282 |
279 // Create a mock registration before creating the provider host which is in | 283 // Create a mock registration before creating the provider host which is in |
280 // the scope. | 284 // the scope. |
| 285 ServiceWorkerRegistrationOptions options(GURL("https://cross.example.com/")); |
281 scoped_refptr<MockServiceWorkerRegistration> registration = | 286 scoped_refptr<MockServiceWorkerRegistration> registration = |
282 new MockServiceWorkerRegistration(GURL("https://cross.example.com/"), 4L, | 287 new MockServiceWorkerRegistration(options, 4L, |
283 helper_->context()->AsWeakPtr()); | 288 helper_->context()->AsWeakPtr()); |
284 | 289 |
285 ServiceWorkerProviderHost* provider_host = | 290 ServiceWorkerProviderHost* provider_host = |
286 CreateProviderHost(GURL("https://cross.example.com/example.html")); | 291 CreateProviderHost(GURL("https://cross.example.com/example.html")); |
287 const int process_id = provider_host->process_id(); | 292 const int process_id = provider_host->process_id(); |
288 const int provider_id = provider_host->provider_id(); | 293 const int provider_id = provider_host->provider_id(); |
289 const int frame_id = provider_host->frame_id(); | 294 const int frame_id = provider_host->frame_id(); |
290 const ServiceWorkerProviderType type = provider_host->provider_type(); | 295 const ServiceWorkerProviderType type = provider_host->provider_type(); |
291 const bool is_parent_frame_secure = provider_host->is_parent_frame_secure(); | 296 const bool is_parent_frame_secure = provider_host->is_parent_frame_secure(); |
292 const ServiceWorkerDispatcherHost* dispatcher_host = | 297 const ServiceWorkerDispatcherHost* dispatcher_host = |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 EXPECT_TRUE(context_->GetProviderHost(process_id, provider_id)); | 345 EXPECT_TRUE(context_->GetProviderHost(process_id, provider_id)); |
341 | 346 |
342 // Disconnect the mojo pipe from the renderer side. | 347 // Disconnect the mojo pipe from the renderer side. |
343 ASSERT_TRUE(remote_endpoints_.back().host_ptr()->is_bound()); | 348 ASSERT_TRUE(remote_endpoints_.back().host_ptr()->is_bound()); |
344 remote_endpoints_.back().host_ptr()->reset(); | 349 remote_endpoints_.back().host_ptr()->reset(); |
345 base::RunLoop().RunUntilIdle(); | 350 base::RunLoop().RunUntilIdle(); |
346 EXPECT_FALSE(context_->GetProviderHost(process_id, provider_id)); | 351 EXPECT_FALSE(context_->GetProviderHost(process_id, provider_id)); |
347 } | 352 } |
348 | 353 |
349 } // namespace content | 354 } // namespace content |
OLD | NEW |