18abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)/* 28abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved. 38abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * 48abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 58abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * modification, are permitted provided that the following conditions are 68abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * met: 78abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * 88abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 98abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 108abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 118abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 128abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * in the documentation and/or other materials provided with the 138abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * distribution. 148abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 158abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 168abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * this software without specific prior written permission. 178abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * 188abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 198abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 208abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 218abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 228abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 238abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 248abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 258abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 268abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 288abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) */ 308abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 318abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "config.h" 328abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/loader/FrameFetchContext.h" 338abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/dom/Document.h" 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/frame/FrameConsole.h" 36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/LocalFrame.h" 378abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/inspector/InspectorInstrumentation.h" 38f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/inspector/InspectorTraceEvents.h" 398abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/loader/DocumentLoader.h" 408abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/loader/FrameLoader.h" 418abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/loader/FrameLoaderClient.h" 428abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/loader/ProgressTracker.h" 438abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)#include "core/page/Page.h" 4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/frame/Settings.h" 4551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/weborigin/SecurityPolicy.h" 468abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 47c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 488abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)FrameFetchContext::FrameFetchContext(LocalFrame* frame) 508abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) : m_frame(frame) 518abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 528abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 538abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 548abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameFetchContext::reportLocalLoadFailed(const KURL& url) 558abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 568abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) FrameLoader::reportLocalLoadFailed(m_frame, url.elidedString()); 578abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 588abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void FrameFetchContext::addAdditionalRequestHeaders(Document* document, ResourceRequest& request, FetchResourceType type) 608abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) bool isMainResource = type == FetchMainResource; 628abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (!isMainResource) { 638abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) String outgoingReferrer; 647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ReferrerPolicy referrerPolicy; 658abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) String outgoingOrigin; 668abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (request.httpReferrer().isNull()) { 6709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) outgoingReferrer = document->outgoingReferrer(); 687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci referrerPolicy = document->referrerPolicy(); 6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) outgoingOrigin = document->outgoingOrigin(); 708abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) } else { 718abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) outgoingReferrer = request.httpReferrer(); 727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci referrerPolicy = request.referrerPolicy(); 738abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer)->toString(); 748abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) } 758abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci outgoingReferrer = SecurityPolicy::generateReferrerHeader(referrerPolicy, request.url(), outgoingReferrer); 778abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (outgoingReferrer.isEmpty()) 788abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) request.clearHTTPReferrer(); 797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci else 807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci request.setHTTPReferrer(Referrer(outgoingReferrer, referrerPolicy)); 818abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 82197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch request.addHTTPOriginIfNeeded(AtomicString(outgoingOrigin)); 838abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) } 848abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // The remaining modifications are only necessary for HTTP and HTTPS. 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!request.url().isEmpty() && !request.url().protocolIsInHTTPFamily()) 8709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_frame->loader().applyUserAgent(request); 908abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 918abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 925d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)void FrameFetchContext::setFirstPartyForCookies(ResourceRequest& request) 935d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles){ 945d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) if (m_frame->tree().top()->isLocalFrame()) 955d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) request.setFirstPartyForCookies(toLocalFrame(m_frame->tree().top())->document()->firstPartyForCookies()); 965d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)} 975d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)CachePolicy FrameFetchContext::cachePolicy(Document* document) const 998abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 10009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (document && document->loadEventFinished()) 10109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return CachePolicyVerify; 1028abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 10309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) FrameLoadType loadType = m_frame->loader().loadType(); 10409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (loadType == FrameLoadTypeReloadFromOrigin) 1058abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) return CachePolicyReload; 10609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 107f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) Frame* parentFrame = m_frame->tree().parent(); 108f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (parentFrame && parentFrame->isLocalFrame()) { 109f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) CachePolicy parentCachePolicy = toLocalFrame(parentFrame)->loader().fetchContext().cachePolicy(toLocalFrame(parentFrame)->document()); 11009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (parentCachePolicy != CachePolicyVerify) 11109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return parentCachePolicy; 11209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 11309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 11409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (loadType == FrameLoadTypeReload) 11509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return CachePolicyRevalidate; 11609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 11709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) DocumentLoader* loader = document ? document->loader() : 0; 11809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (loader && loader->request().cachePolicy() == ReturnCacheDataElseLoad) 11909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return CachePolicyHistoryBuffer; 1208abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) return CachePolicyVerify; 1218abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1228abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1238abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1248abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)// FIXME(http://crbug.com/274173): 1258abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)// |loader| can be null if the resource is loaded from imported document. 1268abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)// This means inspector, which uses DocumentLoader as an grouping entity, 1278abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)// cannot see imported documents. 1288abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)inline DocumentLoader* FrameFetchContext::ensureLoader(DocumentLoader* loader) 1298abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 13009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return loader ? loader : m_frame->loader().documentLoader(); 1318abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1328abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 13307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid FrameFetchContext::dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority loadPriority, int intraPriorityValue) 1348abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 13507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_frame->loader().client()->dispatchDidChangeResourcePriority(identifier, loadPriority, intraPriorityValue); 1368abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1378abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1388abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameFetchContext::dispatchWillSendRequest(DocumentLoader* loader, unsigned long identifier, ResourceRequest& request, const ResourceResponse& redirectResponse, const FetchInitiatorInfo& initiatorInfo) 1398abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 140f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) m_frame->loader().applyUserAgent(request); 141f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) m_frame->loader().client()->dispatchWillSendRequest(loader, identifier, request, redirectResponse); 142f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceSendRequest", "data", InspectorSendRequestEvent::data(identifier, m_frame, request)); 143323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), "CallStack", "stack", InspectorCallStackEvent::currentCallStack()); 144f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. 1458abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) InspectorInstrumentation::willSendRequest(m_frame, identifier, ensureLoader(loader), request, redirectResponse, initiatorInfo); 1468abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1478abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1488abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameFetchContext::dispatchDidLoadResourceFromMemoryCache(const ResourceRequest& request, const ResourceResponse& response) 1498abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 150f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) m_frame->loader().client()->dispatchDidLoadResourceFromMemoryCache(request, response); 1518abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1528abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1538abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameFetchContext::dispatchDidReceiveResponse(DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r, ResourceLoader* resourceLoader) 1548abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 15507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_frame->loader().progress().incrementProgress(identifier, r); 156f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) m_frame->loader().client()->dispatchDidReceiveResponse(loader, identifier, r); 157f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceReceiveResponse", "data", InspectorReceiveResponseEvent::data(identifier, m_frame, r)); 158f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. 1597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DocumentLoader* documentLoader = ensureLoader(loader); 1607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci InspectorInstrumentation::didReceiveResourceResponse(m_frame, identifier, documentLoader, r, resourceLoader); 1617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // It is essential that inspector gets resource response BEFORE console. 1627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_frame->console().reportResourceResponseReceived(documentLoader, identifier, r); 1638abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1648abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1658abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameFetchContext::dispatchDidReceiveData(DocumentLoader*, unsigned long identifier, const char* data, int dataLength, int encodedDataLength) 1668abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 16707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_frame->loader().progress().incrementProgress(identifier, data, dataLength); 168f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceReceivedData", "data", InspectorReceiveDataEvent::data(identifier, m_frame, encodedDataLength)); 169f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. 1708abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) InspectorInstrumentation::didReceiveData(m_frame, identifier, data, dataLength, encodedDataLength); 1718abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1728abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 173a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)void FrameFetchContext::dispatchDidDownloadData(DocumentLoader*, unsigned long identifier, int dataLength, int encodedDataLength) 174a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles){ 17507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_frame->loader().progress().incrementProgress(identifier, 0, dataLength); 176f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceReceivedData", "data", InspectorReceiveDataEvent::data(identifier, m_frame, encodedDataLength)); 177f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. 178a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) InspectorInstrumentation::didReceiveData(m_frame, identifier, 0, dataLength, encodedDataLength); 179a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)} 180a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 18109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void FrameFetchContext::dispatchDidFinishLoading(DocumentLoader* loader, unsigned long identifier, double finishTime, int64_t encodedDataLength) 1828abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 18307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_frame->loader().progress().completeProgress(identifier); 184f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) m_frame->loader().client()->dispatchDidFinishLoading(loader, identifier); 1858abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 186f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceFinish", "data", InspectorResourceFinishEvent::data(identifier, finishTime, false)); 187f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. 18809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) InspectorInstrumentation::didFinishLoading(m_frame, identifier, ensureLoader(loader), finishTime, encodedDataLength); 1898abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1908abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 1918abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)void FrameFetchContext::dispatchDidFail(DocumentLoader* loader, unsigned long identifier, const ResourceError& error) 1928abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 19307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch m_frame->loader().progress().completeProgress(identifier); 194f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceFinish", "data", InspectorResourceFinishEvent::data(identifier, 0, true)); 195f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing. 19609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) InspectorInstrumentation::didFailLoading(m_frame, identifier, error); 1978abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 1988abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 199a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)void FrameFetchContext::sendRemainingDelegateMessages(DocumentLoader* loader, unsigned long identifier, const ResourceResponse& response, int dataLength) 2008abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles){ 2018abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (!response.isNull()) 2028abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) dispatchDidReceiveResponse(ensureLoader(loader), identifier, response); 2038abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 2048abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (dataLength > 0) 205a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) dispatchDidReceiveData(ensureLoader(loader), identifier, 0, dataLength, 0); 2068abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 20709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) dispatchDidFinishLoading(ensureLoader(loader), identifier, 0, 0); 2088abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)} 2098abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) 2107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid FrameFetchContext::trace(Visitor* visitor) 2117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 2127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci visitor->trace(m_frame); 2137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci FetchContext::trace(visitor); 2147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 2157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 216c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 217