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

Side by Side Diff: content/browser/service_worker/link_header_support_unittest.cc

Issue 2771823002: Implement updateViaCache flag and no-cache by default for main service worker scripts
Patch Set: Move API change to another patch and address comments Created 3 years, 5 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 "content/browser/service_worker/link_header_support.h" 5 #include "content/browser/service_worker/link_header_support.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "content/browser/loader/resource_request_info_impl.h" 10 #include "content/browser/loader/resource_request_info_impl.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 provider_host()->provider_id()) 188 provider_host()->provider_id())
189 .get(), 189 .get(),
190 "<../foo.js>; rel=serviceworker", context_wrapper()); 190 "<../foo.js>; rel=serviceworker", context_wrapper());
191 base::RunLoop().RunUntilIdle(); 191 base::RunLoop().RunUntilIdle();
192 192
193 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 193 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
194 ASSERT_EQ(1u, registrations.size()); 194 ASSERT_EQ(1u, registrations.size());
195 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern); 195 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
196 EXPECT_EQ(GURL("https://example.com/foo/foo.js"), 196 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
197 registrations[0].active_version.script_url); 197 registrations[0].active_version.script_url);
198 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
199 registrations[0].update_via_cache);
198 } 200 }
199 201
200 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeWithFragment) { 202 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeWithFragment) {
201 CreateDocumentProviderHost(); 203 CreateDocumentProviderHost();
202 ProcessLinkHeaderForRequest( 204 ProcessLinkHeaderForRequest(
203 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"), 205 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"),
204 provider_host()->provider_id()) 206 provider_host()->provider_id())
205 .get(), 207 .get(),
206 "<../bar.js>; rel=serviceworker; scope=\"scope#ref\"", context_wrapper()); 208 "<../bar.js>; rel=serviceworker; scope=\"scope#ref\"", context_wrapper());
207 base::RunLoop().RunUntilIdle(); 209 base::RunLoop().RunUntilIdle();
208 210
209 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 211 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
210 ASSERT_EQ(1u, registrations.size()); 212 ASSERT_EQ(1u, registrations.size());
211 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"), 213 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"),
212 registrations[0].pattern); 214 registrations[0].pattern);
213 EXPECT_EQ(GURL("https://example.com/foo/bar.js"), 215 EXPECT_EQ(GURL("https://example.com/foo/bar.js"),
214 registrations[0].active_version.script_url); 216 registrations[0].active_version.script_url);
217 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
218 registrations[0].update_via_cache);
215 } 219 }
216 220
217 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeAbsoluteUrl) { 221 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeAbsoluteUrl) {
218 CreateDocumentProviderHost(); 222 CreateDocumentProviderHost();
219 ProcessLinkHeaderForRequest( 223 ProcessLinkHeaderForRequest(
220 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"), 224 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"),
221 provider_host()->provider_id()) 225 provider_host()->provider_id())
222 .get(), 226 .get(),
223 "<bar.js>; rel=serviceworker; " 227 "<bar.js>; rel=serviceworker; "
224 "scope=\"https://example.com:443/foo/bar/scope\"", 228 "scope=\"https://example.com:443/foo/bar/scope\"",
225 context_wrapper()); 229 context_wrapper());
226 base::RunLoop().RunUntilIdle(); 230 base::RunLoop().RunUntilIdle();
227 231
228 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 232 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
229 ASSERT_EQ(1u, registrations.size()); 233 ASSERT_EQ(1u, registrations.size());
230 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"), 234 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"),
231 registrations[0].pattern); 235 registrations[0].pattern);
232 EXPECT_EQ(GURL("https://example.com/foo/bar/bar.js"), 236 EXPECT_EQ(GURL("https://example.com/foo/bar/bar.js"),
233 registrations[0].active_version.script_url); 237 registrations[0].active_version.script_url);
238 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
239 registrations[0].update_via_cache);
234 } 240 }
235 241
236 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeDifferentOrigin) { 242 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeDifferentOrigin) {
237 CreateDocumentProviderHost(); 243 CreateDocumentProviderHost();
238 ProcessLinkHeaderForRequest( 244 ProcessLinkHeaderForRequest(
239 CreateSubresourceRequest(GURL("https://example.com/foobar/"), 245 CreateSubresourceRequest(GURL("https://example.com/foobar/"),
240 provider_host()->provider_id()) 246 provider_host()->provider_id())
241 .get(), 247 .get(),
242 "<bar.js>; rel=serviceworker; scope=\"https://google.com/scope\"", 248 "<bar.js>; rel=serviceworker; scope=\"https://google.com/scope\"",
243 context_wrapper()); 249 context_wrapper());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 .get(), 288 .get(),
283 "<https://example.com/bar.js>; rel=serviceworker; scope=foo", 289 "<https://example.com/bar.js>; rel=serviceworker; scope=foo",
284 context_wrapper()); 290 context_wrapper());
285 base::RunLoop().RunUntilIdle(); 291 base::RunLoop().RunUntilIdle();
286 292
287 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 293 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
288 ASSERT_EQ(1u, registrations.size()); 294 ASSERT_EQ(1u, registrations.size());
289 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern); 295 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern);
290 EXPECT_EQ(GURL("https://example.com/bar.js"), 296 EXPECT_EQ(GURL("https://example.com/bar.js"),
291 registrations[0].active_version.script_url); 297 registrations[0].active_version.script_url);
298 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
299 registrations[0].update_via_cache);
292 } 300 }
293 301
294 TEST_F(LinkHeaderServiceWorkerTest, 302 TEST_F(LinkHeaderServiceWorkerTest,
295 InstallServiceWorker_ScriptDifferentOrigin) { 303 InstallServiceWorker_ScriptDifferentOrigin) {
296 CreateDocumentProviderHost(); 304 CreateDocumentProviderHost();
297 ProcessLinkHeaderForRequest( 305 ProcessLinkHeaderForRequest(
298 CreateSubresourceRequest(GURL("https://example.com/foobar/"), 306 CreateSubresourceRequest(GURL("https://example.com/foobar/"),
299 provider_host()->provider_id()) 307 provider_host()->provider_id())
300 .get(), 308 .get(),
301 "<https://google.com/bar.js>; rel=serviceworker; scope=foo", 309 "<https://google.com/bar.js>; rel=serviceworker; scope=foo",
302 context_wrapper()); 310 context_wrapper());
303 base::RunLoop().RunUntilIdle(); 311 base::RunLoop().RunUntilIdle();
304 312
305 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 313 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
306 ASSERT_EQ(0u, registrations.size()); 314 ASSERT_EQ(0u, registrations.size());
307 } 315 }
308 316
317 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_CacheNone) {
318 CreateDocumentProviderHost();
319 ProcessLinkHeaderForRequest(
320 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"),
321 provider_host()->provider_id())
322 .get(),
323 "<../foo.js>; rel=serviceworker; updateviacache=none", context_wrapper());
324 base::RunLoop().RunUntilIdle();
325
326 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
327 ASSERT_EQ(1u, registrations.size());
328 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
329 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
330 registrations[0].active_version.script_url);
331 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kNone,
332 registrations[0].update_via_cache);
333 }
334
335 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_CacheImports) {
336 CreateDocumentProviderHost();
337 ProcessLinkHeaderForRequest(
338 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"),
339 provider_host()->provider_id())
340 .get(),
341 "<../foo.js>; rel=serviceworker; updateviacache=imports",
342 context_wrapper());
343 base::RunLoop().RunUntilIdle();
344
345 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
346 ASSERT_EQ(1u, registrations.size());
347 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
348 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
349 registrations[0].active_version.script_url);
350 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
351 registrations[0].update_via_cache);
352 }
353
354 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_CacheAll) {
355 CreateDocumentProviderHost();
356 ProcessLinkHeaderForRequest(
357 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"),
358 provider_host()->provider_id())
359 .get(),
360 "<../foo.js>; rel=serviceworker; updateviacache=all", context_wrapper());
361 base::RunLoop().RunUntilIdle();
362
363 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
364 ASSERT_EQ(1u, registrations.size());
365 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
366 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
367 registrations[0].active_version.script_url);
368 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kAll,
369 registrations[0].update_via_cache);
370 }
371
372 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_CacheInvalidValue) {
373 CreateDocumentProviderHost();
374 ProcessLinkHeaderForRequest(
375 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"),
376 provider_host()->provider_id())
377 .get(),
378 "<../foo.js>; rel=serviceworker; updateviacache=invalidvalue",
379 context_wrapper());
380 base::RunLoop().RunUntilIdle();
381
382 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
383 ASSERT_EQ(1u, registrations.size());
384 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
385 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
386 registrations[0].active_version.script_url);
387 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
388 registrations[0].update_via_cache);
389 }
390
309 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_MultipleWorkers) { 391 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_MultipleWorkers) {
310 CreateDocumentProviderHost(); 392 CreateDocumentProviderHost();
311 ProcessLinkHeaderForRequest( 393 ProcessLinkHeaderForRequest(
312 CreateSubresourceRequest(GURL("https://example.com/foobar/"), 394 CreateSubresourceRequest(GURL("https://example.com/foobar/"),
313 provider_host()->provider_id()) 395 provider_host()->provider_id())
314 .get(), 396 .get(),
315 "<bar.js>; rel=serviceworker; scope=foo, <baz.js>; " 397 "<bar.js>; rel=serviceworker; scope=foo, <baz.js>; "
316 "rel=serviceworker; scope=scope", 398 "rel=serviceworker; scope=scope; updateviacache=all",
317 context_wrapper()); 399 context_wrapper());
318 base::RunLoop().RunUntilIdle(); 400 base::RunLoop().RunUntilIdle();
319 401
320 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 402 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
321 ASSERT_EQ(2u, registrations.size()); 403 ASSERT_EQ(2u, registrations.size());
322 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern); 404 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern);
323 EXPECT_EQ(GURL("https://example.com/foobar/bar.js"), 405 EXPECT_EQ(GURL("https://example.com/foobar/bar.js"),
324 registrations[0].active_version.script_url); 406 registrations[0].active_version.script_url);
407 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kAll,
408 registrations[0].update_via_cache);
325 EXPECT_EQ(GURL("https://example.com/foobar/scope"), registrations[1].pattern); 409 EXPECT_EQ(GURL("https://example.com/foobar/scope"), registrations[1].pattern);
326 EXPECT_EQ(GURL("https://example.com/foobar/baz.js"), 410 EXPECT_EQ(GURL("https://example.com/foobar/baz.js"),
327 registrations[1].active_version.script_url); 411 registrations[1].active_version.script_url);
412 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kAll,
413 registrations[1].update_via_cache);
328 } 414 }
329 415
330 TEST_F(LinkHeaderServiceWorkerTest, 416 TEST_F(LinkHeaderServiceWorkerTest,
331 InstallServiceWorker_ValidAndInvalidValues) { 417 InstallServiceWorker_ValidAndInvalidValues) {
332 CreateDocumentProviderHost(); 418 CreateDocumentProviderHost();
333 ProcessLinkHeaderForRequest( 419 ProcessLinkHeaderForRequest(
334 CreateSubresourceRequest(GURL("https://example.com/foobar/"), 420 CreateSubresourceRequest(GURL("https://example.com/foobar/"),
335 provider_host()->provider_id()) 421 provider_host()->provider_id())
336 .get(), 422 .get(),
337 "<https://google.com/bar.js>; rel=serviceworker; scope=foo, <baz.js>; " 423 "<https://google.com/bar.js>; rel=serviceworker; scope=foo, <baz.js>; "
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 459
374 ProcessLinkHeaderForRequest(request.get(), "<../foo.js>; rel=serviceworker", 460 ProcessLinkHeaderForRequest(request.get(), "<../foo.js>; rel=serviceworker",
375 context_wrapper()); 461 context_wrapper());
376 base::RunLoop().RunUntilIdle(); 462 base::RunLoop().RunUntilIdle();
377 463
378 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 464 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
379 ASSERT_EQ(1u, registrations.size()); 465 ASSERT_EQ(1u, registrations.size());
380 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern); 466 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
381 EXPECT_EQ(GURL("https://example.com/foo/foo.js"), 467 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
382 registrations[0].active_version.script_url); 468 registrations[0].active_version.script_url);
469 EXPECT_EQ(blink::WebServiceWorkerUpdateViaCache::kImports,
470 registrations[0].update_via_cache);
383 } 471 }
384 472
385 TEST_F(LinkHeaderServiceWorkerTest, 473 TEST_F(LinkHeaderServiceWorkerTest,
386 InstallServiceWorker_NavigationToInsecureContext) { 474 InstallServiceWorker_NavigationToInsecureContext) {
387 CreateDocumentProviderHost(); 475 CreateDocumentProviderHost();
388 provider_host()->SetDocumentUrl(GURL("http://example.com/foo/bar/")); 476 provider_host()->SetDocumentUrl(GURL("http://example.com/foo/bar/"));
389 ProcessLinkHeaderForRequest( 477 ProcessLinkHeaderForRequest(
390 CreateRequest(GURL("http://example.com/foo/bar/"), 478 CreateRequest(GURL("http://example.com/foo/bar/"),
391 RESOURCE_TYPE_MAIN_FRAME, provider_host()->provider_id()) 479 RESOURCE_TYPE_MAIN_FRAME, provider_host()->provider_id())
392 .get(), 480 .get(),
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 provider_host()->provider_id()) 531 provider_host()->provider_id())
444 .get(), 532 .get(),
445 "<../foo.js>; rel=serviceworker", context_wrapper()); 533 "<../foo.js>; rel=serviceworker", context_wrapper());
446 base::RunLoop().RunUntilIdle(); 534 base::RunLoop().RunUntilIdle();
447 535
448 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 536 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
449 ASSERT_EQ(1u, registrations.size()); 537 ASSERT_EQ(1u, registrations.size());
450 } 538 }
451 539
452 } // namespace content 540 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698