Commit 12b5f0c5 authored by Dmitry Gozman's avatar Dmitry Gozman Committed by Commit Bot

Remove FetchMainResource and SubstituteData

We are not using loader for main resources anymore.

Bug: 855189
Change-Id: I56c5d04e0088f1ae2c1ce6fe2cee9cbfe3ac90d2
Reviewed-on: https://chromium-review.googlesource.com/c/1424166
Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#626439}
parent e9b6af0d
......@@ -91,7 +91,6 @@ blink_platform_sources("loader") {
"fetch/source_keyed_cached_metadata_handler.h",
"fetch/stale_revalidation_resource_client.cc",
"fetch/stale_revalidation_resource_client.h",
"fetch/substitute_data.h",
"fetch/text_resource_decoder_options.cc",
"fetch/text_resource_decoder_options.h",
"fetch/unique_identifier.cc",
......
......@@ -71,32 +71,6 @@ RawResource* RawResource::Fetch(FetchParameters& params,
params, RawResourceFactory(ResourceType::kRaw), client));
}
RawResource* RawResource::FetchMainResource(
FetchParameters& params,
ResourceFetcher* fetcher,
RawResourceClient* client,
const SubstituteData& substitute_data,
unsigned long identifier) {
DCHECK_NE(params.GetResourceRequest().GetFrameType(),
network::mojom::RequestContextFrameType::kNone);
DCHECK(params.GetResourceRequest().GetRequestContext() ==
mojom::RequestContextType::FORM ||
params.GetResourceRequest().GetRequestContext() ==
mojom::RequestContextType::FRAME ||
params.GetResourceRequest().GetRequestContext() ==
mojom::RequestContextType::HYPERLINK ||
params.GetResourceRequest().GetRequestContext() ==
mojom::RequestContextType::IFRAME ||
params.GetResourceRequest().GetRequestContext() ==
mojom::RequestContextType::INTERNAL ||
params.GetResourceRequest().GetRequestContext() ==
mojom::RequestContextType::LOCATION);
return ToRawResource(fetcher->RequestResource(
params, RawResourceFactory(ResourceType::kMainResource), client,
substitute_data, identifier));
}
RawResource* RawResource::FetchMedia(FetchParameters& params,
ResourceFetcher* fetcher,
RawResourceClient* client) {
......
......@@ -38,7 +38,6 @@ class WebDataConsumerHandle;
class FetchParameters;
class RawResourceClient;
class ResourceFetcher;
class SubstituteData;
class SourceKeyedCachedMetadataHandler;
class PLATFORM_EXPORT RawResource final : public Resource {
......@@ -49,11 +48,6 @@ class PLATFORM_EXPORT RawResource final : public Resource {
static RawResource* Fetch(FetchParameters&,
ResourceFetcher*,
RawResourceClient*);
static RawResource* FetchMainResource(FetchParameters&,
ResourceFetcher*,
RawResourceClient*,
const SubstituteData&,
unsigned long identifier);
static RawResource* FetchImport(FetchParameters&,
ResourceFetcher*,
RawResourceClient*);
......
......@@ -596,15 +596,12 @@ static std::unique_ptr<TracedValue> UrlForTraceEvent(const KURL& url) {
Resource* ResourceFetcher::ResourceForStaticData(
const FetchParameters& params,
const ResourceFactory& factory,
const SubstituteData& substitute_data) {
const ResourceFactory& factory) {
const KURL& url = params.GetResourceRequest().Url();
DCHECK(url.ProtocolIsData() || substitute_data.IsValid() || archive_);
DCHECK(url.ProtocolIsData() || archive_);
if (!archive_ && !substitute_data.IsValid() &&
factory.GetType() == ResourceType::kRaw) {
if (!archive_ && factory.GetType() == ResourceType::kRaw)
return nullptr;
}
const String cache_identifier = GetCacheIdentifier();
// Most off-main-thread resource fetches use Resource::kRaw and don't reach
......@@ -622,13 +619,7 @@ Resource* ResourceFetcher::ResourceForStaticData(
ResourceResponse response;
scoped_refptr<SharedBuffer> data;
if (substitute_data.IsValid()) {
data = substitute_data.Content();
response.SetCurrentRequestUrl(url);
response.SetMimeType(substitute_data.MimeType());
response.SetExpectedContentLength(data->size());
response.SetTextEncodingName(substitute_data.TextEncoding());
} else if (url.ProtocolIsData()) {
if (url.ProtocolIsData()) {
data = network_utils::ParseDataURLAndPopulateResponse(url, response);
if (!data)
return nullptr;
......@@ -659,9 +650,7 @@ Resource* ResourceFetcher::ResourceForStaticData(
resource->SetCacheIdentifier(cache_identifier);
resource->Finish(TimeTicks(), task_runner_.get());
if (!substitute_data.IsValid())
AddToMemoryCacheIfNeeded(params, resource);
AddToMemoryCacheIfNeeded(params, resource);
return resource;
}
......@@ -738,7 +727,6 @@ void ResourceFetcher::RemovePreload(Resource* resource) {
base::Optional<ResourceRequestBlockedReason> ResourceFetcher::PrepareRequest(
FetchParameters& params,
const ResourceFactory& factory,
const SubstituteData& substitute_data,
unsigned long identifier,
WebScopedVirtualTimePauser& virtual_time_pauser) {
ResourceRequest& resource_request = params.MutableResourceRequest();
......@@ -882,14 +870,10 @@ base::Optional<ResourceRequestBlockedReason> ResourceFetcher::PrepareRequest(
return base::nullopt;
}
Resource* ResourceFetcher::RequestResource(
FetchParameters& params,
const ResourceFactory& factory,
ResourceClient* client,
const SubstituteData& substitute_data,
unsigned long identifier) {
if (!identifier)
identifier = CreateUniqueIdentifier();
Resource* ResourceFetcher::RequestResource(FetchParameters& params,
const ResourceFactory& factory,
ResourceClient* client) {
unsigned long identifier = CreateUniqueIdentifier();
ResourceRequest& resource_request = params.MutableResourceRequest();
network_instrumentation::ScopedResourceLoadTracker
scoped_resource_load_tracker(identifier, resource_request);
......@@ -919,7 +903,7 @@ Resource* ResourceFetcher::RequestResource(
WebScopedVirtualTimePauser pauser;
base::Optional<ResourceRequestBlockedReason> blocked_reason =
PrepareRequest(params, factory, substitute_data, identifier, pauser);
PrepareRequest(params, factory, identifier, pauser);
if (blocked_reason) {
return ResourceForBlockedRequest(params, factory, blocked_reason.value(),
client);
......@@ -937,10 +921,10 @@ Resource* ResourceFetcher::RequestResource(
RevalidationPolicy policy = kLoad;
bool is_data_url = resource_request.Url().ProtocolIsData();
bool is_static_data = is_data_url || substitute_data.IsValid() || archive_;
bool is_static_data = is_data_url || archive_;
bool is_stale_revalidation = params.IsStaleRevalidation();
if (!is_stale_revalidation && is_static_data) {
resource = ResourceForStaticData(params, factory, substitute_data);
resource = ResourceForStaticData(params, factory);
if (resource) {
policy =
DetermineRevalidationPolicy(resource_type, params, *resource, true);
......@@ -1391,7 +1375,7 @@ ResourceFetcher::DetermineRevalidationPolicyInternal(
return kReload;
}
// If resource was populated from a SubstituteData load or data: url, use it.
// If resource was populated from archive or data: url, use it.
// This doesn't necessarily mean that |resource| was just created by using
// ResourceForStaticData().
if (is_static_data)
......
......@@ -40,7 +40,6 @@
#include "third_party/blink/renderer/platform/loader/fetch/resource_error.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_load_priority.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_loader_options.h"
#include "third_party/blink/renderer/platform/loader/fetch/substitute_data.h"
#include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/timer.h"
#include "third_party/blink/renderer/platform/wtf/hash_map.h"
......@@ -132,9 +131,7 @@ class PLATFORM_EXPORT ResourceFetcher
// specified by ResourceFactory::GetType().
Resource* RequestResource(FetchParameters&,
const ResourceFactory&,
ResourceClient*,
const SubstituteData& = SubstituteData(),
unsigned long identifier = 0);
ResourceClient*);
// Returns the task runner used by this fetcher, and loading operations
// this fetcher initiates. The returned task runner will keep working even
......@@ -278,13 +275,11 @@ class PLATFORM_EXPORT ResourceFetcher
base::Optional<ResourceRequestBlockedReason> PrepareRequest(
FetchParameters&,
const ResourceFactory&,
const SubstituteData&,
unsigned long identifier,
WebScopedVirtualTimePauser& virtual_time_pauser);
Resource* ResourceForStaticData(const FetchParameters&,
const ResourceFactory&,
const SubstituteData&);
const ResourceFactory&);
Resource* ResourceForBlockedRequest(const FetchParameters&,
const ResourceFactory&,
ResourceRequestBlockedReason,
......
......@@ -896,20 +896,6 @@ TEST_F(ResourceFetcherTest, ContentIdURL) {
auto* fetcher = MakeGarbageCollected<ResourceFetcher>(ResourceFetcherInit(
*properties, CreateFetchContext(), CreateTaskRunner()));
// Main resource case.
{
ResourceRequest resource_request(url);
resource_request.SetRequestContext(mojom::RequestContextType::IFRAME);
resource_request.SetFrameType(
network::mojom::RequestContextFrameType::kNested);
FetchParameters fetch_params(resource_request);
RawResource* resource = RawResource::FetchMainResource(
fetch_params, fetcher, nullptr, SubstituteData(),
CreateUniqueIdentifier());
ASSERT_NE(nullptr, resource);
EXPECT_FALSE(resource->ErrorOccurred());
}
// Subresource case.
{
ResourceRequest resource_request(url);
......
......@@ -172,13 +172,11 @@ TEST_F(ResourceLoaderDefersLoadingTest, CodeCacheFetchCheckDefers) {
ResourceRequest request;
request.SetURL(test_url_);
request.SetRequestContext(mojom::RequestContextType::FRAME);
request.SetFrameType(network::mojom::RequestContextFrameType::kTopLevel);
request.SetRequestContext(mojom::RequestContextType::FETCH);
request.SetFrameType(network::mojom::RequestContextFrameType::kNone);
FetchParameters fetch_parameters(request);
Resource* resource = RawResource::FetchMainResource(fetch_parameters, fetcher,
nullptr, SubstituteData(),
CreateUniqueIdentifier());
Resource* resource = RawResource::Fetch(fetch_parameters, fetcher, nullptr);
// After code cache fetch it should have deferred WebURLLoader.
DCHECK(web_url_loader_defers_);
......@@ -201,13 +199,11 @@ TEST_F(ResourceLoaderDefersLoadingTest, CodeCacheFetchSyncReturn) {
ResourceRequest request;
request.SetURL(test_url_);
request.SetRequestContext(mojom::RequestContextType::FRAME);
request.SetFrameType(network::mojom::RequestContextFrameType::kTopLevel);
request.SetRequestContext(mojom::RequestContextType::FETCH);
request.SetFrameType(network::mojom::RequestContextFrameType::kNone);
FetchParameters fetch_parameters(request);
Resource* resource = RawResource::FetchMainResource(fetch_parameters, fetcher,
nullptr, SubstituteData(),
CreateUniqueIdentifier());
Resource* resource = RawResource::Fetch(fetch_parameters, fetcher, nullptr);
DCHECK(resource);
// The callback would be called so it should not be deferred.
DCHECK(!web_url_loader_defers_);
......@@ -220,13 +216,11 @@ TEST_F(ResourceLoaderDefersLoadingTest, ChangeDefersToFalse) {
ResourceRequest request;
request.SetURL(test_url_);
request.SetRequestContext(mojom::RequestContextType::FRAME);
request.SetFrameType(network::mojom::RequestContextFrameType::kTopLevel);
request.SetRequestContext(mojom::RequestContextType::FETCH);
request.SetFrameType(network::mojom::RequestContextFrameType::kNone);
FetchParameters fetch_parameters(request);
Resource* resource = RawResource::FetchMainResource(fetch_parameters, fetcher,
nullptr, SubstituteData(),
CreateUniqueIdentifier());
Resource* resource = RawResource::Fetch(fetch_parameters, fetcher, nullptr);
DCHECK(web_url_loader_defers_);
// Change Defers loading to false. This should not be sent to
......@@ -243,13 +237,11 @@ TEST_F(ResourceLoaderDefersLoadingTest, ChangeDefersToTrue) {
ResourceRequest request;
request.SetURL(test_url_);
request.SetRequestContext(mojom::RequestContextType::FRAME);
request.SetFrameType(network::mojom::RequestContextFrameType::kTopLevel);
request.SetRequestContext(mojom::RequestContextType::FETCH);
request.SetFrameType(network::mojom::RequestContextFrameType::kNone);
FetchParameters fetch_parameters(request);
Resource* resource = RawResource::FetchMainResource(fetch_parameters, fetcher,
nullptr, SubstituteData(),
CreateUniqueIdentifier());
Resource* resource = RawResource::Fetch(fetch_parameters, fetcher, nullptr);
DCHECK(web_url_loader_defers_);
ResourceLoader* loader = resource->Loader();
......@@ -270,13 +262,11 @@ TEST_F(ResourceLoaderDefersLoadingTest, ChangeDefersMultipleTimes) {
ResourceRequest request;
request.SetURL(test_url_);
request.SetRequestContext(mojom::RequestContextType::FRAME);
request.SetFrameType(network::mojom::RequestContextFrameType::kTopLevel);
request.SetRequestContext(mojom::RequestContextType::FETCH);
request.SetFrameType(network::mojom::RequestContextFrameType::kNone);
FetchParameters fetch_parameters(request);
Resource* resource = RawResource::FetchMainResource(fetch_parameters, fetcher,
nullptr, SubstituteData(),
CreateUniqueIdentifier());
Resource* resource = RawResource::Fetch(fetch_parameters, fetcher, nullptr);
DCHECK(web_url_loader_defers_);
ResourceLoader* loader = resource->Loader();
......
/*
* Copyright (C) 2007 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_SUBSTITUTE_DATA_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_SUBSTITUTE_DATA_H_
#include "base/memory/scoped_refptr.h"
#include "third_party/blink/renderer/platform/shared_buffer.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"
#include "third_party/blink/renderer/platform/wtf/allocator.h"
namespace blink {
class SubstituteData {
DISALLOW_NEW();
public:
SubstituteData() = default;
SubstituteData(scoped_refptr<SharedBuffer> content)
: SubstituteData(content, "text/html", "UTF-8", KURL()) {}
SubstituteData(scoped_refptr<SharedBuffer> content,
const AtomicString& mime_type,
const AtomicString& text_encoding,
const KURL& failing_url)
: content_(std::move(content)),
mime_type_(mime_type),
text_encoding_(text_encoding),
failing_url_(failing_url) {}
bool IsValid() const { return content_.get(); }
SharedBuffer* Content() const { return content_.get(); }
const AtomicString& MimeType() const { return mime_type_; }
const AtomicString& TextEncoding() const { return text_encoding_; }
const KURL& FailingURL() const { return failing_url_; }
private:
scoped_refptr<SharedBuffer> content_;
AtomicString mime_type_;
AtomicString text_encoding_;
KURL failing_url_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_SUBSTITUTE_DATA_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment