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

Side by Side Diff: components/precache/content/precache_manager.cc

Issue 2562573003: Create a synthetic field trial for precache (Closed)
Patch Set: Created 4 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/precache/content/precache_manager.h" 5 #include "components/precache/content/precache_manager.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 size_t NumTopHosts() { 45 size_t NumTopHosts() {
46 return kNumTopHosts; 46 return kNumTopHosts;
47 } 47 }
48 48
49 PrecacheManager::PrecacheManager( 49 PrecacheManager::PrecacheManager(
50 content::BrowserContext* browser_context, 50 content::BrowserContext* browser_context,
51 const syncer::SyncService* const sync_service, 51 const syncer::SyncService* const sync_service,
52 const history::HistoryService* const history_service, 52 const history::HistoryService* const history_service,
53 const base::FilePath& db_path, 53 const base::FilePath& db_path,
54 std::unique_ptr<PrecacheDatabase> precache_database) 54 std::unique_ptr<PrecacheDatabase> precache_database,
55 const base::Callback<void(const base::Time&)>&
56 register_synthetic_field_trial_callback)
55 : browser_context_(browser_context), 57 : browser_context_(browser_context),
56 sync_service_(sync_service), 58 sync_service_(sync_service),
57 history_service_(history_service), 59 history_service_(history_service),
58 is_precaching_(false) { 60 is_precaching_(false),
61 register_synthetic_field_trial_callback_(
62 register_synthetic_field_trial_callback) {
59 precache_database_ = std::move(precache_database); 63 precache_database_ = std::move(precache_database);
60 BrowserThread::PostTask( 64 BrowserThread::PostTask(
61 BrowserThread::DB, FROM_HERE, 65 BrowserThread::DB, FROM_HERE,
62 base::Bind(base::IgnoreResult(&PrecacheDatabase::Init), 66 base::Bind(base::IgnoreResult(&PrecacheDatabase::Init),
63 base::Unretained(precache_database_.get()), db_path)); 67 base::Unretained(precache_database_.get()), db_path));
68 BrowserThread::PostTaskAndReplyWithResult(
twifkak 2016/12/08 21:49:22 Good idea, sticking it in the PrecacheManager cons
69 BrowserThread::DB, FROM_HERE,
70 base::Bind(&PrecacheDatabase::GetLastPrecacheTimestamp,
71 base::Unretained(precache_database_.get())),
72 base::Bind(&PrecacheManager::RegisterSyntheticFieldTrial, AsWeakPtr()));
64 } 73 }
65 74
66 PrecacheManager::~PrecacheManager() { 75 PrecacheManager::~PrecacheManager() {
67 // DeleteSoon posts a non-nestable task to the task runner, so any previously 76 // DeleteSoon posts a non-nestable task to the task runner, so any previously
68 // posted tasks that rely on an Unretained precache_database_ will finish 77 // posted tasks that rely on an Unretained precache_database_ will finish
69 // before it is deleted. 78 // before it is deleted.
70 BrowserThread::DeleteSoon(BrowserThread::DB, FROM_HERE, 79 BrowserThread::DeleteSoon(BrowserThread::DB, FROM_HERE,
71 precache_database_.release()); 80 precache_database_.release());
72 } 81 }
73 82
83 void PrecacheManager::RegisterSyntheticFieldTrial(
84 const base::Time& last_precache_time) {
85 register_synthetic_field_trial_callback_.Run(last_precache_time);
86 }
87
74 bool PrecacheManager::IsInExperimentGroup() const { 88 bool PrecacheManager::IsInExperimentGroup() const {
75 // Verify IsPrecachingAllowed() before calling FieldTrialList::FindFullName(). 89 // Verify IsPrecachingAllowed() before calling FieldTrialList::FindFullName().
76 // This is because field trials are only assigned when requested. This allows 90 // This is because field trials are only assigned when requested. This allows
77 // us to create Control and Experiment groups that are limited to users for 91 // us to create Control and Experiment groups that are limited to users for
78 // whom PrecachingAllowed() is true, thus accentuating the impact of 92 // whom PrecachingAllowed() is true, thus accentuating the impact of
79 // precaching. 93 // precaching.
80 return IsPrecachingAllowed() && 94 return IsPrecachingAllowed() &&
81 (base::StartsWith( 95 (base::StartsWith(
82 base::FieldTrialList::FindFullName(kPrecacheFieldTrialName), 96 base::FieldTrialList::FindFullName(kPrecacheFieldTrialName),
83 kPrecacheFieldTrialEnabledGroup, base::CompareCase::SENSITIVE) || 97 kPrecacheFieldTrialEnabledGroup, base::CompareCase::SENSITIVE) ||
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 this)); 369 this));
356 precache_fetcher_->Start(); 370 precache_fetcher_->Start();
357 } 371 }
358 372
359 void PrecacheManager::OnHostsReceivedThenDone( 373 void PrecacheManager::OnHostsReceivedThenDone(
360 const history::TopHostsList& host_counts) { 374 const history::TopHostsList& host_counts) {
361 OnDone(); 375 OnDone();
362 } 376 }
363 377
364 } // namespace precache 378 } // namespace precache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698