Shrink various loading-related enums to shrink CachedResource
https://bugs.webkit.org/show_bug.cgi?id=187443
Reviewed by Chris Dumez.
Source/WebCore:
ResourceRequestBase, ResourceResponseBase, ResourceLoaderOptions, FetchOptions and
CachedResource have a lot of enum members variables most of which took 4 bytes each.
These can be packed much more efficiently if the enums are declared with an 8-bit size.
This requires turning enums into enum classes in some cases.
This reduces the size of CachedResource from 1464 to 1384 bytes, which saves about 49KB
over the ~600 CachedResources on nytimes.com.
* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::startLoadingBlobURL):
(WebCore::FetchLoader::start):
* css/StyleRuleImport.cpp:
(WebCore::StyleRuleImport::requestStyleSheet):
* fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::start):
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):
* html/PluginDocument.cpp:
(WebCore::PluginDocumentParser::appendBytes):
* html/parser/CSSPreloadScanner.cpp:
(WebCore::CSSPreloadScanner::emitRule):
* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::StartTagScanner::resourceType const):
* inspector/NetworkResourcesData.cpp:
(WebCore::shouldBufferResourceData):
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::didReceiveResponse):
(WebCore::InspectorNetworkAgent::loadResource):
(WebCore::InspectorNetworkAgent::cachedResourceContent):
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::sourceMapURLForResource):
(WebCore::InspectorPageAgent::inspectorResourceType):
* loader/ApplicationManifestLoader.cpp:
(WebCore::ApplicationManifestLoader::startLoading):
* loader/ContentFilter.cpp:
(WebCore::ContentFilter::deliverResourceData):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::notifyFinished):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::tryLoadingRedirectRequestFromApplicationCache):
(WebCore::DocumentLoader::subresource const):
(WebCore::DocumentLoader::loadMainResource):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
(WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest):
(WebCore::DocumentThreadableLoader::preflightSuccess):
(WebCore::DocumentThreadableLoader::loadRequest):
* loader/FetchOptions.h:
(WebCore::FetchOptions::FetchOptions):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadFrameRequest):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::reloadWithOverrideEncoding):
(WebCore::FrameLoader::reload):
(WebCore::FrameLoader::defaultRequestCachingPolicy):
(WebCore::FrameLoader::addExtraFieldsToRequest):
(WebCore::FrameLoader::loadedResourceFromMemoryCache):
(WebCore::FrameLoader::loadDifferentDocumentItem):
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::resourceTypeFromAsAttribute):
(WebCore::createLinkPreloadResourceClient):
(WebCore::LinkLoader::isSupportedType):
(WebCore::LinkLoader::prefetchIfNeeded):
* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::requestResource):
* loader/NavigationScheduler.cpp:
(WebCore::NavigationScheduler::scheduleLocationChange):
* loader/NetscapePlugInStreamLoader.cpp:
(WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader):
* loader/ResourceLoadInfo.cpp:
(WebCore::toResourceType):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::init):
(WebCore::ResourceLoader::start):
(WebCore::ResourceLoader::setDataBufferingPolicy):
(WebCore::ResourceLoader::addDataOrBuffer):
(WebCore::ResourceLoader::willSendRequestInternal):
(WebCore::ResourceLoader::didReceiveResponse):
(WebCore::ResourceLoader::didReceiveDataOrBuffer):
(WebCore::ResourceLoader::didFinishLoadingOnePart):
(WebCore::ResourceLoader::cleanupForError):
* loader/ResourceLoader.h:
(WebCore::ResourceLoader::shouldSendResourceLoadCallbacks const):
(WebCore::ResourceLoader::shouldSniffContent const):
(WebCore::ResourceLoader::shouldIncludeCertificateInfo const):
* loader/ResourceLoaderOptions.h:
* loader/ResourceTimingInformation.cpp:
(WebCore::ResourceTimingInformation::addResourceTiming):
(WebCore::ResourceTimingInformation::storeResourceTimingInitiatorInformation):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::SubresourceLoader):
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::shouldCreatePreviewLoaderForResponse const):
(WebCore::SubresourceLoader::didReceiveResponse):
(WebCore::logResourceLoaded):
(WebCore::SubresourceLoader::didFinishLoading):
(WebCore::SubresourceLoader::didFail):
(WebCore::SubresourceLoader::didCancel):
* loader/cache/CachedApplicationManifest.cpp:
(WebCore::CachedApplicationManifest::CachedApplicationManifest):
* loader/cache/CachedApplicationManifest.h:
* loader/cache/CachedCSSStyleSheet.cpp:
(WebCore::CachedCSSStyleSheet::CachedCSSStyleSheet):
* loader/cache/CachedCSSStyleSheet.h:
* loader/cache/CachedFont.h:
* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::CachedImage):
(WebCore::CachedImage::updateBuffer):
(WebCore::CachedImage::updateData):
* loader/cache/CachedImage.h:
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::updateBuffer):
(WebCore::CachedRawResource::updateData):
(WebCore::CachedRawResource::finishLoading):
(WebCore::CachedRawResource::canReuse const):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::defaultPriorityForResourceType):
(WebCore::deadDecodedDataDeletionIntervalForResourceType):
(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::load):
(WebCore::CachedResource::updateBuffer):
(WebCore::CachedResource::updateData):
(WebCore::CachedResource::isCORSSameOrigin const):
(WebCore::CachedResource::freshnessLifetime const):
(WebCore::CachedResource::setResponse):
(WebCore::CachedResource::addClientToSet):
(WebCore::CachedResource::areAllClientsXMLHttpRequests const):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::isImage const):
(WebCore::CachedResource::isMainOrMediaOrIconOrRawResource const):
(WebCore::CachedResource::ignoreForRequestCount const):
(WebCore::CachedResource::shouldSendResourceLoadCallbacks const):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::createResource):
(WebCore::CachedResourceLoader::requestImage):
(WebCore::CachedResourceLoader::requestFont):
(WebCore::CachedResourceLoader::requestTextTrack):
(WebCore::CachedResourceLoader::requestCSSStyleSheet):
(WebCore::CachedResourceLoader::requestScript):
(WebCore::CachedResourceLoader::requestXSLStyleSheet):
(WebCore::CachedResourceLoader::requestSVGDocument):
(WebCore::CachedResourceLoader::requestLinkResource):
(WebCore::CachedResourceLoader::requestMedia):
(WebCore::CachedResourceLoader::requestIcon):
(WebCore::CachedResourceLoader::requestRawResource):
(WebCore::CachedResourceLoader::requestBeaconResource):
(WebCore::CachedResourceLoader::requestMainResource):
(WebCore::CachedResourceLoader::requestApplicationManifest):
(WebCore::contentTypeFromResourceType):
(WebCore::CachedResourceLoader::checkInsecureContent const):
(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
(WebCore::CachedResourceLoader::canRequest):
(WebCore::CachedResourceLoader::canRequestInContentDispositionAttachmentSandbox const):
(WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest):
(WebCore::isResourceSuitableForDirectReuse):
(WebCore::destinationForType):
(WebCore::CachedResourceLoader::loadResource):
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
(WebCore::CachedResourceLoader::cachePolicy const):
(WebCore::CachedResourceLoader::preload):
(WebCore::CachedResourceLoader::warnUnusedPreloads):
(WebCore::CachedResourceLoader::clearPreloads):
(WebCore::CachedResourceLoader::defaultCachedResourceOptions):
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::updateAccordingCacheMode):
* loader/cache/CachedResourceRequest.h:
* loader/cache/CachedSVGDocument.cpp:
(WebCore::CachedSVGDocument::CachedSVGDocument):
* loader/cache/CachedSVGDocument.h:
* loader/cache/CachedSVGFont.cpp:
(WebCore::CachedSVGFont::CachedSVGFont):
* loader/cache/CachedSVGFont.h:
* loader/cache/CachedScript.cpp:
(WebCore::CachedScript::CachedScript):
* loader/cache/CachedScript.h:
* loader/cache/CachedTextTrack.cpp:
(WebCore::CachedTextTrack::CachedTextTrack):
(WebCore::CachedTextTrack::doUpdateBuffer):
* loader/cache/CachedTextTrack.h:
* loader/cache/CachedXSLStyleSheet.cpp:
(WebCore::CachedXSLStyleSheet::CachedXSLStyleSheet):
* loader/cache/CachedXSLStyleSheet.h:
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::getStatistics):
* loader/icon/IconLoader.cpp:
(WebCore::IconLoader::startLoading):
* loader/mac/ResourceLoaderMac.mm:
(WebCore::ResourceLoader::willCacheResponseAsync):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/EventSource.cpp:
(WebCore::EventSource::connect):
* platform/ReferrerPolicy.h:
* platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
(WebCore::WebCoreAVFResourceLoader::startLoading):
* platform/ios/QuickLook.mm:
(WebCore::registerQLPreviewConverterIfNeeded):
* platform/network/CacheValidation.cpp:
(WebCore::updateRedirectChainStatus):
(WebCore::redirectChainAllowsReuse):
* platform/network/CacheValidation.h:
(WebCore::RedirectChainCacheStatus::RedirectChainCacheStatus):
* platform/network/ResourceErrorBase.h:
* platform/network/ResourceLoadPriority.h:
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::httpBody const):
(WebCore::ResourceRequestBase::updatePlatformRequest const):
(WebCore::ResourceRequestBase::updateResourceRequest const):
* platform/network/ResourceRequestBase.h:
* platform/network/ResourceResponseBase.h:
* platform/network/StoredCredentialsPolicy.h:
* platform/network/cf/ResourceRequest.h:
(WebCore::ResourceRequest::ResourceRequest):
* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::toPlatformRequestCachePolicy):
(WebCore::fromPlatformRequestCachePolicy):
(WebCore::ResourceRequest::doUpdateResourceRequest):
* platform/network/cocoa/ResourceRequestCocoa.mm:
(WebCore::fromPlatformRequestCachePolicy):
(WebCore::toPlatformRequestCachePolicy):
(WebCore::ResourceRequest::doUpdateResourceRequest):
* platform/network/cocoa/WebCoreNSURLSession.mm:
(-[WebCoreNSURLSessionDataTask resource:receivedRedirect:request:completionHandler:]):
* platform/network/ios/PreviewConverter.mm:
(WebCore::PreviewConverter::safeRequest const):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::createNSURLConnection):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
* testing/Internals.cpp:
(WebCore::toResourceRequestCachePolicy):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
Source/WebKit:
* NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
(WebKit::LegacyCustomProtocolManager::wasRedirectedToRequest):
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::continueWillSendRequest):
* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::canUseCache const):
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::cachePolicyAllowsExpired):
(WebKit::NetworkCache::makeRetrieveDecision):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
* Shared/API/c/mac/WKURLRequestNS.mm:
(WKURLRequestCopyNSURLRequest):
* Shared/Cocoa/WKNSURLRequest.mm:
(-[WKNSURLRequest _web_createTarget]):
* Shared/mac/WebCoreArgumentCodersMac.mm:
(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
* UIProcess/API/Cocoa/WKFrameInfo.mm:
(-[WKFrameInfo request]):
* UIProcess/API/Cocoa/WKNavigation.mm:
(-[WKNavigation _request]):
* UIProcess/API/Cocoa/WKNavigationAction.mm:
(-[WKNavigationAction request]):
* UIProcess/API/Cocoa/WKNavigationData.mm:
(-[WKNavigationData originalRequest]):
* UIProcess/API/Cocoa/WKNavigationResponse.mm:
(-[WKNavigationResponse _request]):
* UIProcess/API/Cocoa/WKURLSchemeTask.mm:
(-[WKURLSchemeTaskImpl request]):
* UIProcess/API/Cocoa/_WKDownload.mm:
(-[_WKDownload request]):
* UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm:
(WebKit::LegacyCustomProtocolManagerClient::startLoading):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformCanHandleRequest):
Source/WebKitLegacy/mac:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::convertMainResourceLoadToDownload):
(WebFrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
(WebFrameLoaderClient::assignIdentifierToInitialRequest):
(WebFrameLoaderClient::dispatchWillSendRequest):
(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::updateGlobalHistory):
(WebFrameLoaderClient::canHandleRequest const):
* WebView/WebDataSource.mm:
(-[WebDataSource initialRequest]):
(-[WebDataSource request]):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@233668 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/loader/DocumentThreadableLoader.cpp b/Source/WebCore/loader/DocumentThreadableLoader.cpp
index d09001e..0a1b2b0 100644
--- a/Source/WebCore/loader/DocumentThreadableLoader.cpp
+++ b/Source/WebCore/loader/DocumentThreadableLoader.cpp
@@ -153,7 +153,7 @@
m_sameOriginRequest = options.sameOriginDataURLFlag == SameOriginDataURLFlag::Set;
if (m_sameOriginRequest || m_options.mode == FetchOptions::Mode::NoCors || m_options.mode == FetchOptions::Mode::Navigate) {
- loadRequest(WTFMove(request), DoSecurityCheck);
+ loadRequest(WTFMove(request), SecurityCheckPolicy::DoSecurityCheck);
return;
}
@@ -189,7 +189,7 @@
ASSERT(!m_bypassingPreflightForServiceWorkerRequest);
m_bypassingPreflightForServiceWorkerRequest = WTFMove(request);
m_options.serviceWorkersMode = ServiceWorkersMode::Only;
- loadRequest(ResourceRequest { m_bypassingPreflightForServiceWorkerRequest.value() }, SkipSecurityCheck);
+ loadRequest(ResourceRequest { m_bypassingPreflightForServiceWorkerRequest.value() }, SecurityCheckPolicy::SkipSecurityCheck);
return;
}
}
@@ -211,7 +211,7 @@
ASSERT(m_options.preflightPolicy == PreflightPolicy::Prevent || isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields()) || shouldPerformSecurityChecks());
updateRequestForAccessControl(request, securityOrigin(), m_options.storedCredentialsPolicy);
- loadRequest(WTFMove(request), DoSecurityCheck);
+ loadRequest(WTFMove(request), SecurityCheckPolicy::DoSecurityCheck);
}
void DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight(ResourceRequest&& request)
@@ -475,7 +475,7 @@
m_preflightChecker = std::nullopt;
// It should be ok to skip the security check since we already asked about the preflight request.
- loadRequest(WTFMove(actualRequest), SkipSecurityCheck);
+ loadRequest(WTFMove(actualRequest), SecurityCheckPolicy::SkipSecurityCheck);
}
void DocumentThreadableLoader::preflightFailure(unsigned long identifier, const ResourceError& error)
@@ -510,7 +510,7 @@
// If there is integrity metadata to validate, we must buffer.
if (!m_options.integrity.isEmpty())
- options.dataBufferingPolicy = BufferData;
+ options.dataBufferingPolicy = DataBufferingPolicy::BufferData;
request.setAllowCookies(m_options.storedCredentialsPolicy == StoredCredentialsPolicy::Use);
CachedResourceRequest newRequest(WTFMove(request), options);