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

Unified Diff: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp

Issue 2647643004: Report nav timing 2 instance as soon as it's requested. (Closed)
Patch Set: make ResourceTimingInfo ref-counted Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
index 5f21df77cecdece5778751731868621b2f203f17..fc8e190107d8cfd769b5e67b0469559e7a15b478 100644
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
@@ -312,13 +312,13 @@ void ResourceFetcher::requestLoadStarted(unsigned long identifier,
!m_validatedURLs.contains(request.resourceRequest().url())) {
// Resources loaded from memory cache should be reported the first time
// they're used.
- std::unique_ptr<ResourceTimingInfo> info = ResourceTimingInfo::create(
+ RefPtr<ResourceTimingInfo> info = ResourceTimingInfo::create(
request.options().initiatorInfo.name, monotonicallyIncreasingTime(),
resource->getType() == Resource::MainResource);
populateTimingInfo(info.get(), resource);
info->clearLoadTimings();
info->setLoadFinishTime(info->initialTime());
- m_scheduledResourceTimingReports.push_back(std::move(info));
+ m_scheduledResourceTimingReports.push_back(info.release());
if (!m_resourceTimingReportTimer.isActive())
m_resourceTimingReportTimer.startOneShot(0, BLINK_FROM_HERE);
}
@@ -633,7 +633,7 @@ Resource* ResourceFetcher::requestResource(
void ResourceFetcher::resourceTimingReportTimerFired(TimerBase* timer) {
DCHECK_EQ(timer, &m_resourceTimingReportTimer);
- Vector<std::unique_ptr<ResourceTimingInfo>> timingReports;
+ Vector<RefPtr<ResourceTimingInfo>> timingReports;
timingReports.swap(m_scheduledResourceTimingReports);
for (const auto& timingInfo : timingReports)
context().addResourceTiming(*timingInfo);
@@ -670,6 +670,10 @@ void ResourceFetcher::initializeResourceRequest(
(type == Resource::MainResource) ? FetchMainResource : FetchSubresource);
}
+ResourceTimingInfo* ResourceFetcher::getNavigationTimingInfo() {
Kunihiko Sakamoto 2017/02/13 08:22:29 Why is this moved from line 1134?
sunjian 2017/02/14 21:29:03 I think i deleted it because i thought i didn't ne
Kunihiko Sakamoto 2017/02/15 06:35:30 I see. Can you move it back to original position,
sunjian 2017/02/15 20:30:28 Done.
+ return m_navigationTimingInfo.get();
+}
+
void ResourceFetcher::initializeRevalidation(
ResourceRequest& revalidatingRequest,
Resource* resource) {
@@ -761,7 +765,7 @@ void ResourceFetcher::storePerformanceTimingInitiatorInformation(
ResourceTimingInfo::create(fetchInitiator, startTime, isMainResource);
}
- std::unique_ptr<ResourceTimingInfo> info =
+ RefPtr<ResourceTimingInfo> info =
ResourceTimingInfo::create(fetchInitiator, startTime, isMainResource);
if (resource->isCacheValidator()) {
@@ -773,7 +777,7 @@ void ResourceFetcher::storePerformanceTimingInitiatorInformation(
if (!isMainResource ||
context().updateTimingInfoForIFrameNavigation(info.get())) {
- m_resourceTimingInfoMap.add(resource, std::move(info));
+ m_resourceTimingInfoMap.add(resource, info.release());
}
}
@@ -1131,10 +1135,6 @@ ArchiveResource* ResourceFetcher::createArchive(Resource* resource) {
return m_archive ? m_archive->mainResource() : nullptr;
}
-ResourceTimingInfo* ResourceFetcher::getNavigationTimingInfo() {
- return m_navigationTimingInfo.get();
-}
-
void ResourceFetcher::handleLoadCompletion(Resource* resource) {
context().didLoadResource(resource);
@@ -1169,7 +1169,7 @@ void ResourceFetcher::handleLoaderFinish(Resource* resource,
encodedDataLength == -1 ? 0 : encodedDataLength);
}
}
- if (std::unique_ptr<ResourceTimingInfo> info =
+ if (RefPtr<ResourceTimingInfo> info =
m_resourceTimingInfoMap.take(resource)) {
// Store redirect responses that were packed inside the final response.
addRedirectsToTimingInfo(resource, info.get());

Powered by Google App Engine
This is Rietveld 408576698