OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015, Google Inc. All rights reserved. | 2 * Copyright (c) 2015, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 float width = 0) { | 421 float width = 0) { |
422 KURL inputURL(ParsedURLString, input); | 422 KURL inputURL(ParsedURLString, input); |
423 FetchRequest fetchRequest = | 423 FetchRequest fetchRequest = |
424 FetchRequest(ResourceRequest(inputURL), FetchInitiatorInfo()); | 424 FetchRequest(ResourceRequest(inputURL), FetchInitiatorInfo()); |
425 if (width > 0) { | 425 if (width > 0) { |
426 FetchRequest::ResourceWidth resourceWidth; | 426 FetchRequest::ResourceWidth resourceWidth; |
427 resourceWidth.width = width; | 427 resourceWidth.width = width; |
428 resourceWidth.isSet = true; | 428 resourceWidth.isSet = true; |
429 fetchRequest.setResourceWidth(resourceWidth); | 429 fetchRequest.setResourceWidth(resourceWidth); |
430 } | 430 } |
431 fetchContext->addClientHintsIfNecessary(fetchRequest); | 431 fetchContext->addClientHintsIfNecessary( |
| 432 fetchRequest.clientHintsPreferences(), fetchRequest.getResourceWidth(), |
| 433 fetchRequest.mutableResourceRequest()); |
432 | 434 |
433 EXPECT_EQ(isPresent ? String(headerValue) : String(), | 435 EXPECT_EQ(isPresent ? String(headerValue) : String(), |
434 fetchRequest.resourceRequest().httpHeaderField(headerName)); | 436 fetchRequest.resourceRequest().httpHeaderField(headerName)); |
435 } | 437 } |
436 }; | 438 }; |
437 | 439 |
438 TEST_F(FrameFetchContextHintsTest, MonitorDPRHints) { | 440 TEST_F(FrameFetchContextHintsTest, MonitorDPRHints) { |
439 expectHeader("http://www.example.com/1.gif", "DPR", false, ""); | 441 expectHeader("http://www.example.com/1.gif", "DPR", false, ""); |
440 ClientHintsPreferences preferences; | 442 ClientHintsPreferences preferences; |
441 preferences.setShouldSendDPR(true); | 443 preferences.setShouldSendDPR(true); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 childFetchContext->resourceRequestCachePolicy( | 540 childFetchContext->resourceRequestCachePolicy( |
539 request, Resource::MainResource, FetchRequest::NoDefer)); | 541 request, Resource::MainResource, FetchRequest::NoDefer)); |
540 | 542 |
541 // Child frame as part of reload bypassing cache | 543 // Child frame as part of reload bypassing cache |
542 document->frame()->loader().setLoadType(FrameLoadTypeReloadBypassingCache); | 544 document->frame()->loader().setLoadType(FrameLoadTypeReloadBypassingCache); |
543 EXPECT_EQ(WebCachePolicy::BypassingCache, | 545 EXPECT_EQ(WebCachePolicy::BypassingCache, |
544 childFetchContext->resourceRequestCachePolicy( | 546 childFetchContext->resourceRequestCachePolicy( |
545 request, Resource::MainResource, FetchRequest::NoDefer)); | 547 request, Resource::MainResource, FetchRequest::NoDefer)); |
546 } | 548 } |
547 | 549 |
548 TEST_F(FrameFetchContextTest, PopulateRequestData) { | 550 TEST_F(FrameFetchContextTest, SetFirstPartyCookieAndRequestorOrigin) { |
549 struct TestCase { | 551 struct TestCase { |
550 const char* documentURL; | 552 const char* documentURL; |
551 bool documentSandboxed; | 553 bool documentSandboxed; |
552 const char* requestorOrigin; // "" => unique origin | 554 const char* requestorOrigin; // "" => unique origin |
553 WebURLRequest::FrameType frameType; | 555 WebURLRequest::FrameType frameType; |
554 const char* serializedOrigin; // "" => unique origin | 556 const char* serializedOrigin; // "" => unique origin |
555 } cases[] = { | 557 } cases[] = { |
556 // No document origin => unique request origin | 558 // No document origin => unique request origin |
557 {"", false, "", WebURLRequest::FrameTypeNone, "null"}, | 559 {"", false, "", WebURLRequest::FrameTypeNone, "null"}, |
558 {"", true, "", WebURLRequest::FrameTypeNone, "null"}, | 560 {"", true, "", WebURLRequest::FrameTypeNone, "null"}, |
559 | 561 |
560 // Document origin => request origin | 562 // Document origin => request origin |
561 {"http://example.test", false, "", WebURLRequest::FrameTypeNone, | 563 {"http://example.test", false, "", WebURLRequest::FrameTypeNone, |
562 "http://example.test"}, | 564 "http://example.test"}, |
563 {"http://example.test", true, "", WebURLRequest::FrameTypeNone, | 565 {"http://example.test", true, "", WebURLRequest::FrameTypeNone, |
564 "http://example.test"}, | 566 "http://example.test"}, |
565 | 567 |
566 // If the request already has a requestor origin, then | 568 // If the request already has a requestor origin, then |
567 // 'populateRequestData' leaves it alone: | 569 // 'setFirstPartyCookieAndRequestorOrigin' leaves it alone: |
568 {"http://example.test", false, "http://not-example.test", | 570 {"http://example.test", false, "http://not-example.test", |
569 WebURLRequest::FrameTypeNone, "http://not-example.test"}, | 571 WebURLRequest::FrameTypeNone, "http://not-example.test"}, |
570 {"http://example.test", true, "http://not-example.test", | 572 {"http://example.test", true, "http://not-example.test", |
571 WebURLRequest::FrameTypeNone, "http://not-example.test"}, | 573 WebURLRequest::FrameTypeNone, "http://not-example.test"}, |
572 | 574 |
573 // If the request's frame type is not 'none', then 'populateRequestData' | 575 // If the request's frame type is not 'none', then |
| 576 // 'setFirstPartyCookieAndRequestorOrigin' |
574 // leaves it alone: | 577 // leaves it alone: |
575 {"http://example.test", false, "", WebURLRequest::FrameTypeTopLevel, ""}, | 578 {"http://example.test", false, "", WebURLRequest::FrameTypeTopLevel, ""}, |
576 {"http://example.test", false, "", WebURLRequest::FrameTypeAuxiliary, ""}, | 579 {"http://example.test", false, "", WebURLRequest::FrameTypeAuxiliary, ""}, |
577 {"http://example.test", false, "", WebURLRequest::FrameTypeNested, ""}, | 580 {"http://example.test", false, "", WebURLRequest::FrameTypeNested, ""}, |
578 }; | 581 }; |
579 | 582 |
580 for (const auto& test : cases) { | 583 for (const auto& test : cases) { |
581 SCOPED_TRACE(::testing::Message() << test.documentURL << " => " | 584 SCOPED_TRACE(::testing::Message() << test.documentURL << " => " |
582 << test.serializedOrigin); | 585 << test.serializedOrigin); |
583 // Set up a new document to ensure sandbox flags are cleared: | 586 // Set up a new document to ensure sandbox flags are cleared: |
(...skipping 10 matching lines...) Expand all Loading... |
594 document->enforceSandboxFlags(SandboxOrigin); | 597 document->enforceSandboxFlags(SandboxOrigin); |
595 | 598 |
596 ResourceRequest request("http://example.test/"); | 599 ResourceRequest request("http://example.test/"); |
597 request.setFrameType(test.frameType); | 600 request.setFrameType(test.frameType); |
598 if (strlen(test.requestorOrigin) > 0) { | 601 if (strlen(test.requestorOrigin) > 0) { |
599 request.setRequestorOrigin( | 602 request.setRequestorOrigin( |
600 SecurityOrigin::create(KURL(ParsedURLString, test.requestorOrigin))); | 603 SecurityOrigin::create(KURL(ParsedURLString, test.requestorOrigin))); |
601 } | 604 } |
602 | 605 |
603 // Compare the populated |requestorOrigin| against |test.serializedOrigin| | 606 // Compare the populated |requestorOrigin| against |test.serializedOrigin| |
604 fetchContext->populateRequestData(request); | 607 fetchContext->setFirstPartyCookieAndRequestorOrigin(request); |
605 if (strlen(test.serializedOrigin) == 0) { | 608 if (strlen(test.serializedOrigin) == 0) { |
606 EXPECT_TRUE(request.requestorOrigin()->isUnique()); | 609 EXPECT_TRUE(request.requestorOrigin()->isUnique()); |
607 } else { | 610 } else { |
608 EXPECT_EQ(String(test.serializedOrigin), | 611 EXPECT_EQ(String(test.serializedOrigin), |
609 request.requestorOrigin()->toString()); | 612 request.requestorOrigin()->toString()); |
610 } | 613 } |
611 | 614 |
612 EXPECT_EQ(document->firstPartyForCookies(), request.firstPartyForCookies()); | 615 EXPECT_EQ(document->firstPartyForCookies(), request.firstPartyForCookies()); |
613 } | 616 } |
614 } | 617 } |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource); | 814 fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource); |
812 EXPECT_EQ(test.isExternalExpectation, mainRequest.isExternalRequest()); | 815 EXPECT_EQ(test.isExternalExpectation, mainRequest.isExternalRequest()); |
813 | 816 |
814 ResourceRequest subRequest(test.url); | 817 ResourceRequest subRequest(test.url); |
815 fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource); | 818 fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource); |
816 EXPECT_EQ(test.isExternalExpectation, subRequest.isExternalRequest()); | 819 EXPECT_EQ(test.isExternalExpectation, subRequest.isExternalRequest()); |
817 } | 820 } |
818 } | 821 } |
819 | 822 |
820 } // namespace blink | 823 } // namespace blink |
OLD | NEW |