WebKit Bugzilla
Attachment 373194 Details for
Bug 187460
: ResourceResponseBase wastes a lot of space because of std::optional<>
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-187460-20190630205153.patch (text/plain), 72.23 KB, created by
Rob Buis
on 2019-06-30 11:51:54 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Rob Buis
Created:
2019-06-30 11:51:54 PDT
Size:
72.23 KB
patch
obsolete
>Subversion Revision: 246949 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index b0385785e2b310c614fe54ebde39f75caf5dd478..2602bdc67f70bd2b994c87b76c7a4ba78fe81342 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,105 @@ >+2019-06-30 Rob Buis <rbuis@igalia.com> >+ >+ ResourceResponseBase wastes a lot of space because of std::optional<> >+ https://bugs.webkit.org/show_bug.cgi?id=187460 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Waste less space in ResourceResponseBase by shrinking >+ ParsedContentRange. >+ >+ No new tests because there is no behavior change. >+ >+ * Modules/cache/CacheStorageConnection.cpp: >+ (WebCore::CacheStorageConnection::computeRecordBodySize): >+ * Modules/fetch/FetchResponse.cpp: >+ (WebCore::FetchResponse::create): >+ (WebCore::FetchResponse::clone): >+ (WebCore::FetchResponse::BodyLoader::didReceiveResponse): >+ * bindings/js/JSDOMWindowBase.cpp: >+ (WebCore::isResponseCorrect): >+ * dom/Document.cpp: >+ (WebCore::Document::initSecurityContext): >+ * inspector/NetworkResourcesData.cpp: >+ (WebCore::NetworkResourcesData::responseReceived): >+ * inspector/agents/InspectorNetworkAgent.cpp: >+ (WebCore::responseSource): >+ (WebCore::InspectorNetworkAgent::buildObjectForResourceResponse): >+ * loader/DocumentLoader.cpp: >+ (WebCore::DocumentLoader::redirectReceived): >+ * loader/DocumentThreadableLoader.cpp: >+ (WebCore::DocumentThreadableLoader::redirectReceived): >+ (WebCore::DocumentThreadableLoader::didReceiveResponse): >+ (WebCore::DocumentThreadableLoader::didFinishLoading): >+ (WebCore::DocumentThreadableLoader::loadRequest): >+ * loader/FrameLoader.cpp: >+ (WebCore::FrameLoader::loadedResourceFromMemoryCache): >+ * loader/ResourceLoader.cpp: >+ (WebCore::ResourceLoader::loadDataURL): >+ (WebCore::logResourceResponseSource): >+ * loader/SubresourceLoader.cpp: >+ (WebCore::SubresourceLoader::willSendRequestInternal): >+ (WebCore::SubresourceLoader::didReceiveResponse): >+ (WebCore::SubresourceLoader::checkResponseCrossOriginAccessControl): >+ * loader/appcache/ApplicationCacheResource.cpp: >+ (WebCore::ApplicationCacheResource::create): >+ * loader/cache/CachedRawResource.cpp: >+ (WebCore::CachedRawResource::didAddClient): >+ * loader/cache/CachedResource.cpp: >+ (WebCore::CachedResource::setCrossOrigin): >+ (WebCore::CachedResource::isCrossOrigin const): >+ (WebCore::CachedResource::isCORSSameOrigin const): >+ (WebCore::CachedResource::setResponse): >+ * loader/cache/CachedResource.h: >+ * loader/cache/CachedResourceLoader.cpp: >+ (WebCore::isResourceSuitableForDirectReuse): >+ * loader/cache/MemoryCache.cpp: >+ (WebCore::MemoryCache::revalidationSucceeded): >+ * loader/soup/ResourceLoaderSoup.cpp: >+ (WebCore::ResourceLoader::loadGResource): >+ * platform/network/NetworkLoadMetrics.h: >+ * platform/network/ParsedContentRange.cpp: >+ (WebCore::areContentRangeValuesValid): >+ (WebCore::parseContentRange): >+ (WebCore::ParsedContentRange::ParsedContentRange): >+ (WebCore::ParsedContentRange::headerValue const): >+ * platform/network/ParsedContentRange.h: >+ (WebCore::ParsedContentRange::isValid const): >+ (WebCore::ParsedContentRange::lastBytePosition const): >+ * platform/network/ResourceResponseBase.cpp: >+ (WebCore::ResourceResponseBase::ResourceResponseBase): >+ (WebCore::ResourceResponseBase::crossThreadData const): >+ (WebCore::ResourceResponseBase::filter): >+ (WebCore::ResourceResponseBase::includeCertificateInfo const): >+ (WebCore::ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting): >+ (WebCore::ResourceResponseBase::source const): >+ * platform/network/ResourceResponseBase.h: >+ (WebCore::ResourceResponseBase::certificateInfo const): >+ (WebCore::ResourceResponseBase::type const): >+ (WebCore::ResourceResponseBase::setTainting): >+ (WebCore::ResourceResponseBase::tainting const): >+ (WebCore::ResourceResponseBase::encode const): >+ (WebCore::ResourceResponseBase::decode): >+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp: >+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse): >+ * platform/network/cocoa/WebCoreNSURLSession.mm: >+ (-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]): >+ * platform/network/curl/CurlCacheEntry.cpp: >+ (WebCore::CurlCacheEntry::setResponseFromCachedHeaders): >+ * platform/network/curl/CurlCacheManager.cpp: >+ (WebCore::CurlCacheManager::didReceiveResponse): >+ * platform/network/curl/ResourceResponseCurl.cpp: >+ (WebCore::ResourceResponse::ResourceResponse): >+ * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: >+ (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]): >+ * testing/Internals.cpp: >+ (WebCore::responseSourceToString): >+ * testing/ServiceWorkerInternals.cpp: >+ (WebCore::ServiceWorkerInternals::createOpaqueWithBlobBodyResponse): >+ * workers/service/context/ServiceWorkerFetch.cpp: >+ (WebCore::ServiceWorkerFetch::validateResponse): >+ (WebCore::ServiceWorkerFetch::processResponse): >+ > 2019-06-28 Tim Horton <timothy_horton@apple.com> > > iOS WebKit2 find-in-page indicator doesn't move with 'overflow: scroll' >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index ee81864075c743435d659b24c61828b376400d07..47e0aee664ffb075a42dbacf2176396877281738 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,30 @@ >+2019-06-30 Rob Buis <rbuis@igalia.com> >+ >+ ResourceResponseBase wastes a lot of space because of std::optional<> >+ https://bugs.webkit.org/show_bug.cgi?id=187460 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * NetworkProcess/NetworkConnectionToWebProcess.cpp: >+ (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload): >+ * NetworkProcess/NetworkLoad.cpp: >+ (WebKit::NetworkLoad::willPerformHTTPRedirection): >+ (WebKit::NetworkLoad::notifyDidReceiveResponse): >+ * NetworkProcess/NetworkLoadChecker.cpp: >+ (WebKit::NetworkLoadChecker::validateResponse): >+ * NetworkProcess/NetworkResourceLoader.cpp: >+ (WebKit::NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidation): >+ (WebKit::NetworkResourceLoader::willSendRedirectedRequest): >+ (WebKit::NetworkResourceLoader::didFinishWithRedirectResponse): >+ * NetworkProcess/cache/NetworkCacheEntry.cpp: >+ (WebKit::NetworkCache::Entry::decodeStorageRecord): >+ (WebKit::NetworkCache::Entry::needsValidation const): >+ (WebKit::NetworkCache::Entry::setNeedsValidation): >+ * WebProcess/Network/WebLoaderStrategy.cpp: >+ (WebKit::WebLoaderStrategy::havePerformedSecurityChecks const): >+ * WebProcess/Storage/ServiceWorkerClientFetch.cpp: >+ (WebKit::ServiceWorkerClientFetch::didReceiveRedirectResponse): >+ > 2019-06-28 Brent Fulgham <bfulgham@apple.com> > > Revise WebContent sandbox based on seed feedback >diff --git a/Source/WebCore/Modules/cache/CacheStorageConnection.cpp b/Source/WebCore/Modules/cache/CacheStorageConnection.cpp >index 4acb8aabd867d8de2209379b260c61ffffeb4900..8d53c5871bfc6d416ee11ef627b5e53d6e277938 100644 >--- a/Source/WebCore/Modules/cache/CacheStorageConnection.cpp >+++ b/Source/WebCore/Modules/cache/CacheStorageConnection.cpp >@@ -48,7 +48,7 @@ static inline uint64_t computeRealBodySize(const DOMCacheEngine::ResponseBody& b > uint64_t CacheStorageConnection::computeRecordBodySize(const FetchResponse& response, const DOMCacheEngine::ResponseBody& body) > { > if (!response.opaqueLoadIdentifier()) { >- ASSERT(response.tainting() != ResourceResponse::Tainting::Opaque); >+ ASSERT(response.tainting() != ResourceResponse::TaintingOpaque); > return computeRealBodySize(body); > } > >diff --git a/Source/WebCore/Modules/fetch/FetchResponse.cpp b/Source/WebCore/Modules/fetch/FetchResponse.cpp >index 4fe7616a49b6d12f6a841a33bfa31c8d9b0bb26b..c4308185deceb3588a9998700a3e93e02a2e63af 100644 >--- a/Source/WebCore/Modules/fetch/FetchResponse.cpp >+++ b/Source/WebCore/Modules/fetch/FetchResponse.cpp >@@ -49,8 +49,8 @@ static inline bool isNullBodyStatus(int status) > > Ref<FetchResponse> FetchResponse::create(ScriptExecutionContext& context, Optional<FetchBody>&& body, FetchHeaders::Guard guard, ResourceResponse&& response) > { >- bool isSynthetic = response.type() == ResourceResponse::Type::Default || response.type() == ResourceResponse::Type::Error; >- bool isOpaque = response.tainting() == ResourceResponse::Tainting::Opaque; >+ bool isSynthetic = response.type() == ResourceResponse::Default || response.type() == ResourceResponse::Error; >+ bool isOpaque = response.tainting() == ResourceResponse::TaintingOpaque; > auto headers = isOpaque ? FetchHeaders::create(guard) : FetchHeaders::create(guard, HTTPHeaderMap { response.httpHeaderFields() }); > > auto fetchResponse = adoptRef(*new FetchResponse(context, WTFMove(body), WTFMove(headers), WTFMove(response))); >@@ -176,7 +176,7 @@ ExceptionOr<Ref<FetchResponse>> FetchResponse::clone(ScriptExecutionContext& con > createReadableStream(*context.execState()); > > // Synthetic responses do not store headers in m_internalResponse. >- if (m_internalResponse.type() == ResourceResponse::Type::Default) >+ if (m_internalResponse.type() == ResourceResponse::Default) > m_internalResponse.setHTTPHeaderFields(HTTPHeaderMap { headers().internalHeaders() }); > > auto clone = FetchResponse::create(context, WTF::nullopt, headers().guard(), ResourceResponse { m_internalResponse }); >@@ -328,7 +328,7 @@ void FetchResponse::BodyLoader::didReceiveResponse(const ResourceResponse& resou > m_response.m_filteredResponse = ResourceResponseBase::filter(resourceResponse); > m_response.m_internalResponse = resourceResponse; > m_response.m_internalResponse.setType(m_response.m_filteredResponse->type()); >- if (resourceResponse.tainting() == ResourceResponse::Tainting::Opaque) { >+ if (resourceResponse.tainting() == ResourceResponse::TaintingOpaque) { > m_response.m_opaqueLoadIdentifier = ++nextOpaqueLoadIdentifier; > m_response.setBodyAsOpaque(); > } >diff --git a/Source/WebCore/bindings/js/JSDOMWindowBase.cpp b/Source/WebCore/bindings/js/JSDOMWindowBase.cpp >index f48234a72c52ec1adb74e37364e7ec9e6042d1e4..c0d5131920f0ebc053f406872d55f71704b267fd 100644 >--- a/Source/WebCore/bindings/js/JSDOMWindowBase.cpp >+++ b/Source/WebCore/bindings/js/JSDOMWindowBase.cpp >@@ -367,7 +367,7 @@ static Optional<Vector<uint8_t>> tryAllocate(JSC::ExecState* exec, JSC::JSPromis > > static bool isResponseCorrect(JSC::ExecState* exec, FetchResponse* inputResponse, JSC::JSPromiseDeferred* promise) > { >- bool isResponseCorsSameOrigin = inputResponse->type() == ResourceResponse::Type::Basic || inputResponse->type() == ResourceResponse::Type::Cors || inputResponse->type() == ResourceResponse::Type::Default; >+ bool isResponseCorsSameOrigin = inputResponse->type() == ResourceResponse::Basic || inputResponse->type() == ResourceResponse::Cors || inputResponse->type() == ResourceResponse::Default; > > if (!isResponseCorsSameOrigin) { > promise->reject(exec, createTypeError(exec, "Response is not CORS-same-origin"_s)); >diff --git a/Source/WebCore/dom/Document.cpp b/Source/WebCore/dom/Document.cpp >index 78e59127508d98f97539858761b4dd3649e2aad2..31cac0a24f16943a3c62fdf0c9147820996b89bf 100644 >--- a/Source/WebCore/dom/Document.cpp >+++ b/Source/WebCore/dom/Document.cpp >@@ -5788,7 +5788,7 @@ void Document::initSecurityContext() > auto* documentLoader = m_frame->loader().documentLoader(); > bool isSecurityOriginUnique = isSandboxed(SandboxOrigin); > if (!isSecurityOriginUnique) >- isSecurityOriginUnique = documentLoader && documentLoader->response().tainting() == ResourceResponse::Tainting::Opaque; >+ isSecurityOriginUnique = documentLoader && documentLoader->response().tainting() == ResourceResponse::TaintingOpaque; > > setSecurityOriginPolicy(SecurityOriginPolicy::create(isSecurityOriginUnique ? SecurityOrigin::createUnique() : SecurityOrigin::create(m_url))); > setContentSecurityPolicy(std::make_unique<ContentSecurityPolicy>(URL { m_url }, *this)); >diff --git a/Source/WebCore/inspector/NetworkResourcesData.cpp b/Source/WebCore/inspector/NetworkResourcesData.cpp >index d3b759f29ccf1ae180280d5e173670d29c4f8cc1..10104006a76e7f1990e9bf6c0fe513aaaa59592e 100644 >--- a/Source/WebCore/inspector/NetworkResourcesData.cpp >+++ b/Source/WebCore/inspector/NetworkResourcesData.cpp >@@ -165,7 +165,7 @@ void NetworkResourcesData::responseReceived(const String& requestId, const Strin > if (InspectorNetworkAgent::shouldTreatAsText(response.mimeType())) > resourceData->setDecoder(InspectorNetworkAgent::createTextDecoder(response.mimeType(), response.textEncodingName())); > >- if (auto& certificateInfo = response.certificateInfo()) >+ if (auto certificateInfo = response.certificateInfo()) > resourceData->setCertificateInfo(certificateInfo); > } > >diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp >index 3e4e96eb231a054b2121247bc2cb09165f0265b3..302fc5df241edbda915c44b31c2d6836ace6ddc3 100644 >--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp >+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp >@@ -296,19 +296,19 @@ static Ref<Inspector::Protocol::Network::Request> buildObjectForResourceRequest( > static Inspector::Protocol::Network::Response::Source responseSource(ResourceResponse::Source source) > { > switch (source) { >- case ResourceResponse::Source::ApplicationCache: >+ case ResourceResponse::SourceApplicationCache: > // FIXME: Add support for ApplicationCache in inspector. >- case ResourceResponse::Source::Unknown: >+ case ResourceResponse::SourceUnknown: > return Inspector::Protocol::Network::Response::Source::Unknown; >- case ResourceResponse::Source::Network: >+ case ResourceResponse::SourceNetwork: > return Inspector::Protocol::Network::Response::Source::Network; >- case ResourceResponse::Source::MemoryCache: >- case ResourceResponse::Source::MemoryCacheAfterValidation: >+ case ResourceResponse::SourceMemoryCache: >+ case ResourceResponse::SourceMemoryCacheAfterValidation: > return Inspector::Protocol::Network::Response::Source::MemoryCache; >- case ResourceResponse::Source::DiskCache: >- case ResourceResponse::Source::DiskCacheAfterValidation: >+ case ResourceResponse::SourceDiskCache: >+ case ResourceResponse::SourceDiskCacheAfterValidation: > return Inspector::Protocol::Network::Response::Source::DiskCache; >- case ResourceResponse::Source::ServiceWorker: >+ case ResourceResponse::SourceServiceWorker: > return Inspector::Protocol::Network::Response::Source::ServiceWorker; > } > >@@ -335,7 +335,7 @@ RefPtr<Inspector::Protocol::Network::Response> InspectorNetworkAgent::buildObjec > if (resourceLoader) > responseObject->setTiming(buildObjectForTiming(response.deprecatedNetworkLoadMetrics(), *resourceLoader)); > >- if (auto& certificateInfo = response.certificateInfo()) { >+ if (auto certificateInfo = response.certificateInfo()) { > auto securityPayload = Inspector::Protocol::Security::Security::create() > .release(); > >diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp >index 719f1e8aafff909d0106b7ca9582648d89a8ab60..f3b00f760bf89902c8ac1d4845262bbf83e5f7ff 100644 >--- a/Source/WebCore/loader/DocumentLoader.cpp >+++ b/Source/WebCore/loader/DocumentLoader.cpp >@@ -527,7 +527,7 @@ void DocumentLoader::redirectReceived(CachedResource& resource, ResourceRequest& > { > ASSERT_UNUSED(resource, &resource == m_mainResource); > #if ENABLE(SERVICE_WORKER) >- bool isRedirectionFromServiceWorker = redirectResponse.source() == ResourceResponse::Source::ServiceWorker; >+ bool isRedirectionFromServiceWorker = redirectResponse.source() == ResourceResponse::SourceServiceWorker; > willSendRequest(WTFMove(request), redirectResponse, [isRedirectionFromServiceWorker, completionHandler = WTFMove(completionHandler), protectedThis = makeRef(*this), this] (auto&& request) mutable { > ASSERT(!m_substituteData.isValid()); > if (request.isNull() || !m_mainDocumentError.isNull() || !m_frame) { >diff --git a/Source/WebCore/loader/DocumentThreadableLoader.cpp b/Source/WebCore/loader/DocumentThreadableLoader.cpp >index 5e79916800ae860614746c9d15113959501043aa..524ea1994eebdbceceb9536f90315336185eaded 100644 >--- a/Source/WebCore/loader/DocumentThreadableLoader.cpp >+++ b/Source/WebCore/loader/DocumentThreadableLoader.cpp >@@ -343,7 +343,7 @@ void DocumentThreadableLoader::redirectReceived(CachedResource& resource, Resour > request.setHTTPHeaderFields(*m_originalHeaders); > > #if ENABLE(SERVICE_WORKER) >- if (redirectResponse.source() != ResourceResponse::Source::ServiceWorker && redirectResponse.source() != ResourceResponse::Source::MemoryCache) >+ if (redirectResponse.source() != ResourceResponse::SourceServiceWorker && redirectResponse.source() != ResourceResponse::SourceMemoryCache) > m_options.serviceWorkersMode = ServiceWorkersMode::None; > #endif > makeCrossOriginAccessRequest(ResourceRequest(request)); >@@ -369,7 +369,7 @@ void DocumentThreadableLoader::responseReceived(CachedResource& resource, const > void DocumentThreadableLoader::didReceiveResponse(unsigned long identifier, const ResourceResponse& response) > { > ASSERT(m_client); >- ASSERT(response.type() != ResourceResponse::Type::Error); >+ ASSERT(response.type() != ResourceResponse::Error); > > InspectorInstrumentation::didReceiveThreadableLoaderResponse(*this, identifier); > >@@ -381,16 +381,16 @@ void DocumentThreadableLoader::didReceiveResponse(unsigned long identifier, cons > return; > } > >- if (response.type() == ResourceResponse::Type::Default) { >+ if (response.type() == ResourceResponse::Default) { > m_client->didReceiveResponse(identifier, ResourceResponseBase::filter(response)); >- if (response.tainting() == ResourceResponse::Tainting::Opaque) { >+ if (response.tainting() == ResourceResponse::TaintingOpaque) { > clearResource(); > if (m_client) > m_client->didFinishLoading(identifier); > } > return; > } >- ASSERT(response.type() == ResourceResponse::Type::Opaqueredirect || response.source() == ResourceResponse::Source::ServiceWorker || response.source() == ResourceResponse::Source::MemoryCache); >+ ASSERT(response.type() == ResourceResponse::Opaqueredirect || response.source() == ResourceResponse::SourceServiceWorker || response.source() == ResourceResponse::SourceMemoryCache); > m_client->didReceiveResponse(identifier, response); > } > >@@ -453,7 +453,7 @@ void DocumentThreadableLoader::didFinishLoading(unsigned long identifier) > if (m_resource->resourceBuffer()) > m_client->didReceiveData(m_resource->resourceBuffer()->data(), m_resource->resourceBuffer()->size()); > } else { >- ASSERT(response.type() == ResourceResponse::Type::Default); >+ ASSERT(response.type() == ResourceResponse::Default); > > m_client->didReceiveResponse(identifier, ResourceResponseBase::filter(response)); > if (m_resource->resourceBuffer()) >@@ -601,10 +601,10 @@ void DocumentThreadableLoader::loadRequest(ResourceRequest&& request, SecurityCh > > if (!m_sameOriginRequest) { > if (m_options.mode == FetchOptions::Mode::NoCors) >- response.setTainting(ResourceResponse::Tainting::Opaque); >+ response.setTainting(ResourceResponse::TaintingOpaque); > else { > ASSERT(m_options.mode == FetchOptions::Mode::Cors); >- response.setTainting(ResourceResponse::Tainting::Cors); >+ response.setTainting(ResourceResponse::TaintingCors); > String accessControlErrorDescription; > if (!passesAccessControlCheck(response, m_options.storedCredentialsPolicy, securityOrigin(), accessControlErrorDescription)) { > logErrorAndFail(ResourceError(errorDomainWebKitInternal, 0, response.url(), accessControlErrorDescription, ResourceError::Type::AccessControl)); >diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp >index 7e4136038a53a1a0d64035cdb895a4bc2ab05739..8c62f38f5503dd0452a991fcbf6bbd9716974fbd 100644 >--- a/Source/WebCore/loader/FrameLoader.cpp >+++ b/Source/WebCore/loader/FrameLoader.cpp >@@ -3591,7 +3591,7 @@ void FrameLoader::loadedResourceFromMemoryCache(CachedResource& resource, Resour > requestFromDelegate(newRequest, identifier, error); > > ResourceResponse response = resource.response(); >- response.setSource(ResourceResponse::Source::MemoryCache); >+ response.setSource(ResourceResponse::SourceMemoryCache); > notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, newRequest, response, 0, resource.encodedSize(), 0, error); > } > >diff --git a/Source/WebCore/loader/ResourceLoader.cpp b/Source/WebCore/loader/ResourceLoader.cpp >index 1f6f353e6935e8e5eb655deed80f57b0ae37c2fc..3053ccf3196f25a41f1359c502df5df3a420190f 100644 >--- a/Source/WebCore/loader/ResourceLoader.cpp >+++ b/Source/WebCore/loader/ResourceLoader.cpp >@@ -283,7 +283,7 @@ void ResourceLoader::loadDataURL() > dataResponse.setHTTPStatusCode(200); > dataResponse.setHTTPStatusText("OK"_s); > dataResponse.setHTTPHeaderField(HTTPHeaderName::ContentType, result.contentType); >- dataResponse.setSource(ResourceResponse::Source::Network); >+ dataResponse.setSource(ResourceResponse::SourceNetwork); > this->didReceiveResponse(dataResponse, [this, protectedThis = WTFMove(protectedThis), dataSize, data = result.data.releaseNonNull()]() mutable { > if (!this->reachedTerminalState() && dataSize) > this->didReceiveBuffer(WTFMove(data), dataSize, DataPayloadWholeResource); >@@ -443,22 +443,22 @@ static void logResourceResponseSource(Frame* frame, ResourceResponse::Source sou > > String sourceKey; > switch (source) { >- case ResourceResponse::Source::Network: >+ case ResourceResponse::SourceNetwork: > sourceKey = DiagnosticLoggingKeys::networkKey(); > break; >- case ResourceResponse::Source::DiskCache: >+ case ResourceResponse::SourceDiskCache: > sourceKey = DiagnosticLoggingKeys::diskCacheKey(); > break; >- case ResourceResponse::Source::DiskCacheAfterValidation: >+ case ResourceResponse::SourceDiskCacheAfterValidation: > sourceKey = DiagnosticLoggingKeys::diskCacheAfterValidationKey(); > break; >- case ResourceResponse::Source::ServiceWorker: >+ case ResourceResponse::SourceServiceWorker: > sourceKey = DiagnosticLoggingKeys::serviceWorkerKey(); > break; >- case ResourceResponse::Source::MemoryCache: >- case ResourceResponse::Source::MemoryCacheAfterValidation: >- case ResourceResponse::Source::ApplicationCache: >- case ResourceResponse::Source::Unknown: >+ case ResourceResponse::SourceMemoryCache: >+ case ResourceResponse::SourceMemoryCacheAfterValidation: >+ case ResourceResponse::SourceApplicationCache: >+ case ResourceResponse::SourceUnknown: > return; > } > >diff --git a/Source/WebCore/loader/SubresourceLoader.cpp b/Source/WebCore/loader/SubresourceLoader.cpp >index e524d5720bbf84f24bfbd25eb14cf1230f112830..a305704800a8918373fd03f1d1c29627f8ad4013 100644 >--- a/Source/WebCore/loader/SubresourceLoader.cpp >+++ b/Source/WebCore/loader/SubresourceLoader.cpp >@@ -228,8 +228,8 @@ void SubresourceLoader::willSendRequestInternal(ResourceRequest&& newRequest, co > } > > ResourceResponse opaqueRedirectedResponse = redirectResponse; >- opaqueRedirectedResponse.setType(ResourceResponse::Type::Opaqueredirect); >- opaqueRedirectedResponse.setTainting(ResourceResponse::Tainting::Opaqueredirect); >+ opaqueRedirectedResponse.setType(ResourceResponse::Opaqueredirect); >+ opaqueRedirectedResponse.setTainting(ResourceResponse::TaintingOpaqueredirect); > m_resource->responseReceived(opaqueRedirectedResponse); > if (reachedTerminalState()) { > RELEASE_LOG_IF_ALLOWED("willSendRequestinternal: reached terminal state (frame = %p, frameLoader = %p, resourceID = %lu)", frame(), frameLoader(), identifier()); >@@ -327,7 +327,7 @@ void SubresourceLoader::didReceiveResponse(const ResourceResponse& response, Com > #endif > #if ENABLE(SERVICE_WORKER) > // Implementing step 10 of https://fetch.spec.whatwg.org/#main-fetch for service worker responses. >- if (response.source() == ResourceResponse::Source::ServiceWorker && response.url() != request().url()) { >+ if (response.source() == ResourceResponse::SourceServiceWorker && response.url() != request().url()) { > auto& loader = m_documentLoader->cachedResourceLoader(); > if (!loader.allowedByContentSecurityPolicy(m_resource->type(), response.url(), options(), ContentSecurityPolicy::RedirectResponseReceived::Yes)) { > RELEASE_LOG_IF_ALLOWED("didReceiveResponse: canceling load because not allowed by content policy (frame = %p, frameLoader = %p, resourceID = %lu)", frame(), frameLoader(), identifier()); >@@ -341,7 +341,7 @@ void SubresourceLoader::didReceiveResponse(const ResourceResponse& response, Com > // redirection with no Location headers and fetch in manual redirect mode. Or in rare circumstances, > // cases of too many redirects from CFNetwork (<rdar://problem/30610988>). > #if !PLATFORM(COCOA) >- ASSERT(response.httpStatusCode() < 300 || response.httpStatusCode() >= 400 || response.httpStatusCode() == 304 || !response.httpHeaderField(HTTPHeaderName::Location) || response.type() == ResourceResponse::Type::Opaqueredirect); >+ ASSERT(response.httpStatusCode() < 300 || response.httpStatusCode() >= 400 || response.httpStatusCode() == 304 || !response.httpHeaderField(HTTPHeaderName::Location) || response.type() == ResourceResponse::Opaqueredirect); > #endif > > // Reference the object in this method since the additional processing can do >@@ -356,7 +356,7 @@ void SubresourceLoader::didReceiveResponse(const ResourceResponse& response, Com > // 304 Not modified / Use local copy > // Existing resource is ok, just use it updating the expiration time. > ResourceResponse revalidationResponse = response; >- revalidationResponse.setSource(ResourceResponse::Source::MemoryCacheAfterValidation); >+ revalidationResponse.setSource(ResourceResponse::SourceMemoryCacheAfterValidation); > m_resource->setResponse(revalidationResponse); > MemoryCache::singleton().revalidationSucceeded(*m_resource, revalidationResponse); > if (m_frame && m_frame->page()) >@@ -550,8 +550,8 @@ bool SubresourceLoader::checkResponseCrossOriginAccessControl(const ResourceResp > return true; > > #if ENABLE(SERVICE_WORKER) >- if (response.source() == ResourceResponse::Source::ServiceWorker) >- return response.tainting() != ResourceResponse::Tainting::Opaque; >+ if (response.source() == ResourceResponse::SourceServiceWorker) >+ return response.tainting() != ResourceResponse::TaintingOpaque; > #endif > > ASSERT(m_origin); >diff --git a/Source/WebCore/loader/appcache/ApplicationCacheResource.cpp b/Source/WebCore/loader/appcache/ApplicationCacheResource.cpp >index f1f7e1756301471f3085def8e41dc5d0ca9d609a..6dd5f5012a8eb51fa41abfce8e4afaf6bf7f062a 100644 >--- a/Source/WebCore/loader/appcache/ApplicationCacheResource.cpp >+++ b/Source/WebCore/loader/appcache/ApplicationCacheResource.cpp >@@ -35,7 +35,7 @@ Ref<ApplicationCacheResource> ApplicationCacheResource::create(const URL& url, c > if (!buffer) > buffer = SharedBuffer::create(); > auto resourceResponse = response; >- resourceResponse.setSource(ResourceResponse::Source::ApplicationCache); >+ resourceResponse.setSource(ResourceResponse::SourceApplicationCache); > > return adoptRef(*new ApplicationCacheResource(URL { url }, WTFMove(resourceResponse), type, buffer.releaseNonNull(), path)); > } >diff --git a/Source/WebCore/loader/cache/CachedRawResource.cpp b/Source/WebCore/loader/cache/CachedRawResource.cpp >index be6183abfa59d5c8e162fec1d65524523ade278c..03a748620da1062696541794778b55a0c7d892c2 100644 >--- a/Source/WebCore/loader/cache/CachedRawResource.cpp >+++ b/Source/WebCore/loader/cache/CachedRawResource.cpp >@@ -174,10 +174,10 @@ void CachedRawResource::didAddClient(CachedResourceClient& c) > if (!m_response.isNull()) { > ResourceResponse response(m_response); > if (validationCompleting()) >- response.setSource(ResourceResponse::Source::MemoryCacheAfterValidation); >+ response.setSource(ResourceResponse::SourceMemoryCacheAfterValidation); > else { > ASSERT(!validationInProgress()); >- response.setSource(ResourceResponse::Source::MemoryCache); >+ response.setSource(ResourceResponse::SourceMemoryCache); > } > client->responseReceived(*this, response, WTFMove(responseProcessedHandler)); > } else >diff --git a/Source/WebCore/loader/cache/CachedResource.cpp b/Source/WebCore/loader/cache/CachedResource.cpp >index e430e447ac494636c984e74d40b91e65cdebb50b..0293ea944f3208aca8c0b06554fc161b1ddaad1b 100644 >--- a/Source/WebCore/loader/cache/CachedResource.cpp >+++ b/Source/WebCore/loader/cache/CachedResource.cpp >@@ -402,12 +402,12 @@ void CachedResource::finish() > void CachedResource::setCrossOrigin() > { > ASSERT(m_options.mode != FetchOptions::Mode::SameOrigin); >- m_responseTainting = (m_options.mode == FetchOptions::Mode::Cors) ? ResourceResponse::Tainting::Cors : ResourceResponse::Tainting::Opaque; >+ m_responseTainting = (m_options.mode == FetchOptions::Mode::Cors) ? ResourceResponse::TaintingCors : ResourceResponse::TaintingOpaque; > } > > bool CachedResource::isCrossOrigin() const > { >- return m_responseTainting != ResourceResponse::Tainting::Basic; >+ return m_responseTainting != ResourceResponse::TaintingBasic; > } > > bool CachedResource::isCORSSameOrigin() const >@@ -422,7 +422,7 @@ bool CachedResource::isCORSSameOrigin() const > #endif > > // https://html.spec.whatwg.org/multipage/infrastructure.html#cors-same-origin >- return !loadFailedOrCanceled() && m_responseTainting != ResourceResponse::Tainting::Opaque; >+ return !loadFailedOrCanceled() && m_responseTainting != ResourceResponse::TaintingOpaque; > } > > bool CachedResource::isExpired() const >@@ -476,18 +476,18 @@ void CachedResource::redirectReceived(ResourceRequest&& request, const ResourceR > > void CachedResource::setResponse(const ResourceResponse& response) > { >- ASSERT(m_response.type() == ResourceResponse::Type::Default); >+ ASSERT(m_response.type() == ResourceResponse::Default); > m_response = response; > m_varyingHeaderValues = collectVaryingRequestHeaders(cookieJar(), m_resourceRequest, m_response, sessionID()); > > #if ENABLE(SERVICE_WORKER) >- if (m_response.source() == ResourceResponse::Source::ServiceWorker) { >+ if (m_response.source() == ResourceResponse::SourceServiceWorker) { > m_responseTainting = m_response.tainting(); > return; > } > #endif > m_response.setRedirected(m_redirectChainCacheStatus.status != RedirectChainCacheStatus::Status::NoRedirection); >- if (m_response.tainting() == ResourceResponse::Tainting::Basic || m_response.tainting() == ResourceResponse::Tainting::Cors) >+ if (m_response.tainting() == ResourceResponse::TaintingBasic || m_response.tainting() == ResourceResponse::TaintingCors) > m_response.setTainting(m_responseTainting); > } > >diff --git a/Source/WebCore/loader/cache/CachedResource.h b/Source/WebCore/loader/cache/CachedResource.h >index 229a142d64413cebaefac52710bb2bf8ddedf7be..4addd3b5ea99b9574494de20dde83b1d26510eb8 100644 >--- a/Source/WebCore/loader/cache/CachedResource.h >+++ b/Source/WebCore/loader/cache/CachedResource.h >@@ -361,7 +361,7 @@ private: > > PreloadResult m_preloadResult { PreloadResult::PreloadNotReferenced }; > >- ResourceResponse::Tainting m_responseTainting { ResourceResponse::Tainting::Basic }; >+ ResourceResponse::Tainting m_responseTainting { ResourceResponse::TaintingBasic }; > ResourceLoadPriority m_loadPriority; > > Type m_type; // Type >diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp >index 843a9d1f9d6c85f1000a2c40f1964b47a2eb1c7a..8bd73a7ef013449d8365e8b20623af0529561b60 100644 >--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp >+++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp >@@ -669,7 +669,7 @@ static inline bool isResourceSuitableForDirectReuse(const CachedResource& resour > > // If the cached resource has not followed redirections, it is incomplete and we should not use it. > // Let's make sure the memory cache has no such resource. >- ASSERT(resource.response().type() != ResourceResponse::Type::Opaqueredirect); >+ ASSERT(resource.response().type() != ResourceResponse::Opaqueredirect); > > // We could support redirect modes other than Follow in case of a redirected resource. > // This case is rare and is not worth optimizing currently. >diff --git a/Source/WebCore/loader/cache/MemoryCache.cpp b/Source/WebCore/loader/cache/MemoryCache.cpp >index d3b8051423c3fc524bd8b6f55f35a6ac2230b202..430e3c5accc3ac5992c8271f939f3581b93f7101 100644 >--- a/Source/WebCore/loader/cache/MemoryCache.cpp >+++ b/Source/WebCore/loader/cache/MemoryCache.cpp >@@ -129,7 +129,7 @@ bool MemoryCache::add(CachedResource& resource) > > void MemoryCache::revalidationSucceeded(CachedResource& revalidatingResource, const ResourceResponse& response) > { >- ASSERT(response.source() == ResourceResponse::Source::MemoryCacheAfterValidation); >+ ASSERT(response.source() == ResourceResponse::SourceMemoryCacheAfterValidation); > ASSERT(revalidatingResource.resourceToRevalidate()); > CachedResource& resource = *revalidatingResource.resourceToRevalidate(); > ASSERT(!resource.inCache()); >diff --git a/Source/WebCore/loader/soup/ResourceLoaderSoup.cpp b/Source/WebCore/loader/soup/ResourceLoaderSoup.cpp >index 0ae315c425be1e36bdf56f038fa50cb2d35ee587..0c4664ee2e8fbb6396f77f9569c1d172f267d6a6 100644 >--- a/Source/WebCore/loader/soup/ResourceLoaderSoup.cpp >+++ b/Source/WebCore/loader/soup/ResourceLoaderSoup.cpp >@@ -68,7 +68,7 @@ void ResourceLoader::loadGResource() > response.setHTTPStatusCode(200); > response.setHTTPStatusText("OK"_s); > response.setHTTPHeaderField(HTTPHeaderName::ContentType, contentType.get()); >- response.setSource(ResourceResponse::Source::Network); >+ response.setSource(ResourceResponse::SourceNetwork); > loader->deliverResponseAndData(response, SharedBuffer::create(bytes.get())); > }, protectedThis.leakRef())); > >diff --git a/Source/WebCore/platform/network/NetworkLoadMetrics.h b/Source/WebCore/platform/network/NetworkLoadMetrics.h >index 03c18b6927a2d4060e98f4d23f1db52841d275ae..b1170837f9cbb687ed696fd466cdc54e81ec2f60 100644 >--- a/Source/WebCore/platform/network/NetworkLoadMetrics.h >+++ b/Source/WebCore/platform/network/NetworkLoadMetrics.h >@@ -168,12 +168,12 @@ public: > String connectionIdentifier; > NetworkLoadPriority priority; > >- String tlsProtocol; >- String tlsCipher; >- > // Whether or not all of the properties (0 or otherwise) have been set. > bool complete { false }; > >+ String tlsProtocol; >+ String tlsCipher; >+ > HTTPHeaderMap requestHeaders; > > uint64_t requestHeaderBytesSent; >diff --git a/Source/WebCore/platform/network/ParsedContentRange.cpp b/Source/WebCore/platform/network/ParsedContentRange.cpp >index a3d4f044059dfd9a57b31929db8f112c15f62113..233ba3996592cef2a95d3b6f143432d56e3cd6b2 100644 >--- a/Source/WebCore/platform/network/ParsedContentRange.cpp >+++ b/Source/WebCore/platform/network/ParsedContentRange.cpp >@@ -31,7 +31,7 @@ > > namespace WebCore { > >-static bool areContentRangeValuesValid(int64_t firstBytePosition, int64_t lastBytePosition, int64_t instanceLength) >+static bool areContentRangeValuesValid(int64_t firstBytePosition, ParsedContentRange::BytePosition lastBytePosition, int64_t instanceLength) > { > // From <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html> > // 14.16 Content-Range >@@ -40,16 +40,16 @@ static bool areContentRangeValuesValid(int64_t firstBytePosition, int64_t lastBy > if (firstBytePosition < 0) > return false; > >- if (lastBytePosition < firstBytePosition) >+ if (lastBytePosition.value() < firstBytePosition) > return false; > > if (instanceLength == ParsedContentRange::UnknownLength) > return true; > >- return lastBytePosition < instanceLength; >+ return lastBytePosition.value() < instanceLength; > } > >-static bool parseContentRange(const String& headerValue, int64_t& firstBytePosition, int64_t& lastBytePosition, int64_t& instanceLength) >+static bool parseContentRange(const String& headerValue, int64_t& firstBytePosition, ParsedContentRange::BytePosition& lastBytePosition, int64_t& instanceLength) > { > // From <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html> > // 14.16 Content-Range >@@ -111,7 +111,8 @@ static bool parseContentRange(const String& headerValue, int64_t& firstBytePosit > > ParsedContentRange::ParsedContentRange(const String& headerValue) > { >- m_isValid = parseContentRange(headerValue, m_firstBytePosition, m_lastBytePosition, m_instanceLength); >+ if (!parseContentRange(headerValue, m_firstBytePosition, m_lastBytePosition, m_instanceLength)) >+ m_lastBytePosition = -1; > } > > ParsedContentRange::ParsedContentRange(int64_t firstBytePosition, int64_t lastBytePosition, int64_t instanceLength) >@@ -119,16 +120,17 @@ ParsedContentRange::ParsedContentRange(int64_t firstBytePosition, int64_t lastBy > , m_lastBytePosition(lastBytePosition) > , m_instanceLength(instanceLength) > { >- m_isValid = areContentRangeValuesValid(m_firstBytePosition, m_lastBytePosition, m_instanceLength); >+ if (!areContentRangeValuesValid(m_firstBytePosition, m_lastBytePosition, m_instanceLength)) >+ m_lastBytePosition = -1; > } > > String ParsedContentRange::headerValue() const > { >- if (!m_isValid) >+ if (!isValid()) > return String(); > if (m_instanceLength == UnknownLength) >- return makeString("bytes ", m_firstBytePosition, '-', m_lastBytePosition, "/*"); >- return makeString("bytes ", m_firstBytePosition, '-', m_lastBytePosition, '/', m_instanceLength); >+ return makeString("bytes ", m_firstBytePosition, '-', m_lastBytePosition.value(), "/*"); >+ return makeString("bytes ", m_firstBytePosition, '-', m_lastBytePosition.value(), '/', m_instanceLength); > } > > } >diff --git a/Source/WebCore/platform/network/ParsedContentRange.h b/Source/WebCore/platform/network/ParsedContentRange.h >index 5a0704bd4b96fdcba90dc14ca466cb8efd7de5c0..426a96d00783b5fca3c98391fbdcc52e6ab13583 100644 >--- a/Source/WebCore/platform/network/ParsedContentRange.h >+++ b/Source/WebCore/platform/network/ParsedContentRange.h >@@ -27,6 +27,7 @@ > #define ParsedContentRange_h > > #include <wtf/Forward.h> >+#include <wtf/Markable.h> > > namespace WebCore { > >@@ -36,22 +37,23 @@ public: > ParsedContentRange() { } > WEBCORE_EXPORT ParsedContentRange(int64_t firstBytePosition, int64_t lastBytePosition, int64_t instanceLength); > >- bool isValid() const { return m_isValid; } >+ bool isValid() const { return (bool)m_lastBytePosition; } > int64_t firstBytePosition() const { return m_firstBytePosition; } >- int64_t lastBytePosition() const { return m_lastBytePosition; } >+ int64_t lastBytePosition() const { return m_lastBytePosition.value(); } > int64_t instanceLength() const { return m_instanceLength; } > > WEBCORE_EXPORT String headerValue() const; > > enum { UnknownLength = std::numeric_limits<int64_t>::max() }; > >+ using BytePosition = Markable<int64_t, IntegralMarkableTraits<int64_t, -1>>; >+ > private: > template<typename T> static bool isPositive(T); > > int64_t m_firstBytePosition { 0 }; >- int64_t m_lastBytePosition { 0 }; >+ BytePosition m_lastBytePosition; > int64_t m_instanceLength { UnknownLength }; >- bool m_isValid { false }; > }; > > } >diff --git a/Source/WebCore/platform/network/ResourceResponseBase.cpp b/Source/WebCore/platform/network/ResourceResponseBase.cpp >index 20ac64d57034c69ea92bc7a43536f16d795ffa29..c8a96fc9b051ab3690c1741c5bad0bcf0eb7d31e 100644 >--- a/Source/WebCore/platform/network/ResourceResponseBase.cpp >+++ b/Source/WebCore/platform/network/ResourceResponseBase.cpp >@@ -48,7 +48,8 @@ bool isScriptAllowedByNosniff(const ResourceResponse& response) > } > > ResourceResponseBase::ResourceResponseBase() >- : m_haveParsedCacheControlHeader(false) >+ : m_includesCertificateInfo(false) >+ , m_haveParsedCacheControlHeader(false) > , m_haveParsedAgeHeader(false) > , m_haveParsedDateHeader(false) > , m_haveParsedExpiresHeader(false) >@@ -56,6 +57,9 @@ ResourceResponseBase::ResourceResponseBase() > , m_haveParsedContentRangeHeader(false) > , m_isRedirected(false) > , m_isNull(true) >+ , m_source(SourceUnknown) >+ , m_type(Default) >+ , m_tainting(TaintingBasic) > { > } > >@@ -64,7 +68,7 @@ ResourceResponseBase::ResourceResponseBase(const URL& url, const String& mimeTyp > , m_mimeType(mimeType) > , m_expectedContentLength(expectedLength) > , m_textEncodingName(textEncodingName) >- , m_certificateInfo(CertificateInfo()) // Empty but valid for synthetic responses. >+ , m_includesCertificateInfo(true) // Empty but valid for synthetic responses. > , m_haveParsedCacheControlHeader(false) > , m_haveParsedAgeHeader(false) > , m_haveParsedDateHeader(false) >@@ -73,6 +77,9 @@ ResourceResponseBase::ResourceResponseBase(const URL& url, const String& mimeTyp > , m_haveParsedContentRangeHeader(false) > , m_isRedirected(false) > , m_isNull(false) >+ , m_source(SourceUnknown) >+ , m_type(Default) >+ , m_tainting(TaintingBasic) > { > } > >@@ -91,8 +98,8 @@ ResourceResponseBase::CrossThreadData ResourceResponseBase::crossThreadData() co > > data.httpHeaderFields = httpHeaderFields().isolatedCopy(); > data.networkLoadMetrics = m_networkLoadMetrics.isolatedCopy(); >- data.type = m_type; >- data.tainting = m_tainting; >+ data.type = static_cast<Type>(m_type); >+ data.tainting = static_cast<Tainting>(m_tainting); > data.isRedirected = m_isRedirected; > > return data; >@@ -134,17 +141,17 @@ ResourceResponse ResourceResponseBase::syntheticRedirectResponse(const URL& from > > ResourceResponse ResourceResponseBase::filter(const ResourceResponse& response) > { >- if (response.tainting() == Tainting::Opaque) { >+ if (response.tainting() == TaintingOpaque) { > ResourceResponse opaqueResponse; >- opaqueResponse.setTainting(Tainting::Opaque); >- opaqueResponse.setType(Type::Opaque); >+ opaqueResponse.setTainting(TaintingOpaque); >+ opaqueResponse.setType(Opaque); > return opaqueResponse; > } > >- if (response.tainting() == Tainting::Opaqueredirect) { >+ if (response.tainting() == TaintingOpaqueredirect) { > ResourceResponse opaqueResponse; >- opaqueResponse.setTainting(Tainting::Opaqueredirect); >- opaqueResponse.setType(Type::Opaqueredirect); >+ opaqueResponse.setTainting(TaintingOpaqueredirect); >+ opaqueResponse.setType(Opaqueredirect); > opaqueResponse.setURL(response.url()); > return opaqueResponse; > } >@@ -153,15 +160,15 @@ ResourceResponse ResourceResponseBase::filter(const ResourceResponse& response) > // Let's initialize filteredResponse to remove some header fields. > filteredResponse.lazyInit(AllFields); > >- if (response.tainting() == Tainting::Basic) { >- filteredResponse.setType(Type::Basic); >+ if (response.tainting() == TaintingBasic) { >+ filteredResponse.setType(Basic); > filteredResponse.m_httpHeaderFields.remove(HTTPHeaderName::SetCookie); > filteredResponse.m_httpHeaderFields.remove(HTTPHeaderName::SetCookie2); > return filteredResponse; > } > >- ASSERT(response.tainting() == Tainting::Cors); >- filteredResponse.setType(Type::Cors); >+ ASSERT(response.tainting() == TaintingCors); >+ filteredResponse.setType(Cors); > > auto accessControlExposeHeaderSet = parseAccessControlAllowList<ASCIICaseInsensitiveHash>(response.httpHeaderField(HTTPHeaderName::AccessControlExposeHeaders)); > filteredResponse.m_httpHeaderFields.uncommonHeaders().removeAllMatching([&](auto& entry) { >@@ -261,8 +268,9 @@ void ResourceResponseBase::setType(Type type) > > void ResourceResponseBase::includeCertificateInfo() const > { >- if (m_certificateInfo) >+ if (m_includesCertificateInfo) > return; >+ m_includesCertificateInfo = true; > m_certificateInfo = static_cast<const ResourceResponse*>(this)->platformCertificateInfo(); > } > >@@ -423,9 +431,9 @@ static bool isSafeCrossOriginResponseHeader(HTTPHeaderName name) > void ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting() > { > switch (m_tainting) { >- case ResourceResponse::Tainting::Basic: >+ case ResourceResponse::TaintingBasic: > return; >- case ResourceResponse::Tainting::Cors: { >+ case ResourceResponse::TaintingCors: { > HTTPHeaderMap filteredHeaders; > for (auto& header : m_httpHeaderFields.commonHeaders()) { > if (isSafeCrossOriginResponseHeader(header.key)) >@@ -442,8 +450,8 @@ void ResourceResponseBase::sanitizeHTTPHeaderFieldsAccordingToTainting() > m_httpHeaderFields = WTFMove(filteredHeaders); > return; > } >- case ResourceResponse::Tainting::Opaque: >- case ResourceResponse::Tainting::Opaqueredirect: { >+ case ResourceResponse::TaintingOpaque: >+ case ResourceResponse::TaintingOpaqueredirect: { > HTTPHeaderMap filteredHeaders; > for (auto& header : m_httpHeaderFields.commonHeaders()) { > if (isSafeCrossOriginResponseHeader(header.key)) >@@ -770,7 +778,7 @@ ResourceResponseBase::Source ResourceResponseBase::source() const > { > lazyInit(AllFields); > >- return m_source; >+ return static_cast<Source>(m_source); > } > > void ResourceResponseBase::lazyInit(InitLevel initLevel) const >diff --git a/Source/WebCore/platform/network/ResourceResponseBase.h b/Source/WebCore/platform/network/ResourceResponseBase.h >index 9f1b3b2e7fc67935bf788d4977190dee5305855d..5ddf1f1d06a26bff2d78e69ffff1fbbce149277f 100644 >--- a/Source/WebCore/platform/network/ResourceResponseBase.h >+++ b/Source/WebCore/platform/network/ResourceResponseBase.h >@@ -45,8 +45,8 @@ bool isScriptAllowedByNosniff(const ResourceResponse&); > class ResourceResponseBase { > WTF_MAKE_FAST_ALLOCATED; > public: >- enum class Type : uint8_t { Basic, Cors, Default, Error, Opaque, Opaqueredirect }; >- enum class Tainting : uint8_t { Basic, Cors, Opaque, Opaqueredirect }; >+ enum Type { Basic, Cors, Default, Error, Opaque, Opaqueredirect }; >+ enum Tainting { TaintingBasic, TaintingCors, TaintingOpaque, TaintingOpaqueredirect }; > > static bool isRedirectionStatusCode(int code) { return code == 301 || code == 302 || code == 303 || code == 307 || code == 308; } > >@@ -65,8 +65,8 @@ public: > String httpVersion; > HTTPHeaderMap httpHeaderFields; > NetworkLoadMetrics networkLoadMetrics; >- Type type; >- Tainting tainting; >+ unsigned type : 3; >+ unsigned tainting : 2; > bool isRedirected; > }; > >@@ -127,7 +127,12 @@ public: > WEBCORE_EXPORT static String sanitizeSuggestedFilename(const String&); > > WEBCORE_EXPORT void includeCertificateInfo() const; >- const Optional<CertificateInfo>& certificateInfo() const { return m_certificateInfo; }; >+ Optional<CertificateInfo> certificateInfo() const >+ { >+ if (m_includesCertificateInfo) >+ return m_certificateInfo; >+ return WTF::nullopt; >+ } > > // These functions return parsed values of the corresponding response headers. > WEBCORE_EXPORT bool cacheControlContainsNoCache() const; >@@ -142,7 +147,7 @@ public: > WEBCORE_EXPORT Optional<WallTime> lastModified() const; > const ParsedContentRange& contentRange() const; > >- enum class Source : uint8_t { Unknown, Network, DiskCache, DiskCacheAfterValidation, MemoryCache, MemoryCacheAfterValidation, ServiceWorker, ApplicationCache }; >+ enum Source { SourceUnknown, SourceNetwork, SourceDiskCache, SourceDiskCacheAfterValidation, SourceMemoryCache, SourceMemoryCacheAfterValidation, SourceServiceWorker, SourceApplicationCache }; > WEBCORE_EXPORT Source source() const; > void setSource(Source source) > { >@@ -163,13 +168,13 @@ public: > } > > WEBCORE_EXPORT void setType(Type); >- Type type() const { return m_type; } >+ Type type() const { return static_cast<Type>(m_type); } > > void setRedirected(bool isRedirected) { m_isRedirected = isRedirected; } > bool isRedirected() const { return m_isRedirected; } > >- void setTainting(Tainting tainting) { m_tainting = tainting; } >- Tainting tainting() const { return m_tainting; } >+ void setTainting(Tainting tainting) { m_tainting = static_cast<unsigned>(tainting); } >+ Tainting tainting() const { return static_cast<Tainting>(m_tainting); } > > static ResourceResponse filter(const ResourceResponse&); > >@@ -214,8 +219,6 @@ protected: > HTTPHeaderMap m_httpHeaderFields; > mutable NetworkLoadMetrics m_networkLoadMetrics; > >- mutable Optional<CertificateInfo> m_certificateInfo; >- > private: > mutable Markable<Seconds, Seconds::MarkableTraits> m_age; > mutable Markable<WallTime, WallTime::MarkableTraits> m_date; >@@ -224,6 +227,11 @@ private: > mutable ParsedContentRange m_contentRange; > mutable CacheControlDirectives m_cacheControlDirectives; > >+protected: >+ int m_httpStatusCode { 0 }; >+ >+private: >+ mutable bool m_includesCertificateInfo : 1; > mutable bool m_haveParsedCacheControlHeader : 1; > mutable bool m_haveParsedAgeHeader : 1; > mutable bool m_haveParsedDateHeader : 1; >@@ -235,12 +243,12 @@ protected: > bool m_isNull : 1; > > private: >- Source m_source { Source::Unknown }; >- Type m_type { Type::Default }; >- Tainting m_tainting { Tainting::Basic }; >+ unsigned m_source : 3; >+ unsigned m_type : 3; >+ unsigned m_tainting : 2; > > protected: >- int m_httpStatusCode { 0 }; >+ mutable CertificateInfo m_certificateInfo; > }; > > inline bool operator==(const ResourceResponse& a, const ResourceResponse& b) { return ResourceResponseBase::compare(a, b); } >@@ -268,10 +276,12 @@ void ResourceResponseBase::encode(Encoder& encoder) const > encoder << m_networkLoadMetrics; > > encoder << m_httpStatusCode; >+ bool includesCertificateInfo = m_includesCertificateInfo; >+ encoder << includesCertificateInfo; > encoder << m_certificateInfo; >- encoder.encodeEnum(m_source); >- encoder.encodeEnum(m_type); >- encoder.encodeEnum(m_tainting); >+ encoder << m_source; >+ encoder << m_type; >+ encoder << m_tainting; > encoder << m_isRedirected; > } > >@@ -306,14 +316,24 @@ bool ResourceResponseBase::decode(Decoder& decoder, ResourceResponseBase& respon > return false; > if (!decoder.decode(response.m_httpStatusCode)) > return false; >+ bool includesCertificateInfo = false; >+ if (!decoder.decode(includesCertificateInfo)) >+ return false; >+ response.m_includesCertificateInfo = includesCertificateInfo; > if (!decoder.decode(response.m_certificateInfo)) > return false; >- if (!decoder.decodeEnum(response.m_source)) >+ unsigned source; >+ if (!decoder.decode(source)) > return false; >- if (!decoder.decodeEnum(response.m_type)) >+ response.m_source = source; >+ unsigned type; >+ if (!decoder.decode(type)) > return false; >- if (!decoder.decodeEnum(response.m_tainting)) >+ response.m_type = type; >+ unsigned tainting; >+ if (!decoder.decode(tainting)) > return false; >+ response.m_tainting = tainting; > bool isRedirected = false; > if (!decoder.decode(isRedirected)) > return false; >diff --git a/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp b/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp >index dad9010f9570ebc567633543fd1fc502f8469b99..f9dfc3e4464e7e59199b742952662b4ea939559a 100644 >--- a/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp >+++ b/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp >@@ -200,7 +200,7 @@ void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse > CFURLResponseSetMIMEType(cfResponse.get(), CFSTR("text/html")); > > ResourceResponse resourceResponse(cfResponse.get()); >- resourceResponse.setSource(ResourceResponse::Source::Network); >+ resourceResponse.setSource(ResourceResponse::SourceNetwork); > m_handle->didReceiveResponse(WTFMove(resourceResponse), [this, protectedThis = WTFMove(protectedThis)] { > m_semaphore.signal(); > }); >diff --git a/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm b/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm >index c9b53e312ad85576d366ef4dc5374391fe8c690c..deda6123081807533057a14d99d8c6bd43c50c1a 100644 >--- a/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm >+++ b/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm >@@ -629,7 +629,7 @@ void WebCoreNSURLSessionDataTaskClient::loadFinished(PlatformMediaResource& reso > > - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response completionHandler:(CompletionHandler<void(ShouldContinue)>&&)completionHandler > { >- ASSERT(response.source() == ResourceResponse::Source::Network || response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation || response.source() == ResourceResponse::Source::ServiceWorker); >+ ASSERT(response.source() == ResourceResponse::SourceNetwork || response.source() == ResourceResponse::SourceDiskCache || response.source() == ResourceResponse::SourceDiskCacheAfterValidation || response.source() == ResourceResponse::SourceServiceWorker); > ASSERT_UNUSED(resource, &resource == _resource); > ASSERT(isMainThread()); > [self.session task:self didReceiveResponseFromOrigin:SecurityOrigin::create(response.url())]; >diff --git a/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp b/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp >index 5518e3556a6ce2c53441af3d46a2bd5354a83316..fb86978bdce4b25065cd81ce9deb6f4502e63944 100644 >--- a/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp >+++ b/Source/WebCore/platform/network/curl/CurlCacheEntry.cpp >@@ -173,7 +173,7 @@ bool CurlCacheEntry::loadResponseHeaders() > void CurlCacheEntry::setResponseFromCachedHeaders(ResourceResponse& response) > { > response.setHTTPStatusCode(304); >- response.setSource(ResourceResponseBase::Source::DiskCache); >+ response.setSource(ResourceResponseBase::SourceDiskCache); > > // Integrate the headers in the response with the cached ones. > HTTPHeaderMap::const_iterator it = m_cachedResponse.httpHeaderFields().begin(); >diff --git a/Source/WebCore/platform/network/curl/CurlCacheManager.cpp b/Source/WebCore/platform/network/curl/CurlCacheManager.cpp >index fa5c8d2d21b6273815d023a4f20455016e9638af..4ae395c161a7e01d7d6d7010d5a31d19ba447334 100644 >--- a/Source/WebCore/platform/network/curl/CurlCacheManager.cpp >+++ b/Source/WebCore/platform/network/curl/CurlCacheManager.cpp >@@ -202,7 +202,7 @@ void CurlCacheManager::didReceiveResponse(ResourceHandle& job, ResourceResponse& > > removeCacheEntryClient(url, &job); > >- if (response.source() == ResourceResponseBase::Source::DiskCache) { >+ if (response.source() == ResourceResponseBase::SourceDiskCache) { > readCachedData(url, &job, response); > m_LRUEntryList.prependOrMoveToFirst(url); > } >diff --git a/Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp b/Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp >index 190a0f20c30a5ab737a5ad1ea6be5f709e0cfcac..4f94e4cec4322282cda9bbb6d1e739046bbed59d 100644 >--- a/Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp >+++ b/Source/WebCore/platform/network/curl/ResourceResponseCurl.cpp >@@ -106,7 +106,7 @@ ResourceResponse::ResourceResponse(const CurlResponse& response) > > setMimeType(extractMIMETypeFromMediaType(httpHeaderField(HTTPHeaderName::ContentType)).convertToASCIILowercase()); > setTextEncodingName(extractCharsetFromMediaType(httpHeaderField(HTTPHeaderName::ContentType))); >- setSource(ResourceResponse::Source::Network); >+ setSource(ResourceResponse::SourceNetwork); > } > > void ResourceResponse::appendHTTPHeaderField(const String& header) >diff --git a/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm b/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm >index 7cf6346bb6dc6bab4750beb37f79123029c611d8..6654f57ff6fa2579321e2eaa4072bf28498a5746 100644 >--- a/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm >+++ b/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm >@@ -251,7 +251,7 @@ IGNORE_WARNINGS_END > [r _setMIMEType:@"text/html"]; > > ResourceResponse resourceResponse(r.get()); >- resourceResponse.setSource(ResourceResponse::Source::Network); >+ resourceResponse.setSource(ResourceResponse::SourceNetwork); > ResourceHandle::getConnectionTimingData(connection.get(), resourceResponse.deprecatedNetworkLoadMetrics()); > > m_handle->didReceiveResponse(WTFMove(resourceResponse), [self, protectedSelf = WTFMove(protectedSelf)] { >diff --git a/Source/WebCore/testing/Internals.cpp b/Source/WebCore/testing/Internals.cpp >index 8834ffba44bb4eae0d045060bee8eec3f3c38c16..4cb87851f41e31e91cc6fee6d891bd1f1fb46315 100644 >--- a/Source/WebCore/testing/Internals.cpp >+++ b/Source/WebCore/testing/Internals.cpp >@@ -697,21 +697,21 @@ static String responseSourceToString(const ResourceResponse& response) > if (response.isNull()) > return "Null response"; > switch (response.source()) { >- case ResourceResponse::Source::Unknown: >+ case ResourceResponse::SourceUnknown: > return "Unknown"; >- case ResourceResponse::Source::Network: >+ case ResourceResponse::SourceNetwork: > return "Network"; >- case ResourceResponse::Source::ServiceWorker: >+ case ResourceResponse::SourceServiceWorker: > return "Service worker"; >- case ResourceResponse::Source::DiskCache: >+ case ResourceResponse::SourceDiskCache: > return "Disk cache"; >- case ResourceResponse::Source::DiskCacheAfterValidation: >+ case ResourceResponse::SourceDiskCacheAfterValidation: > return "Disk cache after validation"; >- case ResourceResponse::Source::MemoryCache: >+ case ResourceResponse::SourceMemoryCache: > return "Memory cache"; >- case ResourceResponse::Source::MemoryCacheAfterValidation: >+ case ResourceResponse::SourceMemoryCacheAfterValidation: > return "Memory cache after validation"; >- case ResourceResponse::Source::ApplicationCache: >+ case ResourceResponse::SourceApplicationCache: > return "Application cache"; > } > ASSERT_NOT_REACHED(); >diff --git a/Source/WebCore/testing/ServiceWorkerInternals.cpp b/Source/WebCore/testing/ServiceWorkerInternals.cpp >index 55445615e0e1e81eca14b816c3e8e491b737b3f4..8bba3c782ff174bd6caaeffc3d6a7b9ca6485a61 100644 >--- a/Source/WebCore/testing/ServiceWorkerInternals.cpp >+++ b/Source/WebCore/testing/ServiceWorkerInternals.cpp >@@ -73,8 +73,8 @@ Ref<FetchResponse> ServiceWorkerInternals::createOpaqueWithBlobBodyResponse(Scri > formData->appendBlob(blob->url()); > > ResourceResponse response; >- response.setType(ResourceResponse::Type::Cors); >- response.setTainting(ResourceResponse::Tainting::Opaque); >+ response.setType(ResourceResponse::Cors); >+ response.setTainting(ResourceResponse::TaintingOpaque); > auto fetchResponse = FetchResponse::create(context, FetchBody::fromFormData(formData), FetchHeaders::Guard::Response, WTFMove(response)); > fetchResponse->initializeOpaqueLoadIdentifierForTesting(); > return fetchResponse; >diff --git a/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp b/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp >index 44969af06f4f8c1e77a5c1eba9fd4b0223a067a2..8f33c685c605eb1ad6c886213a0eb0d02b03048e 100644 >--- a/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp >+++ b/Source/WebCore/workers/service/context/ServiceWorkerFetch.cpp >@@ -48,14 +48,14 @@ namespace ServiceWorkerFetch { > // https://fetch.spec.whatwg.org/#http-fetch step 3.3 > static inline Optional<ResourceError> validateResponse(const ResourceResponse& response, FetchOptions::Mode mode, FetchOptions::Redirect redirect) > { >- if (response.type() == ResourceResponse::Type::Error) >+ if (response.type() == ResourceResponse::Error) > return ResourceError { errorDomainWebKitInternal, 0, response.url(), "Response served by service worker is an error"_s, ResourceError::Type::General }; > >- if (mode != FetchOptions::Mode::NoCors && response.tainting() == ResourceResponse::Tainting::Opaque) >+ if (mode != FetchOptions::Mode::NoCors && response.tainting() == ResourceResponse::TaintingOpaque) > return ResourceError { errorDomainWebKitInternal, 0, response.url(), "Response served by service worker is opaque"_s, ResourceError::Type::AccessControl }; > > // Navigate mode induces manual redirect. >- if (redirect != FetchOptions::Redirect::Manual && mode != FetchOptions::Mode::Navigate && response.tainting() == ResourceResponse::Tainting::Opaqueredirect) >+ if (redirect != FetchOptions::Redirect::Manual && mode != FetchOptions::Mode::Navigate && response.tainting() == ResourceResponse::TaintingOpaqueredirect) > return ResourceError { errorDomainWebKitInternal, 0, response.url(), "Response served by service worker is opaque redirect"_s, ResourceError::Type::AccessControl }; > > if ((redirect != FetchOptions::Redirect::Follow || mode == FetchOptions::Mode::Navigate) && response.isRedirected()) >@@ -89,7 +89,7 @@ static void processResponse(Ref<Client>&& client, Expected<Ref<FetchResponse>, R > return; > } > >- resourceResponse.setSource(ResourceResponse::Source::ServiceWorker); >+ resourceResponse.setSource(ResourceResponse::SourceServiceWorker); > > // In case of main resource and mime type is the default one, we set it to text/html to pass more service worker WPT tests. > // FIXME: We should refine our MIME type sniffing strategy for synthetic responses. >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >index 5992639caa2e1ba3bd12b014098955cb0de73dc9..796758c37117c924685fc0cf24efaf4778d4c782 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >@@ -512,7 +512,7 @@ void NetworkConnectionToWebProcess::convertMainResourceLoadToDownload(PAL::Sessi > RELEASE_ASSERT(RunLoop::isMain()); > > // In case a response is served from service worker, we do not have yet the ability to convert the load. >- if (!mainResourceLoadIdentifier || response.source() == ResourceResponse::Source::ServiceWorker) { >+ if (!mainResourceLoadIdentifier || response.source() == ResourceResponse::SourceServiceWorker) { > m_networkProcess->downloadManager().startDownload(sessionID, downloadID, request); > return; > } >diff --git a/Source/WebKit/NetworkProcess/NetworkLoad.cpp b/Source/WebKit/NetworkProcess/NetworkLoad.cpp >index 9107fec1e34db44881622868622c8fbeb5b3883c..10d2d5298fa40ade147383b1e80c1bc696e697c2 100644 >--- a/Source/WebKit/NetworkProcess/NetworkLoad.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkLoad.cpp >@@ -177,7 +177,7 @@ void NetworkLoad::willPerformHTTPRedirection(ResourceResponse&& redirectResponse > ASSERT(RunLoop::isMain()); > ASSERT(!m_redirectCompletionHandler); > >- redirectResponse.setSource(ResourceResponse::Source::Network); >+ redirectResponse.setSource(ResourceResponse::SourceNetwork); > m_redirectCompletionHandler = WTFMove(completionHandler); > > auto oldRequest = WTFMove(m_currentRequest); >@@ -226,7 +226,7 @@ void NetworkLoad::notifyDidReceiveResponse(ResourceResponse&& response, Response > { > ASSERT(RunLoop::isMain()); > >- response.setSource(ResourceResponse::Source::Network); >+ response.setSource(ResourceResponse::SourceNetwork); > if (m_parameters.needsCertificateInfo) > response.includeCertificateInfo(); > >diff --git a/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp b/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp >index 409714d66726a8474aff29a160817f247967b016..ca3dcd6bcb5bfab4fcd2c8ab85a27e19bb7b86c0 100644 >--- a/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp >@@ -146,13 +146,13 @@ ResourceError NetworkLoadChecker::validateResponse(ResourceResponse& response) > if (m_redirectCount) > response.setRedirected(true); > >- if (response.type() == ResourceResponse::Type::Opaqueredirect) { >- response.setTainting(ResourceResponse::Tainting::Opaqueredirect); >+ if (response.type() == ResourceResponse::Opaqueredirect) { >+ response.setTainting(ResourceResponse::TaintingOpaqueredirect); > return { }; > } > > if (m_options.mode == FetchOptions::Mode::Navigate || m_isSameOriginRequest) { >- response.setTainting(ResourceResponse::Tainting::Basic); >+ response.setTainting(ResourceResponse::TaintingBasic); > return { }; > } > >@@ -160,7 +160,7 @@ ResourceError NetworkLoadChecker::validateResponse(ResourceResponse& response) > if (auto error = validateCrossOriginResourcePolicy(*m_origin, m_url, response)) > return WTFMove(*error); > >- response.setTainting(ResourceResponse::Tainting::Opaque); >+ response.setTainting(ResourceResponse::TaintingOpaque); > return { }; > } > >@@ -174,7 +174,7 @@ ResourceError NetworkLoadChecker::validateResponse(ResourceResponse& response) > if (!passesAccessControlCheck(response, m_storedCredentialsPolicy, *m_origin, errorMessage)) > return ResourceError { String { }, 0, m_url, WTFMove(errorMessage), ResourceError::Type::AccessControl }; > >- response.setTainting(ResourceResponse::Tainting::Cors); >+ response.setTainting(ResourceResponse::TaintingCors); > return { }; > } > >diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >index 0b3c081ec8321f74d779dbd43d9c770202a89a80..b79580f2f6c737c4823ef6d3d6eb8d1416586ddd 100644 >--- a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >@@ -602,7 +602,7 @@ Optional<Seconds> NetworkResourceLoader::validateCacheEntryForMaxAgeCapValidatio > #if ENABLE(RESOURCE_LOAD_STATISTICS) > bool existingCacheEntryMatchesNewResponse = false; > if (m_cacheEntryForMaxAgeCapValidation) { >- ASSERT(redirectResponse.source() == ResourceResponse::Source::Network); >+ ASSERT(redirectResponse.source() == ResourceResponse::SourceNetwork); > ASSERT(redirectResponse.isRedirection()); > if (redirectResponse.httpHeaderField(WebCore::HTTPHeaderName::Location) == m_cacheEntryForMaxAgeCapValidation->response().httpHeaderField(WebCore::HTTPHeaderName::Location)) > existingCacheEntryMatchesNewResponse = true; >@@ -628,7 +628,7 @@ void NetworkResourceLoader::willSendRedirectedRequest(ResourceRequest&& request, > adClickConversion = AdClickAttribution::parseConversionRequest(redirectRequest.url()); > > auto maxAgeCap = validateCacheEntryForMaxAgeCapValidation(request, redirectRequest, redirectResponse); >- if (redirectResponse.source() == ResourceResponse::Source::Network && canUseCachedRedirect(request)) >+ if (redirectResponse.source() == ResourceResponse::SourceNetwork && canUseCachedRedirect(request)) > m_cache->storeRedirect(request, redirectResponse, redirectRequest, maxAgeCap); > > if (m_networkLoadChecker) { >@@ -688,7 +688,7 @@ void NetworkResourceLoader::continueWillSendRedirectedRequest(ResourceRequest&& > > void NetworkResourceLoader::didFinishWithRedirectResponse(WebCore::ResourceRequest&& request, WebCore::ResourceRequest&& redirectRequest, ResourceResponse&& redirectResponse) > { >- redirectResponse.setType(ResourceResponse::Type::Opaqueredirect); >+ redirectResponse.setType(ResourceResponse::Opaqueredirect); > if (!isCrossOriginPrefetch()) > didReceiveResponse(WTFMove(redirectResponse), [] (auto) { }); > else if (auto session = m_connection->networkProcess().networkSession(sessionID())) >diff --git a/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp b/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp >index 7ae1c2fe7dce607b9f8a53d99a1bd7985399bcf1..de693defa6cbe44b9972ae342ac457a7957ab4ef 100644 >--- a/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp >+++ b/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp >@@ -114,7 +114,7 @@ std::unique_ptr<Entry> Entry::decodeStorageRecord(const Storage::Record& storage > WTF::Persistence::Decoder decoder(storageEntry.header.data(), storageEntry.header.size()); > if (!decoder.decode(entry->m_response)) > return nullptr; >- entry->m_response.setSource(WebCore::ResourceResponse::Source::DiskCache); >+ entry->m_response.setSource(WebCore::ResourceResponse::SourceDiskCache); > > bool hasVaryingRequestHeaders; > if (!decoder.decode(hasVaryingRequestHeaders)) >@@ -201,12 +201,12 @@ ShareableResource::Handle& Entry::shareableResourceHandle() const > > bool Entry::needsValidation() const > { >- return m_response.source() == WebCore::ResourceResponse::Source::DiskCacheAfterValidation; >+ return m_response.source() == WebCore::ResourceResponse::SourceDiskCacheAfterValidation; > } > > void Entry::setNeedsValidation(bool value) > { >- m_response.setSource(value ? WebCore::ResourceResponse::Source::DiskCacheAfterValidation : WebCore::ResourceResponse::Source::DiskCache); >+ m_response.setSource(value ? WebCore::ResourceResponse::SourceDiskCacheAfterValidation : WebCore::ResourceResponse::SourceDiskCache); > } > > void Entry::asJSON(StringBuilder& json, const Storage::RecordInfo& info) const >diff --git a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp >index e21f4a13957c4de987ae47b3e206b8bcd19c8066..9b08b0fe53ce8175ab73c20f329f807868d144e5 100644 >--- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp >+++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp >@@ -744,15 +744,15 @@ bool WebLoaderStrategy::havePerformedSecurityChecks(const ResourceResponse& resp > if (!shouldPerformSecurityChecks()) > return false; > switch (response.source()) { >- case ResourceResponse::Source::ApplicationCache: >- case ResourceResponse::Source::MemoryCache: >- case ResourceResponse::Source::MemoryCacheAfterValidation: >- case ResourceResponse::Source::ServiceWorker: >+ case ResourceResponse::SourceApplicationCache: >+ case ResourceResponse::SourceMemoryCache: >+ case ResourceResponse::SourceMemoryCacheAfterValidation: >+ case ResourceResponse::SourceServiceWorker: > return false; >- case ResourceResponse::Source::DiskCache: >- case ResourceResponse::Source::DiskCacheAfterValidation: >- case ResourceResponse::Source::Network: >- case ResourceResponse::Source::Unknown: >+ case ResourceResponse::SourceDiskCache: >+ case ResourceResponse::SourceDiskCacheAfterValidation: >+ case ResourceResponse::SourceNetwork: >+ case ResourceResponse::SourceUnknown: > return true; > } > ASSERT_NOT_REACHED(); >diff --git a/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp b/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp >index 324466a8d4d85c8330959a50f77d589146106121..a32b4dd2cadc2add4d4b546baccf73c25fef1067 100644 >--- a/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp >+++ b/Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp >@@ -83,7 +83,7 @@ void ServiceWorkerClientFetch::didReceiveRedirectResponse(ResourceResponse&& res > if (!m_loader) > return; > >- response.setSource(ResourceResponse::Source::ServiceWorker); >+ response.setSource(ResourceResponse::SourceServiceWorker); > > m_loader->willSendRequest(m_loader->request().redirectedRequest(response, m_shouldClearReferrerOnHTTPSToHTTPRedirect), response, [this, protectedThis = protectedThis.copyRef()](ResourceRequest&& request) { > if (!m_loader || request.isNull()) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 187460
:
346147
|
372680
|
372681
|
372682
|
372683
|
372684
|
372698
|
372702
|
372703
|
372704
|
372706
|
372707
|
372708
|
372712
|
372713
|
372716
|
372738
|
372783
|
372788
|
372789
|
372799
|
372802
|
373173
|
373175
|
373176
| 373194