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

Side by Side Diff: chrome/browser/prerender/prerender_manager.cc

Issue 2754003006: Prerender: omnibox and instant field trial parameters. (Closed)
Patch Set: comments Created 3 years, 9 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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/prerender/prerender_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <functional> 10 #include <functional>
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 }; 159 };
160 160
161 PrerenderManagerObserver::~PrerenderManagerObserver() {} 161 PrerenderManagerObserver::~PrerenderManagerObserver() {}
162 162
163 // static 163 // static
164 int PrerenderManager::prerenders_per_session_count_ = 0; 164 int PrerenderManager::prerenders_per_session_count_ = 0;
165 165
166 // static 166 // static
167 PrerenderManager::PrerenderManagerMode PrerenderManager::mode_ = 167 PrerenderManager::PrerenderManagerMode PrerenderManager::mode_ =
168 PRERENDER_MODE_ENABLED; 168 PRERENDER_MODE_ENABLED;
169 PrerenderManager::PrerenderManagerMode PrerenderManager::instant_mode_ =
170 PRERENDER_MODE_ENABLED;
171 PrerenderManager::PrerenderManagerMode PrerenderManager::omnibox_mode_ =
172 PRERENDER_MODE_ENABLED;
169 173
170 struct PrerenderManager::NavigationRecord { 174 struct PrerenderManager::NavigationRecord {
171 NavigationRecord(const GURL& url, base::TimeTicks time, Origin origin) 175 NavigationRecord(const GURL& url, base::TimeTicks time, Origin origin)
172 : url(url), time(time), origin(origin) {} 176 : url(url), time(time), origin(origin) {}
173 177
174 GURL url; 178 GURL url;
175 base::TimeTicks time; 179 base::TimeTicks time;
176 Origin origin; 180 Origin origin;
177 }; 181 };
178 182
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 } 615 }
612 histograms_->RecordPerceivedFirstContentfulPaintStatus( 616 histograms_->RecordPerceivedFirstContentfulPaintStatus(
613 tab_helper->origin(), fcp_recorded, was_hidden); 617 tab_helper->origin(), fcp_recorded, was_hidden);
614 618
615 for (auto& observer : observers_) { 619 for (auto& observer : observers_) {
616 observer->OnFirstContentfulPaint(); 620 observer->OnFirstContentfulPaint();
617 } 621 }
618 } 622 }
619 623
620 // static 624 // static
621 PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode() { 625 PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode(
622 return mode_; 626 Origin origin) {
627 switch (origin) {
628 case ORIGIN_INSTANT:
629 return instant_mode_;
630 case ORIGIN_OMNIBOX:
631 return omnibox_mode_;
632 default:
633 return mode_;
634 }
623 } 635 }
624 636
625 // static 637 // static
626 void PrerenderManager::SetMode(PrerenderManagerMode mode) { 638 void PrerenderManager::SetMode(PrerenderManagerMode mode) {
627 mode_ = mode; 639 mode_ = mode;
628 } 640 }
629 641
630 // static 642 // static
631 bool PrerenderManager::IsPrerenderingPossible() { 643 void PrerenderManager::SetInstantMode(PrerenderManagerMode mode) {
632 return GetMode() != PRERENDER_MODE_DISABLED; 644 instant_mode_ = mode;
645 }
646
647 // static
648 void PrerenderManager::SetOmniboxMode(PrerenderManagerMode mode) {
649 omnibox_mode_ = mode;
650 }
651
652 // static
653 bool PrerenderManager::IsAnyPrerenderingPossible() {
654 return mode_ != PRERENDER_MODE_DISABLED ||
655 instant_mode_ != PRERENDER_MODE_DISABLED ||
656 omnibox_mode_ != PRERENDER_MODE_DISABLED;
633 } 657 }
634 658
635 // static 659 // static
636 bool PrerenderManager::IsNoStatePrefetch(Origin origin) { 660 bool PrerenderManager::IsNoStatePrefetch(Origin origin) {
637 return !IsPrerenderingForced(origin) && 661 return !IsPrerenderingForced(origin) &&
638 GetMode() == PRERENDER_MODE_NOSTATE_PREFETCH; 662 GetMode(origin) == PRERENDER_MODE_NOSTATE_PREFETCH;
639 } 663 }
640 664
641 // static 665 // static
642 bool PrerenderManager::IsSimpleLoadExperiment(Origin origin) { 666 bool PrerenderManager::IsSimpleLoadExperiment(Origin origin) {
643 return !IsPrerenderingForced(origin) && 667 return !IsPrerenderingForced(origin) &&
644 GetMode() == PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT; 668 GetMode(origin) == PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT;
645 } 669 }
646 670
647 bool PrerenderManager::IsWebContentsPrerendering( 671 bool PrerenderManager::IsWebContentsPrerendering(
648 const WebContents* web_contents, 672 const WebContents* web_contents,
649 Origin* origin) const { 673 Origin* origin) const {
650 DCHECK_CURRENTLY_ON(BrowserThread::UI); 674 DCHECK_CURRENTLY_ON(BrowserThread::UI);
651 PrerenderContents* prerender_contents = GetPrerenderContents(web_contents); 675 PrerenderContents* prerender_contents = GetPrerenderContents(web_contents);
652 if (!prerender_contents) 676 if (!prerender_contents)
653 return false; 677 return false;
654 678
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 PrerenderContents* prerender_contents = GetPrerenderContents(tab); 1343 PrerenderContents* prerender_contents = GetPrerenderContents(tab);
1320 if (!prerender_contents) 1344 if (!prerender_contents)
1321 return; 1345 return;
1322 1346
1323 prerender_contents->Destroy(FINAL_STATUS_CREATING_AUDIO_STREAM); 1347 prerender_contents->Destroy(FINAL_STATUS_CREATING_AUDIO_STREAM);
1324 } 1348 }
1325 1349
1326 void PrerenderManager::RecordNetworkBytes(Origin origin, 1350 void PrerenderManager::RecordNetworkBytes(Origin origin,
1327 bool used, 1351 bool used,
1328 int64_t prerender_bytes) { 1352 int64_t prerender_bytes) {
1329 if (!IsPrerenderingPossible()) 1353 if (!IsAnyPrerenderingPossible())
1330 return; 1354 return;
1331 int64_t recent_profile_bytes = 1355 int64_t recent_profile_bytes =
1332 profile_network_bytes_ - last_recorded_profile_network_bytes_; 1356 profile_network_bytes_ - last_recorded_profile_network_bytes_;
1333 last_recorded_profile_network_bytes_ = profile_network_bytes_; 1357 last_recorded_profile_network_bytes_ = profile_network_bytes_;
1334 DCHECK_GE(recent_profile_bytes, 0); 1358 DCHECK_GE(recent_profile_bytes, 0);
1335 histograms_->RecordNetworkBytes( 1359 histograms_->RecordNetworkBytes(
1336 origin, used, prerender_bytes, recent_profile_bytes); 1360 origin, used, prerender_bytes, recent_profile_bytes);
1337 } 1361 }
1338 1362
1339 bool PrerenderManager::IsPrerenderSilenceExperiment(Origin origin) const { 1363 bool PrerenderManager::IsPrerenderSilenceExperiment(Origin origin) const {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 if (origin == ORIGIN_EXTERNAL_REQUEST_FORCED_PRERENDER && 1423 if (origin == ORIGIN_EXTERNAL_REQUEST_FORCED_PRERENDER &&
1400 prediction_status == NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK) { 1424 prediction_status == NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK) {
1401 return NetworkPredictionStatus::ENABLED; 1425 return NetworkPredictionStatus::ENABLED;
1402 } 1426 }
1403 return prediction_status; 1427 return prediction_status;
1404 } 1428 }
1405 1429
1406 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64_t bytes) { 1430 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64_t bytes) {
1407 DCHECK_GE(bytes, 0); 1431 DCHECK_GE(bytes, 0);
1408 if (GetPredictionStatus() == NetworkPredictionStatus::ENABLED && 1432 if (GetPredictionStatus() == NetworkPredictionStatus::ENABLED &&
1409 IsPrerenderingPossible()) 1433 IsAnyPrerenderingPossible())
1410 profile_network_bytes_ += bytes; 1434 profile_network_bytes_ += bytes;
1411 } 1435 }
1412 1436
1413 void PrerenderManager::AddPrerenderProcessHost( 1437 void PrerenderManager::AddPrerenderProcessHost(
1414 content::RenderProcessHost* process_host) { 1438 content::RenderProcessHost* process_host) {
1415 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1439 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1416 DCHECK(prerender_process_hosts_.find(process_host) == 1440 DCHECK(prerender_process_hosts_.find(process_host) ==
1417 prerender_process_hosts_.end()); 1441 prerender_process_hosts_.end());
1418 prerender_process_hosts_.insert(process_host); 1442 prerender_process_hosts_.insert(process_host);
1419 process_host->AddObserver(this); 1443 process_host->AddObserver(this);
(...skipping 19 matching lines...) Expand all
1439 return weak_factory_.GetWeakPtr(); 1463 return weak_factory_.GetWeakPtr();
1440 } 1464 }
1441 1465
1442 void PrerenderManager::SetPrerenderContentsFactoryForTest( 1466 void PrerenderManager::SetPrerenderContentsFactoryForTest(
1443 PrerenderContents::Factory* prerender_contents_factory) { 1467 PrerenderContents::Factory* prerender_contents_factory) {
1444 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1468 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1445 prerender_contents_factory_.reset(prerender_contents_factory); 1469 prerender_contents_factory_.reset(prerender_contents_factory);
1446 } 1470 }
1447 1471
1448 } // namespace prerender 1472 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.h ('k') | chrome/browser/prerender/prerender_manager_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698