OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/predictors/resource_prefetch_predictor.h" | 5 #include "chrome/browser/predictors/resource_prefetch_predictor.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
571 // corresponding to the navigation has not been created yet. | 571 // corresponding to the navigation has not been created yet. |
572 if (!navigation_id.main_frame_url.is_empty()) | 572 if (!navigation_id.main_frame_url.is_empty()) |
573 OnNavigationComplete(navigation_id); | 573 OnNavigationComplete(navigation_id); |
574 break; | 574 break; |
575 default: | 575 default: |
576 NOTREACHED() << "Unexpected initialization_state_: " | 576 NOTREACHED() << "Unexpected initialization_state_: " |
577 << initialization_state_; | 577 << initialization_state_; |
578 } | 578 } |
579 } | 579 } |
580 | 580 |
581 void ResourcePrefetchPredictor::RecordFirstContentfulPaint( | |
582 const NavigationID navigation_id) { | |
583 NavigationMap::iterator nav_it = | |
584 inflight_navigations_.find(navigation_id); | |
585 if (nav_it == inflight_navigations_.end()) return; | |
alexilin
2017/03/17 14:46:46
nit:
Return statement should occupy a separate lin
trevordixon
2017/03/27 12:30:08
Done.
| |
586 | |
587 for (auto& request_summary : nav_it->second->subresource_requests) { | |
588 request_summary.before_first_contentful_paint = true; | |
alexilin
2017/03/17 14:46:46
You can't assume that Observer gets an event at th
trevordixon
2017/03/27 12:30:08
Maybe fixed. How likely is it that OnFirstContentf
alexilin
2017/03/27 15:31:59
Well, it's definitely not rare for "fast" pages fo
| |
589 } | |
590 } | |
591 | |
592 | |
581 void ResourcePrefetchPredictor::StartPrefetching(const GURL& url, | 593 void ResourcePrefetchPredictor::StartPrefetching(const GURL& url, |
582 PrefetchOrigin origin) { | 594 PrefetchOrigin origin) { |
583 TRACE_EVENT1("browser", "ResourcePrefetchPredictor::StartPrefetching", "url", | 595 TRACE_EVENT1("browser", "ResourcePrefetchPredictor::StartPrefetching", "url", |
584 url.spec()); | 596 url.spec()); |
585 // Save prefetch start time to report prefetching duration. | 597 // Save prefetch start time to report prefetching duration. |
586 if (inflight_prefetches_.find(url) == inflight_prefetches_.end() && | 598 if (inflight_prefetches_.find(url) == inflight_prefetches_.end() && |
587 IsUrlPrefetchable(url)) { | 599 IsUrlPrefetchable(url)) { |
588 inflight_prefetches_.insert(std::make_pair(url, base::TimeTicks::Now())); | 600 inflight_prefetches_.insert(std::make_pair(url, base::TimeTicks::Now())); |
589 } | 601 } |
590 | 602 |
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1139 data.set_primary_key(key); | 1151 data.set_primary_key(key); |
1140 data.set_last_visit_time(base::Time::Now().ToInternalValue()); | 1152 data.set_last_visit_time(base::Time::Now().ToInternalValue()); |
1141 size_t new_resources_size = new_resources.size(); | 1153 size_t new_resources_size = new_resources.size(); |
1142 std::set<GURL> resources_seen; | 1154 std::set<GURL> resources_seen; |
1143 for (size_t i = 0; i < new_resources_size; ++i) { | 1155 for (size_t i = 0; i < new_resources_size; ++i) { |
1144 const URLRequestSummary& summary = new_resources[i]; | 1156 const URLRequestSummary& summary = new_resources[i]; |
1145 if (resources_seen.find(summary.resource_url) != resources_seen.end()) | 1157 if (resources_seen.find(summary.resource_url) != resources_seen.end()) |
1146 continue; | 1158 continue; |
1147 | 1159 |
1148 ResourceData* resource_to_add = data.add_resources(); | 1160 ResourceData* resource_to_add = data.add_resources(); |
1161 resource_to_add->set_before_first_contentful_paint( | |
1162 summary.before_first_contentful_paint); | |
1149 resource_to_add->set_resource_url(summary.resource_url.spec()); | 1163 resource_to_add->set_resource_url(summary.resource_url.spec()); |
1150 resource_to_add->set_resource_type( | 1164 resource_to_add->set_resource_type( |
1151 static_cast<ResourceData::ResourceType>(summary.resource_type)); | 1165 static_cast<ResourceData::ResourceType>(summary.resource_type)); |
1152 resource_to_add->set_number_of_hits(1); | 1166 resource_to_add->set_number_of_hits(1); |
1153 resource_to_add->set_average_position(i + 1); | 1167 resource_to_add->set_average_position(i + 1); |
1154 resource_to_add->set_priority( | 1168 resource_to_add->set_priority( |
1155 static_cast<ResourceData::Priority>(summary.priority)); | 1169 static_cast<ResourceData::Priority>(summary.priority)); |
1156 resource_to_add->set_has_validators(summary.has_validators); | 1170 resource_to_add->set_has_validators(summary.has_validators); |
1157 resource_to_add->set_always_revalidate(summary.always_revalidate); | 1171 resource_to_add->set_always_revalidate(summary.always_revalidate); |
1158 | 1172 |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1432 TestObserver::~TestObserver() { | 1446 TestObserver::~TestObserver() { |
1433 predictor_->SetObserverForTesting(nullptr); | 1447 predictor_->SetObserverForTesting(nullptr); |
1434 } | 1448 } |
1435 | 1449 |
1436 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor) | 1450 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor) |
1437 : predictor_(predictor) { | 1451 : predictor_(predictor) { |
1438 predictor_->SetObserverForTesting(this); | 1452 predictor_->SetObserverForTesting(this); |
1439 } | 1453 } |
1440 | 1454 |
1441 } // namespace predictors | 1455 } // namespace predictors |
OLD | NEW |