summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/loader/resource
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-24 11:30:15 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-30 12:56:19 +0000
commit6036726eb981b6c4b42047513b9d3f4ac865daac (patch)
tree673593e70678e7789766d1f732eb51f613a2703b /chromium/third_party/blink/renderer/core/loader/resource
parent466052c4e7c052268fd931888cd58961da94c586 (diff)
downloadqtwebengine-chromium-6036726eb981b6c4b42047513b9d3f4ac865daac.tar.gz
BASELINE: Update Chromium to 70.0.3538.78
Change-Id: Ie634710bf039e26c1957f4ae45e101bd4c434ae7 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/loader/resource')
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/document_resource.cc2
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc42
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/image_resource.h2
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc6
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.h2
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/image_resource_info.h2
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/image_resource_test.cc97
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/multipart_image_resource_parser.cc3
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/script_resource.cc132
-rw-r--r--chromium/third_party/blink/renderer/core/loader/resource/script_resource.h15
10 files changed, 106 insertions, 197 deletions
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/document_resource.cc b/chromium/third_party/blink/renderer/core/loader/resource/document_resource.cc
index 8ca4629e98f..2503a8c4133 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/document_resource.cc
+++ b/chromium/third_party/blink/renderer/core/loader/resource/document_resource.cc
@@ -38,6 +38,8 @@ DocumentResource* DocumentResource::FetchSVGDocument(FetchParameters& params,
ResourceClient* client) {
DCHECK_EQ(params.GetResourceRequest().GetFrameType(),
network::mojom::RequestContextFrameType::kNone);
+ DCHECK_EQ(params.GetResourceRequest().GetFetchRequestMode(),
+ network::mojom::FetchRequestMode::kSameOrigin);
params.SetRequestContext(WebURLRequest::kRequestContextImage);
return ToDocumentResource(
fetcher->RequestResource(params, SVGDocumentResourceFactory(), client));
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc b/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc
index 1b2e6a28ecd..c567b71c3d0 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc
+++ b/chromium/third_party/blink/renderer/core/loader/resource/image_resource.cc
@@ -24,7 +24,9 @@
#include "third_party/blink/renderer/core/loader/resource/image_resource.h"
#include <stdint.h>
+#include <algorithm>
#include <memory>
+#include <utility>
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/core/loader/resource/image_resource_content.h"
@@ -74,7 +76,8 @@ class ImageResource::ImageResourceInfoImpl final
USING_GARBAGE_COLLECTED_MIXIN(ImageResourceInfoImpl);
public:
- ImageResourceInfoImpl(ImageResource* resource) : resource_(resource) {
+ explicit ImageResourceInfoImpl(ImageResource* resource)
+ : resource_(resource) {
DCHECK(resource_);
}
void Trace(blink::Visitor* visitor) override {
@@ -132,6 +135,14 @@ class ImageResource::ImageResourceInfoImpl final
initiator_name);
}
+ void LoadDeferredImage(ResourceFetcher* fetcher) override {
+ if (resource_->GetType() == Resource::kImage &&
+ resource_->StillNeedsLoad() &&
+ !fetcher->ShouldDeferImageLoad(resource_->Url())) {
+ fetcher->StartLoad(resource_);
+ }
+ }
+
const Member<ImageResource> resource_;
};
@@ -139,7 +150,7 @@ class ImageResource::ImageResourceFactory : public NonTextResourceFactory {
STACK_ALLOCATED();
public:
- ImageResourceFactory(const FetchParameters& fetch_params)
+ explicit ImageResourceFactory(const FetchParameters& fetch_params)
: NonTextResourceFactory(Resource::kImage),
fetch_params_(&fetch_params) {}
@@ -147,7 +158,7 @@ class ImageResource::ImageResourceFactory : public NonTextResourceFactory {
const ResourceLoaderOptions& options) const override {
return new ImageResource(request, options,
ImageResourceContent::CreateNotStarted(),
- fetch_params_->GetPlaceholderImageRequestType() ==
+ fetch_params_->GetImageRequestOptimization() ==
FetchParameters::kAllowPlaceholder);
}
@@ -173,15 +184,16 @@ ImageResource* ImageResource::Fetch(FetchParameters& params,
return resource;
}
-bool ImageResource::CanReuse(
+Resource::MatchStatus ImageResource::CanReuse(
const FetchParameters& params,
scoped_refptr<const SecurityOrigin> new_source_origin) const {
// If the image is a placeholder, but this fetch doesn't allow a
// placeholder, then do not reuse this resource.
- if (params.GetPlaceholderImageRequestType() !=
+ if (params.GetImageRequestOptimization() !=
FetchParameters::kAllowPlaceholder &&
- placeholder_option_ != PlaceholderOption::kDoNotReloadPlaceholder)
- return false;
+ placeholder_option_ != PlaceholderOption::kDoNotReloadPlaceholder) {
+ return MatchStatus::kImagePlaceholder;
+ }
return Resource::CanReuse(params, std::move(new_source_origin));
}
@@ -234,9 +246,8 @@ void ImageResource::OnMemoryDump(WebMemoryDumpLevelOfDetail level_of_detail,
Resource::OnMemoryDump(level_of_detail, memory_dump);
const String name = GetMemoryDumpName() + "/image_content";
auto* dump = memory_dump->CreateMemoryAllocatorDump(name);
- size_t encoded_size =
- content_->HasImage() ? content_->GetImage()->Data()->size() : 0;
- dump->AddScalar("size", "bytes", encoded_size);
+ if (content_->HasImage() && content_->GetImage()->Data())
+ dump->AddScalar("size", "bytes", content_->GetImage()->Data()->size());
}
void ImageResource::Trace(blink::Visitor* visitor) {
@@ -573,7 +584,10 @@ void ImageResource::ReloadIfLoFiOrPlaceholderImage(
DCHECK(!is_scheduling_reload_);
is_scheduling_reload_ = true;
- SetCachePolicyBypassingCache();
+ if (GetResourceRequest().GetPreviewsState() &
+ (WebURLRequest::kClientLoFiOn | WebURLRequest::kServerLoFiOn)) {
+ SetCachePolicyBypassingCache();
+ }
// The reloaded image should not use any previews transformations.
WebURLRequest::PreviewsState previews_state_for_reload =
@@ -629,8 +643,7 @@ void ImageResource::OnePartInMultipartReceived(
if (!GetResponse().IsNull()) {
CHECK_EQ(GetResponse().WasFetchedViaServiceWorker(),
response.WasFetchedViaServiceWorker());
- CHECK_EQ(GetResponse().ResponseTypeViaServiceWorker(),
- response.ResponseTypeViaServiceWorker());
+ CHECK_EQ(GetResponse().GetType(), response.GetType());
}
SetResponse(response);
@@ -671,8 +684,7 @@ bool ImageResource::IsAccessAllowed(
ImageResourceInfo::kHasSingleSecurityOrigin)
return false;
- DCHECK(security_origin);
- if (PassesAccessControlCheck(*security_origin))
+ if (IsSameOriginOrCORSSuccessful())
return true;
return security_origin->CanReadContent(GetResponse().Url());
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/image_resource.h b/chromium/third_party/blink/renderer/core/loader/resource/image_resource.h
index db2a678ae20..32686031826 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/image_resource.h
+++ b/chromium/third_party/blink/renderer/core/loader/resource/image_resource.h
@@ -79,7 +79,7 @@ class CORE_EXPORT ImageResource final
void AllClientsAndObserversRemoved() override;
- bool CanReuse(
+ MatchStatus CanReuse(
const FetchParameters&,
scoped_refptr<const SecurityOrigin> new_source_origin) const override;
bool CanUseCacheValidator() const override;
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
index 73084594c9c..350dd361f8b 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
+++ b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
@@ -65,6 +65,8 @@ class NullImageResourceInfo final
const KURL&,
const AtomicString& initiator_name) override {}
+ void LoadDeferredImage(ResourceFetcher* fetcher) override {}
+
const KURL url_;
const ResourceResponse response_;
};
@@ -629,4 +631,8 @@ bool ImageResourceContent::IsCacheValidator() const {
return info_->IsCacheValidator();
}
+void ImageResourceContent::LoadDeferredImage(ResourceFetcher* fetcher) {
+ info_->LoadDeferredImage(fetcher);
+}
+
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.h b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.h
index 5df45ba3f96..cd281a77399 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.h
+++ b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_content.h
@@ -178,6 +178,8 @@ class CORE_EXPORT ImageResourceContent final
bool IsAcceptableContentType();
bool IsAcceptableCompressionRatio();
+ void LoadDeferredImage(ResourceFetcher* fetcher);
+
private:
using CanDeferInvalidation = ImageResourceObserver::CanDeferInvalidation;
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_info.h b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_info.h
index bd48546a49b..ab395091115 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_info.h
+++ b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_info.h
@@ -58,6 +58,8 @@ class CORE_EXPORT ImageResourceInfo : public GarbageCollectedMixin {
const KURL&,
const AtomicString& initiator_name) = 0;
+ virtual void LoadDeferredImage(ResourceFetcher* fetcher) = 0;
+
void Trace(blink::Visitor* visitor) override {}
};
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_test.cc b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_test.cc
index 3920612fe91..590d49b50dd 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/image_resource_test.cc
+++ b/chromium/third_party/blink/renderer/core/loader/resource/image_resource_test.cc
@@ -195,7 +195,6 @@ void TestThatReloadIsStartedThenServeReload(
ImageResource* image_resource,
ImageResourceContent* content,
MockImageResourceObserver* observer,
- mojom::FetchCacheMode cache_mode_for_reload,
bool placeholder_before_reload) {
const char* data = reinterpret_cast<const char*>(kJpegImage2);
constexpr size_t kDataLength = sizeof(kJpegImage2);
@@ -209,8 +208,6 @@ void TestThatReloadIsStartedThenServeReload(
EXPECT_EQ(placeholder_before_reload, image_resource->ShouldShowPlaceholder());
EXPECT_EQ(g_null_atom,
image_resource->GetResourceRequest().HttpHeaderField("range"));
- EXPECT_EQ(cache_mode_for_reload,
- image_resource->GetResourceRequest().GetCacheMode());
EXPECT_EQ(content, image_resource->GetContent());
EXPECT_FALSE(content->HasImage());
@@ -672,9 +669,9 @@ TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderAfterFinished) {
Resource::kReloadAlways);
EXPECT_EQ(3, observer->ImageChangedCount());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
TEST_P(ImageResourceReloadTest,
@@ -718,9 +715,9 @@ TEST_P(ImageResourceReloadTest,
Resource::kReloadAlways);
EXPECT_EQ(3, observer->ImageChangedCount());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
TEST_P(ImageResourceReloadTest,
@@ -802,9 +799,8 @@ TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderViaResourceFetcher) {
EXPECT_EQ(3, observer->ImageChangedCount());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, content, observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource, content,
+ observer.get(), false);
GetMemoryCache()->Remove(image_resource);
}
@@ -836,9 +832,9 @@ TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderBeforeResponse) {
// image is still loading.
EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderDuringResponse) {
@@ -887,9 +883,9 @@ TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderDuringResponse) {
// image is still loading.
EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderForPlaceholder) {
@@ -901,7 +897,7 @@ TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderForPlaceholder) {
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, fetcher);
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
std::unique_ptr<MockImageResourceObserver> observer =
MockImageResourceObserver::Create(image_resource->GetContent());
@@ -911,9 +907,9 @@ TEST_P(ImageResourceReloadTest, ReloadIfLoFiOrPlaceholderForPlaceholder) {
image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
Resource::kReloadAlways);
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
TEST_P(ImageResourceReloadTest, ReloadLoFiImagesWithDuplicateURLs) {
@@ -926,14 +922,14 @@ TEST_P(ImageResourceReloadTest, ReloadLoFiImagesWithDuplicateURLs) {
ImageResource* placeholder_resource =
ImageResource::Fetch(placeholder_params, fetcher);
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- placeholder_params.GetPlaceholderImageRequestType());
+ placeholder_params.GetImageRequestOptimization());
EXPECT_TRUE(placeholder_resource->ShouldShowPlaceholder());
FetchParameters full_image_params{ResourceRequest(test_url)};
ImageResource* full_image_resource =
ImageResource::Fetch(full_image_params, fetcher);
- EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
- full_image_params.GetPlaceholderImageRequestType());
+ EXPECT_EQ(FetchParameters::kNone,
+ full_image_params.GetImageRequestOptimization());
EXPECT_FALSE(full_image_resource->ShouldShowPlaceholder());
// The |placeholder_resource| should not be reused for the
@@ -1353,8 +1349,7 @@ TEST(ImageResourceTest, FetchDisallowPlaceholder) {
FetchParameters params{ResourceRequest(test_url)};
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
- EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ EXPECT_EQ(FetchParameters::kNone, params.GetImageRequestOptimization());
std::unique_ptr<MockImageResourceObserver> observer =
MockImageResourceObserver::Create(image_resource->GetContent());
@@ -1369,8 +1364,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderDataURL) {
FetchParameters params{ResourceRequest(test_url)};
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
- EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ EXPECT_EQ(FetchParameters::kNone, params.GetImageRequestOptimization());
EXPECT_EQ(g_null_atom,
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
@@ -1384,8 +1378,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderPostRequest) {
FetchParameters params(resource_request);
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
- EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ EXPECT_EQ(FetchParameters::kNone, params.GetImageRequestOptimization());
EXPECT_EQ(g_null_atom,
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
@@ -1401,8 +1394,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderExistingRangeHeader) {
FetchParameters params(resource_request);
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
- EXPECT_EQ(FetchParameters::kDisallowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ EXPECT_EQ(FetchParameters::kNone, params.GetImageRequestOptimization());
EXPECT_EQ("bytes=128-255",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
@@ -1418,7 +1410,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderSuccessful) {
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
std::unique_ptr<MockImageResourceObserver> observer =
MockImageResourceObserver::Create(image_resource->GetContent());
@@ -1434,7 +1426,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessful) {
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
EXPECT_EQ("bytes=0-2047",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1461,9 +1453,9 @@ TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessful) {
EXPECT_EQ(2, observer->ImageChangedCount());
EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessfulClientLoFi) {
@@ -1476,7 +1468,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessfulClientLoFi) {
params.SetAllowImagePlaceholder();
ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
EXPECT_EQ("bytes=0-2047",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1502,9 +1494,9 @@ TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessfulClientLoFi) {
EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
EXPECT_EQ(2, observer->ImageChangedCount());
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, true);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), true);
EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage());
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1537,7 +1529,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) {
ImageResource* image_resource =
ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
EXPECT_EQ("bytes=0-2047",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1572,7 +1564,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) {
TestThatReloadIsStartedThenServeReload(
test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, test.placeholder_before_reload);
+ test.placeholder_before_reload);
EXPECT_EQ(test.expected_reload_previews_state,
image_resource->GetResourceRequest().GetPreviewsState());
@@ -1687,7 +1679,7 @@ TEST(ImageResourceTest, FetchAllowPlaceholderFullResponseDecodeSuccess) {
ImageResource* image_resource =
ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
EXPECT_EQ("bytes=0-2047",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1746,7 +1738,7 @@ TEST(ImageResourceTest,
ImageResource* image_resource =
ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
EXPECT_EQ("bytes=0-2047",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1778,7 +1770,7 @@ TEST(ImageResourceTest,
ImageResource* image_resource =
ImageResource::Fetch(params, CreateFetcher());
EXPECT_EQ(FetchParameters::kAllowPlaceholder,
- params.GetPlaceholderImageRequestType());
+ params.GetImageRequestOptimization());
EXPECT_EQ("bytes=0-2047",
image_resource->GetResourceRequest().HttpHeaderField("range"));
EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
@@ -1798,13 +1790,16 @@ TEST(ImageResourceTest,
// The dimensions could not be extracted, and the response code was a 4xx
// error, so the full original image should be loading.
- TestThatReloadIsStartedThenServeReload(
- test_url, image_resource, image_resource->GetContent(), observer.get(),
- mojom::FetchCacheMode::kBypassCache, false);
+ TestThatReloadIsStartedThenServeReload(test_url, image_resource,
+ image_resource->GetContent(),
+ observer.get(), false);
}
}
TEST(ImageResourceTest, PeriodicFlushTest) {
+ ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
+ platform;
+
EmptyChromeClient* chrome_client = new EmptyChromeClient();
Page::PageClients clients;
FillWithEmptyClients(clients);
@@ -1812,8 +1807,6 @@ TEST(ImageResourceTest, PeriodicFlushTest) {
std::unique_ptr<DummyPageHolder> page_holder = DummyPageHolder::Create(
IntSize(800, 600), &clients, EmptyLocalFrameClient::Create(), nullptr);
- ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
- platform;
KURL test_url(kTestURL);
ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/multipart_image_resource_parser.cc b/chromium/third_party/blink/renderer/core/loader/resource/multipart_image_resource_parser.cc
index d499c831999..986a3aff30e 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/multipart_image_resource_parser.cc
+++ b/chromium/third_party/blink/renderer/core/loader/resource/multipart_image_resource_parser.cc
@@ -143,8 +143,7 @@ bool MultipartImageResourceParser::ParseHeaders() {
ResourceResponse response(original_response_.Url());
response.SetWasFetchedViaServiceWorker(
original_response_.WasFetchedViaServiceWorker());
- response.SetResponseTypeViaServiceWorker(
- original_response_.ResponseTypeViaServiceWorker());
+ response.SetType(original_response_.GetType());
for (const auto& header : original_response_.HttpHeaderFields())
response.AddHTTPHeaderField(header.key, header.value);
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/script_resource.cc b/chromium/third_party/blink/renderer/core/loader/resource/script_resource.cc
index 21f66864055..c68af5bc75e 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/script_resource.cc
+++ b/chromium/third_party/blink/renderer/core/loader/resource/script_resource.cc
@@ -26,6 +26,8 @@
#include "third_party/blink/renderer/core/loader/resource/script_resource.h"
+#include <utility>
+
#include "services/network/public/mojom/request_context_frame_type.mojom-blink.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/loader/subresource_integrity_helper.h"
@@ -36,6 +38,7 @@
#include "third_party/blink/renderer/platform/loader/fetch/integrity_metadata.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_client_walker.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h"
+#include "third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h"
#include "third_party/blink/renderer/platform/loader/fetch/text_resource_decoder_options.h"
#include "third_party/blink/renderer/platform/loader/subresource_integrity.h"
#include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h"
@@ -67,109 +70,6 @@ bool IsRequestContextSupported(WebURLRequest::RequestContext request_context) {
} // namespace
-// SingleCachedMetadataHandlerImpl should be created when a response is
-// received, and can be used independently from Resource. - It doesn't have any
-// references to Resource. Necessary data are captured
-// from Resource when the handler is created.
-// - It is not affected by Resource's revalidation on MemoryCache.
-// The validity of the handler is solely checked by |response_url_| and
-// |response_time_| (not by Resource) by the browser process, and the cached
-// metadata written to the handler is rejected if e.g. the disk cache entry
-// has been updated and the handler refers to an older response.
-class ScriptResource::SingleCachedMetadataHandlerImpl final
- : public SingleCachedMetadataHandler {
- public:
- SingleCachedMetadataHandlerImpl(const WTF::TextEncoding&,
- std::unique_ptr<CachedMetadataSender>);
- ~SingleCachedMetadataHandlerImpl() override = default;
- void Trace(blink::Visitor*) override;
- void SetCachedMetadata(uint32_t, const char*, size_t, CacheType) override;
- void ClearCachedMetadata(CacheType) override;
- scoped_refptr<CachedMetadata> GetCachedMetadata(uint32_t) const override;
-
- // This returns the encoding at the time of ResponseReceived().
- // Therefore this does NOT reflect encoding detection from body contents,
- // but the final encoding after the encoding detection can be determined
- // uniquely from Encoding(), provided the body content is the same,
- // as we can assume the encoding detection will results in the same final
- // encoding.
- // TODO(hiroshige): Make this semantics cleaner.
- String Encoding() const override { return String(encoding_.GetName()); }
-
- bool IsServedFromCacheStorage() const override {
- return sender_->IsServedFromCacheStorage();
- }
-
- // Sets the serialized metadata retrieved from the platform's cache.
- void SetSerializedCachedMetadata(const char*, size_t);
-
- private:
- void SendToPlatform();
-
- scoped_refptr<CachedMetadata> cached_metadata_;
- std::unique_ptr<CachedMetadataSender> sender_;
-
- const WTF::TextEncoding encoding_;
-};
-
-ScriptResource::SingleCachedMetadataHandlerImpl::
- SingleCachedMetadataHandlerImpl(
- const WTF::TextEncoding& encoding,
- std::unique_ptr<CachedMetadataSender> sender)
- : sender_(std::move(sender)), encoding_(encoding) {}
-
-void ScriptResource::SingleCachedMetadataHandlerImpl::Trace(
- blink::Visitor* visitor) {
- CachedMetadataHandler::Trace(visitor);
-}
-
-void ScriptResource::SingleCachedMetadataHandlerImpl::SetCachedMetadata(
- uint32_t data_type_id,
- const char* data,
- size_t size,
- CachedMetadataHandler::CacheType cache_type) {
- // Currently, only one type of cached metadata per resource is supported. If
- // the need arises for multiple types of metadata per resource this could be
- // enhanced to store types of metadata in a map.
- DCHECK(!cached_metadata_);
- cached_metadata_ = CachedMetadata::Create(data_type_id, data, size);
- if (cache_type == CachedMetadataHandler::kSendToPlatform)
- SendToPlatform();
-}
-
-void ScriptResource::SingleCachedMetadataHandlerImpl::ClearCachedMetadata(
- CachedMetadataHandler::CacheType cache_type) {
- cached_metadata_ = nullptr;
- if (cache_type == CachedMetadataHandler::kSendToPlatform)
- SendToPlatform();
-}
-
-scoped_refptr<CachedMetadata>
-ScriptResource::SingleCachedMetadataHandlerImpl::GetCachedMetadata(
- uint32_t data_type_id) const {
- if (!cached_metadata_ || cached_metadata_->DataTypeID() != data_type_id)
- return nullptr;
- return cached_metadata_;
-}
-
-void ScriptResource::SingleCachedMetadataHandlerImpl::
- SetSerializedCachedMetadata(const char* data, size_t size) {
- // We only expect to receive cached metadata from the platform once. If this
- // triggers, it indicates an efficiency problem which is most likely
- // unexpected in code designed to improve performance.
- DCHECK(!cached_metadata_);
- cached_metadata_ = CachedMetadata::CreateFromSerializedData(data, size);
-}
-
-void ScriptResource::SingleCachedMetadataHandlerImpl::SendToPlatform() {
- if (cached_metadata_) {
- const Vector<char>& serialized_data = cached_metadata_->SerializedData();
- sender_->Send(serialized_data.data(), serialized_data.size());
- } else {
- sender_->Send(nullptr, 0);
- }
-}
-
ScriptResource* ScriptResource::Fetch(FetchParameters& params,
ResourceFetcher* fetcher,
ResourceClient* client) {
@@ -199,14 +99,14 @@ void ScriptResource::OnMemoryDump(WebMemoryDumpLevelOfDetail level_of_detail,
dump->Guid(), String(WTF::Partitions::kAllocatedObjectPoolName));
}
-const MovableString& ScriptResource::SourceText() {
+const ParkableString& ScriptResource::SourceText() {
DCHECK(IsLoaded());
if (source_text_.IsNull() && Data()) {
String source_text = DecodedText();
ClearData();
SetDecodedSize(source_text.CharactersSizeInBytes());
- source_text_ = MovableString(source_text.ReleaseImpl());
+ source_text_ = ParkableString(source_text.ReleaseImpl());
}
return source_text_;
@@ -218,36 +118,30 @@ SingleCachedMetadataHandler* ScriptResource::CacheHandler() {
CachedMetadataHandler* ScriptResource::CreateCachedMetadataHandler(
std::unique_ptr<CachedMetadataSender> send_callback) {
- return new SingleCachedMetadataHandlerImpl(Encoding(),
- std::move(send_callback));
+ return new ScriptCachedMetadataHandler(Encoding(), std::move(send_callback));
}
void ScriptResource::SetSerializedCachedMetadata(const char* data,
size_t size) {
Resource::SetSerializedCachedMetadata(data, size);
- SingleCachedMetadataHandlerImpl* cache_handler =
- static_cast<SingleCachedMetadataHandlerImpl*>(Resource::CacheHandler());
+ ScriptCachedMetadataHandler* cache_handler =
+ static_cast<ScriptCachedMetadataHandler*>(Resource::CacheHandler());
if (cache_handler) {
cache_handler->SetSerializedCachedMetadata(data, size);
}
}
void ScriptResource::DestroyDecodedDataForFailedRevalidation() {
- source_text_ = MovableString();
+ source_text_ = ParkableString();
SetDecodedSize(0);
}
-AccessControlStatus ScriptResource::CalculateAccessControlStatus(
- const SecurityOrigin* security_origin) const {
- if (GetResponse().WasFetchedViaServiceWorker()) {
- if (GetCORSStatus() == CORSStatus::kServiceWorkerOpaque)
- return kOpaqueResource;
- return kSharableCrossOrigin;
- }
+AccessControlStatus ScriptResource::CalculateAccessControlStatus() const {
+ if (GetCORSStatus() == CORSStatus::kServiceWorkerOpaque)
+ return kOpaqueResource;
- if (security_origin && PassesAccessControlCheck(*security_origin))
+ if (IsSameOriginOrCORSSuccessful())
return kSharableCrossOrigin;
-
return kNotSharableCrossOrigin;
}
diff --git a/chromium/third_party/blink/renderer/core/loader/resource/script_resource.h b/chromium/third_party/blink/renderer/core/loader/resource/script_resource.h
index 97dee5e861d..f274de7d55c 100644
--- a/chromium/third_party/blink/renderer/core/loader/resource/script_resource.h
+++ b/chromium/third_party/blink/renderer/core/loader/resource/script_resource.h
@@ -26,21 +26,22 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_RESOURCE_SCRIPT_RESOURCE_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_RESOURCE_SCRIPT_RESOURCE_H_
+#include <memory>
+
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/loader/resource/text_resource.h"
+#include "third_party/blink/renderer/platform/bindings/parkable_string.h"
#include "third_party/blink/renderer/platform/loader/fetch/access_control_status.h"
#include "third_party/blink/renderer/platform/loader/fetch/integrity_metadata.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_client.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_loader_options.h"
#include "third_party/blink/renderer/platform/loader/fetch/text_resource_decoder_options.h"
-#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
namespace blink {
class FetchParameters;
class KURL;
class ResourceFetcher;
-class ScriptResource;
class CORE_EXPORT ScriptResource final : public TextResource {
public:
@@ -69,9 +70,9 @@ class CORE_EXPORT ScriptResource final : public TextResource {
void SetSerializedCachedMetadata(const char*, size_t) override;
- const MovableString& SourceText();
+ const ParkableString& SourceText();
- AccessControlStatus CalculateAccessControlStatus(const SecurityOrigin*) const;
+ AccessControlStatus CalculateAccessControlStatus() const;
SingleCachedMetadataHandler* CacheHandler();
@@ -80,8 +81,6 @@ class CORE_EXPORT ScriptResource final : public TextResource {
std::unique_ptr<CachedMetadataSender> send_callback) override;
private:
- class SingleCachedMetadataHandlerImpl;
-
class ScriptResourceFactory : public ResourceFactory {
public:
ScriptResourceFactory()
@@ -102,11 +101,11 @@ class CORE_EXPORT ScriptResource final : public TextResource {
bool CanUseCacheValidator() const override;
- MovableString source_text_;
+ ParkableString source_text_;
};
DEFINE_RESOURCE_TYPE_CASTS(Script);
} // namespace blink
-#endif
+#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_RESOURCE_SCRIPT_RESOURCE_H_