OLD | NEW |
1 | 1 |
2 // Copyright 2014 The Chromium Authors. All rights reserved. | 2 // Copyright 2014 The Chromium Authors. All rights reserved. |
3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
5 | 5 |
6 #include "modules/serviceworkers/ServiceWorkerContainer.h" | 6 #include "modules/serviceworkers/ServiceWorkerContainer.h" |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 | 122 |
123 // Service Worker-specific tests. | 123 // Service Worker-specific tests. |
124 | 124 |
125 class NotReachedWebServiceWorkerProvider : public WebServiceWorkerProvider { | 125 class NotReachedWebServiceWorkerProvider : public WebServiceWorkerProvider { |
126 public: | 126 public: |
127 ~NotReachedWebServiceWorkerProvider() override {} | 127 ~NotReachedWebServiceWorkerProvider() override {} |
128 | 128 |
129 void registerServiceWorker( | 129 void registerServiceWorker( |
130 const WebURL& pattern, | 130 const WebURL& pattern, |
131 const WebURL& scriptURL, | 131 const WebURL& scriptURL, |
| 132 bool useCache, |
132 std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) | 133 std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) |
133 override { | 134 override { |
134 ADD_FAILURE() | 135 ADD_FAILURE() |
135 << "the provider should not be called to register a Service Worker"; | 136 << "the provider should not be called to register a Service Worker"; |
136 } | 137 } |
137 | 138 |
138 bool validateScopeAndScriptURL(const WebURL& scope, | 139 bool validateScopeAndScriptURL(const WebURL& scope, |
139 const WebURL& scriptURL, | 140 const WebURL& scriptURL, |
140 WebString* errorMessage) { | 141 WebString* errorMessage) { |
141 return true; | 142 return true; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 // StubWebServiceWorkerProvider dies. | 273 // StubWebServiceWorkerProvider dies. |
273 std::unique_ptr<WebServiceWorkerProvider> provider() { | 274 std::unique_ptr<WebServiceWorkerProvider> provider() { |
274 return WTF::wrapUnique(new WebServiceWorkerProviderImpl(*this)); | 275 return WTF::wrapUnique(new WebServiceWorkerProviderImpl(*this)); |
275 } | 276 } |
276 | 277 |
277 size_t registerCallCount() { return m_registerCallCount; } | 278 size_t registerCallCount() { return m_registerCallCount; } |
278 const WebURL& registerScope() { return m_registerScope; } | 279 const WebURL& registerScope() { return m_registerScope; } |
279 const WebURL& registerScriptURL() { return m_registerScriptURL; } | 280 const WebURL& registerScriptURL() { return m_registerScriptURL; } |
280 size_t getRegistrationCallCount() { return m_getRegistrationCallCount; } | 281 size_t getRegistrationCallCount() { return m_getRegistrationCallCount; } |
281 const WebURL& getRegistrationURL() { return m_getRegistrationURL; } | 282 const WebURL& getRegistrationURL() { return m_getRegistrationURL; } |
| 283 bool useCache() const { return m_useCache; } |
282 | 284 |
283 private: | 285 private: |
284 class WebServiceWorkerProviderImpl : public WebServiceWorkerProvider { | 286 class WebServiceWorkerProviderImpl : public WebServiceWorkerProvider { |
285 public: | 287 public: |
286 WebServiceWorkerProviderImpl(StubWebServiceWorkerProvider& owner) | 288 WebServiceWorkerProviderImpl(StubWebServiceWorkerProvider& owner) |
287 : m_owner(owner) {} | 289 : m_owner(owner) {} |
288 | 290 |
289 ~WebServiceWorkerProviderImpl() override {} | 291 ~WebServiceWorkerProviderImpl() override {} |
290 | 292 |
291 void registerServiceWorker( | 293 void registerServiceWorker( |
292 const WebURL& pattern, | 294 const WebURL& pattern, |
293 const WebURL& scriptURL, | 295 const WebURL& scriptURL, |
| 296 bool useCache, |
294 std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) | 297 std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) |
295 override { | 298 override { |
296 m_owner.m_registerCallCount++; | 299 m_owner.m_registerCallCount++; |
297 m_owner.m_registerScope = pattern; | 300 m_owner.m_registerScope = pattern; |
298 m_owner.m_registerScriptURL = scriptURL; | 301 m_owner.m_registerScriptURL = scriptURL; |
| 302 m_owner.m_useCache = useCache; |
299 m_registrationCallbacksToDelete.push_back(std::move(callbacks)); | 303 m_registrationCallbacksToDelete.push_back(std::move(callbacks)); |
300 } | 304 } |
301 | 305 |
302 void getRegistration( | 306 void getRegistration( |
303 const WebURL& documentURL, | 307 const WebURL& documentURL, |
304 std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks> callbacks) | 308 std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks> callbacks) |
305 override { | 309 override { |
306 m_owner.m_getRegistrationCallCount++; | 310 m_owner.m_getRegistrationCallCount++; |
307 m_owner.m_getRegistrationURL = documentURL; | 311 m_owner.m_getRegistrationURL = documentURL; |
308 m_getRegistrationCallbacksToDelete.push_back(std::move(callbacks)); | 312 m_getRegistrationCallbacksToDelete.push_back(std::move(callbacks)); |
(...skipping 12 matching lines...) Expand all Loading... |
321 Vector<std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks>> | 325 Vector<std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks>> |
322 m_getRegistrationCallbacksToDelete; | 326 m_getRegistrationCallbacksToDelete; |
323 }; | 327 }; |
324 | 328 |
325 private: | 329 private: |
326 size_t m_registerCallCount; | 330 size_t m_registerCallCount; |
327 WebURL m_registerScope; | 331 WebURL m_registerScope; |
328 WebURL m_registerScriptURL; | 332 WebURL m_registerScriptURL; |
329 size_t m_getRegistrationCallCount; | 333 size_t m_getRegistrationCallCount; |
330 WebURL m_getRegistrationURL; | 334 WebURL m_getRegistrationURL; |
| 335 bool m_useCache; |
331 }; | 336 }; |
332 | 337 |
333 TEST_F(ServiceWorkerContainerTest, | 338 TEST_F(ServiceWorkerContainerTest, |
334 RegisterUnregister_NonHttpsSecureOriginDelegatesToProvider) { | 339 RegisterUnregister_NonHttpsSecureOriginDelegatesToProvider) { |
335 setPageURL("http://localhost/x/index.html"); | 340 setPageURL("http://localhost/x/index.html"); |
336 | 341 |
337 StubWebServiceWorkerProvider stubProvider; | 342 StubWebServiceWorkerProvider stubProvider; |
338 provide(stubProvider.provider()); | 343 provide(stubProvider.provider()); |
339 | 344 |
340 ServiceWorkerContainer* container = ServiceWorkerContainer::create( | 345 ServiceWorkerContainer* container = ServiceWorkerContainer::create( |
341 getExecutionContext(), getNavigatorServiceWorker()); | 346 getExecutionContext(), getNavigatorServiceWorker()); |
342 | 347 |
343 // register | 348 // register |
344 { | 349 { |
345 ScriptState::Scope scriptScope(getScriptState()); | 350 ScriptState::Scope scriptScope(getScriptState()); |
346 RegistrationOptions options; | 351 RegistrationOptions options; |
347 options.setScope("y/"); | 352 options.setScope("y/"); |
348 container->registerServiceWorker(getScriptState(), "/x/y/worker.js", | 353 container->registerServiceWorker(getScriptState(), "/x/y/worker.js", |
349 options); | 354 options); |
350 | 355 |
351 EXPECT_EQ(1ul, stubProvider.registerCallCount()); | 356 EXPECT_EQ(1ul, stubProvider.registerCallCount()); |
352 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/")), | 357 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/")), |
353 stubProvider.registerScope()); | 358 stubProvider.registerScope()); |
354 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/worker.js")), | 359 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/worker.js")), |
355 stubProvider.registerScriptURL()); | 360 stubProvider.registerScriptURL()); |
| 361 EXPECT_EQ(false, stubProvider.useCache()); |
356 } | 362 } |
357 } | 363 } |
358 | 364 |
359 TEST_F(ServiceWorkerContainerTest, | 365 TEST_F(ServiceWorkerContainerTest, |
360 GetRegistration_OmittedDocumentURLDefaultsToPageURL) { | 366 GetRegistration_OmittedDocumentURLDefaultsToPageURL) { |
361 setPageURL("http://localhost/x/index.html"); | 367 setPageURL("http://localhost/x/index.html"); |
362 | 368 |
363 StubWebServiceWorkerProvider stubProvider; | 369 StubWebServiceWorkerProvider stubProvider; |
364 provide(stubProvider.provider()); | 370 provide(stubProvider.provider()); |
365 | 371 |
366 ServiceWorkerContainer* container = ServiceWorkerContainer::create( | 372 ServiceWorkerContainer* container = ServiceWorkerContainer::create( |
367 getExecutionContext(), getNavigatorServiceWorker()); | 373 getExecutionContext(), getNavigatorServiceWorker()); |
368 | 374 |
369 { | 375 { |
370 ScriptState::Scope scriptScope(getScriptState()); | 376 ScriptState::Scope scriptScope(getScriptState()); |
371 container->getRegistration(getScriptState(), ""); | 377 container->getRegistration(getScriptState(), ""); |
372 EXPECT_EQ(1ul, stubProvider.getRegistrationCallCount()); | 378 EXPECT_EQ(1ul, stubProvider.getRegistrationCallCount()); |
373 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/index.html")), | 379 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/index.html")), |
374 stubProvider.getRegistrationURL()); | 380 stubProvider.getRegistrationURL()); |
375 } | 381 } |
376 } | 382 } |
377 | 383 |
| 384 TEST_F(ServiceWorkerContainerTest, |
| 385 RegisterUnregister_UseCacheOptionDelegatesToProvider) { |
| 386 setPageURL("http://localhost/x/index.html"); |
| 387 |
| 388 StubWebServiceWorkerProvider stubProvider; |
| 389 provide(stubProvider.provider()); |
| 390 |
| 391 ServiceWorkerContainer* container = ServiceWorkerContainer::create( |
| 392 getExecutionContext(), getNavigatorServiceWorker()); |
| 393 |
| 394 // register |
| 395 { |
| 396 ScriptState::Scope scriptScope(getScriptState()); |
| 397 RegistrationOptions options; |
| 398 options.setUseCache(true); |
| 399 container->registerServiceWorker(getScriptState(), "/x/y/worker.js", |
| 400 options); |
| 401 |
| 402 EXPECT_EQ(1ul, stubProvider.registerCallCount()); |
| 403 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/")), |
| 404 stubProvider.registerScope()); |
| 405 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/worker.js")), |
| 406 stubProvider.registerScriptURL()); |
| 407 EXPECT_EQ(true, stubProvider.useCache()); |
| 408 } |
| 409 } |
| 410 |
378 } // namespace | 411 } // namespace |
379 } // namespace blink | 412 } // namespace blink |
OLD | NEW |