void CachedResource::setLoadPriority(const std::optional<ResourceLoadPriority>& loadPriority) { if (loadPriority) m_loadPriority = loadPriority.value(); else m_loadPriority = defaultPriorityForResourceType(type()); }
void CachedResource::setLoadPriority(ResourceLoadPriority loadPriority) { if (loadPriority == ResourceLoadPriorityUnresolved) loadPriority = defaultPriorityForResourceType(type()); if (loadPriority == m_loadPriority) return; m_loadPriority = loadPriority; if (m_loader) m_loader->didChangePriority(loadPriority); }
CachedResource::CachedResource(const ResourceRequest& request, Type type, SessionID sessionID) : m_resourceRequest(request) , m_sessionID(sessionID) , m_loadPriority(defaultPriorityForResourceType(type)) , m_responseTimestamp(currentTime()) , m_decodedDataDeletionTimer(this, &CachedResource::decodedDataDeletionTimerFired, deadDecodedDataDeletionIntervalForResourceType(type)) , m_lastDecodedAccessTime(0) , m_loadFinishTime(0) , m_encodedSize(0) , m_decodedSize(0) , m_accessCount(0) , m_handleCount(0) , m_preloadCount(0) , m_preloadResult(PreloadNotReferenced) , m_inLiveDecodedResourcesList(false) , m_requestedFromNetworkingLayer(false) , m_inCache(false) , m_loading(false) , m_switchingClientsToRevalidatedResource(false) , m_type(type) , m_status(Pending) #ifndef NDEBUG , m_deleted(false) , m_lruIndex(0) #endif , m_nextInAllResourcesList(0) , m_prevInAllResourcesList(0) , m_nextInLiveResourcesList(0) , m_prevInLiveResourcesList(0) , m_owningCachedResourceLoader(0) , m_resourceToRevalidate(0) , m_proxyResource(0) { ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests careless updates of the enum. ASSERT(sessionID.isValid()); #ifndef NDEBUG cachedResourceLeakCounter.increment(); #endif if (!m_resourceRequest.url().hasFragmentIdentifier()) return; URL urlForCache = MemoryCache::removeFragmentIdentifierIfNeeded(m_resourceRequest.url()); if (urlForCache.hasFragmentIdentifier()) return; m_fragmentIdentifierForRequest = m_resourceRequest.url().fragmentIdentifier(); m_resourceRequest.setURL(urlForCache); }
CachedResource::CachedResource(CachedResourceRequest&& request, Type type, SessionID sessionID) : m_resourceRequest(request.releaseResourceRequest()) , m_options(request.options()) , m_decodedDataDeletionTimer(*this, &CachedResource::destroyDecodedData, deadDecodedDataDeletionIntervalForResourceType(type)) , m_sessionID(sessionID) , m_loadPriority(defaultPriorityForResourceType(type)) , m_responseTimestamp(std::chrono::system_clock::now()) , m_fragmentIdentifierForRequest(request.releaseFragmentIdentifier()) , m_origin(request.releaseOrigin()) , m_type(type) { ASSERT(sessionID.isValid()); setLoadPriority(request.priority()); #ifndef NDEBUG cachedResourceLeakCounter.increment(); #endif // FIXME: We should have a better way of checking for Navigation loads, maybe FetchMode::Options::Navigate. ASSERT(m_origin || m_type == CachedResource::MainResource); if (isRequestCrossOrigin(m_origin.get(), m_resourceRequest.url(), m_options)) setCrossOrigin(); }