Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/WebKit/Source/core/loader/FrameFetchContext.cpp

Issue 2925963002: Create NetworkQuietDetector. (Closed)
Patch Set: Send network idle signal to GRC Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 return DetermineWebCachePolicy(RequestMethod::kIsNotPost, 165 return DetermineWebCachePolicy(RequestMethod::kIsNotPost,
166 RequestType::kIsNotConditional, 166 RequestType::kIsNotConditional,
167 ResourceType::kIsNotMainResource, load_type); 167 ResourceType::kIsNotMainResource, load_type);
168 } 168 }
169 169
170 } // namespace 170 } // namespace
171 171
172 FrameFetchContext::FrameFetchContext(DocumentLoader* loader, Document* document) 172 FrameFetchContext::FrameFetchContext(DocumentLoader* loader, Document* document)
173 : document_loader_(loader), document_(document) { 173 : document_loader_(loader), document_(document) {
174 DCHECK(GetFrame()); 174 DCHECK(GetFrame());
175 if (document)
176 network_quiet_detector_ = new NetworkQuietDetector(document);
zhenw 2017/06/07 17:32:56 I think there is a question about whether NetworkQ
lpy 2017/06/07 18:32:45 Done.
175 } 177 }
176 178
177 void FrameFetchContext::ProvideDocumentToContext(FetchContext& context, 179 void FrameFetchContext::ProvideDocumentToContext(FetchContext& context,
178 Document* document) { 180 Document* document) {
179 DCHECK(document); 181 DCHECK(document);
180 CHECK(context.IsFrameFetchContext()); 182 CHECK(context.IsFrameFetchContext());
181 static_cast<FrameFetchContext&>(context).document_ = document; 183 static_cast<FrameFetchContext&>(context).SetDocument(document);
182 } 184 }
183 185
184 FrameFetchContext::~FrameFetchContext() { 186 FrameFetchContext::~FrameFetchContext() {
185 document_loader_ = nullptr; 187 document_loader_ = nullptr;
186 } 188 }
187 189
188 LocalFrame* FrameFetchContext::FrameOfImportsController() const { 190 LocalFrame* FrameFetchContext::FrameOfImportsController() const {
189 DCHECK(GetDocument()); 191 DCHECK(GetDocument());
190 HTMLImportsController* imports_controller = 192 HTMLImportsController* imports_controller =
191 GetDocument()->ImportsController(); 193 GetDocument()->ImportsController();
192 DCHECK(imports_controller); 194 DCHECK(imports_controller);
193 LocalFrame* frame = imports_controller->Master()->GetFrame(); 195 LocalFrame* frame = imports_controller->Master()->GetFrame();
194 DCHECK(frame); 196 DCHECK(frame);
195 return frame; 197 return frame;
196 } 198 }
197 199
198 RefPtr<WebTaskRunner> FrameFetchContext::GetTaskRunner() const { 200 RefPtr<WebTaskRunner> FrameFetchContext::GetTaskRunner() const {
199 return GetFrame()->FrameScheduler()->LoadingTaskRunner(); 201 return GetFrame()->FrameScheduler()->LoadingTaskRunner();
200 } 202 }
201 203
202 Document* FrameFetchContext::GetDocument() const { 204 Document* FrameFetchContext::GetDocument() const {
203 return document_; 205 return document_;
204 } 206 }
205 207
208 void FrameFetchContext::SetDocument(Document* document) {
209 document_ = document;
210 if (document)
211 network_quiet_detector_ = new NetworkQuietDetector(document);
212 }
213
206 LocalFrame* FrameFetchContext::GetFrame() const { 214 LocalFrame* FrameFetchContext::GetFrame() const {
207 if (!document_loader_) 215 if (!document_loader_)
208 return FrameOfImportsController(); 216 return FrameOfImportsController();
209 217
210 LocalFrame* frame = document_loader_->GetFrame(); 218 LocalFrame* frame = document_loader_->GetFrame();
211 DCHECK(frame); 219 DCHECK(frame);
212 return frame; 220 return frame;
213 } 221 }
214 222
215 LocalFrameClient* FrameFetchContext::GetLocalFrameClient() const { 223 LocalFrameClient* FrameFetchContext::GetLocalFrameClient() const {
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 argv.push_back(Resource::ResourceTypeToString(type, fetch_initiator_name)); 502 argv.push_back(Resource::ResourceTypeToString(type, fetch_initiator_name));
495 argv.push_back(request.Url()); 503 argv.push_back(request.Url());
496 activity_logger->LogEvent("blinkRequestResource", argv.size(), argv.data()); 504 activity_logger->LogEvent("blinkRequestResource", argv.size(), argv.data());
497 } 505 }
498 } 506 }
499 507
500 void FrameFetchContext::DidLoadResource(Resource* resource) { 508 void FrameFetchContext::DidLoadResource(Resource* resource) {
501 if (!GetDocument()) 509 if (!GetDocument())
502 return; 510 return;
503 FirstMeaningfulPaintDetector::From(*GetDocument()).CheckNetworkStable(); 511 FirstMeaningfulPaintDetector::From(*GetDocument()).CheckNetworkStable();
512 network_quiet_detector_->CheckNetworkStable();
zhenw 2017/06/07 17:32:56 I think the plan is to let FMPDetector also use th
lpy 2017/06/07 18:32:45 Discussed offline, updated the description to refl
504 if (resource->IsLoadEventBlockingResourceType()) 513 if (resource->IsLoadEventBlockingResourceType())
505 GetDocument()->CheckCompleted(); 514 GetDocument()->CheckCompleted();
506 } 515 }
507 516
508 void FrameFetchContext::AddResourceTiming(const ResourceTimingInfo& info) { 517 void FrameFetchContext::AddResourceTiming(const ResourceTimingInfo& info) {
509 Document* initiator_document = GetDocument() && info.IsMainResource() 518 Document* initiator_document = GetDocument() && info.IsMainResource()
510 ? GetDocument()->ParentDocument() 519 ? GetDocument()->ParentDocument()
511 : GetDocument(); 520 : GetDocument();
512 if (!initiator_document || !initiator_document->domWindow()) 521 if (!initiator_document || !initiator_document->domWindow())
513 return; 522 return;
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 857
849 void FrameFetchContext::Detach() { 858 void FrameFetchContext::Detach() {
850 // This is needed to break a reference cycle in which off-heap 859 // This is needed to break a reference cycle in which off-heap
851 // ComputedStyle is involved. See https://crbug.com/383860 for details. 860 // ComputedStyle is involved. See https://crbug.com/383860 for details.
852 document_ = nullptr; 861 document_ = nullptr;
853 } 862 }
854 863
855 DEFINE_TRACE(FrameFetchContext) { 864 DEFINE_TRACE(FrameFetchContext) {
856 visitor->Trace(document_loader_); 865 visitor->Trace(document_loader_);
857 visitor->Trace(document_); 866 visitor->Trace(document_);
867 visitor->Trace(network_quiet_detector_);
858 BaseFetchContext::Trace(visitor); 868 BaseFetchContext::Trace(visitor);
859 } 869 }
860 870
861 } // namespace blink 871 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698