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

Side by Side Diff: chrome/browser/rlz/rlz.cc

Issue 220193005: Add RLZ Access points for the app launcher. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 6 years, 8 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
« no previous file with comments | « chrome/browser/rlz/rlz.h ('k') | chrome/browser/rlz/rlz_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // This code glues the RLZ library DLL with Chrome. It allows Chrome to work 5 // This code glues the RLZ library DLL with Chrome. It allows Chrome to work
6 // with or without the DLL being present. If the DLL is not present the 6 // with or without the DLL being present. If the DLL is not present the
7 // functions do nothing and just return false. 7 // functions do nothing and just return false.
8 8
9 #include "chrome/browser/rlz/rlz.h" 9 #include "chrome/browser/rlz/rlz.h"
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 bool IsBrandOrganic(const std::string& brand) { 66 bool IsBrandOrganic(const std::string& brand) {
67 return brand.empty() || google_util::IsOrganic(brand); 67 return brand.empty() || google_util::IsOrganic(brand);
68 } 68 }
69 69
70 void RecordProductEvents(bool first_run, 70 void RecordProductEvents(bool first_run,
71 bool is_google_default_search, 71 bool is_google_default_search,
72 bool is_google_homepage, 72 bool is_google_homepage,
73 bool is_google_in_startpages, 73 bool is_google_in_startpages,
74 bool already_ran, 74 bool already_ran,
75 bool omnibox_used, 75 bool omnibox_used,
76 bool homepage_used) { 76 bool homepage_used,
77 bool app_list_used) {
77 TRACE_EVENT0("RLZ", "RecordProductEvents"); 78 TRACE_EVENT0("RLZ", "RecordProductEvents");
78 // Record the installation of chrome. We call this all the time but the rlz 79 // Record the installation of chrome. We call this all the time but the rlz
79 // lib should ignore all but the first one. 80 // lib should ignore all but the first one.
80 rlz_lib::RecordProductEvent(rlz_lib::CHROME, 81 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
81 RLZTracker::CHROME_OMNIBOX, 82 RLZTracker::CHROME_OMNIBOX,
82 rlz_lib::INSTALL); 83 rlz_lib::INSTALL);
83 rlz_lib::RecordProductEvent(rlz_lib::CHROME, 84 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
84 RLZTracker::CHROME_HOME_PAGE, 85 RLZTracker::CHROME_HOME_PAGE,
85 rlz_lib::INSTALL); 86 rlz_lib::INSTALL);
87 #if !defined(OS_IOS)
88 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
89 RLZTracker::CHROME_APP_LIST,
90 rlz_lib::INSTALL);
91 #endif
86 92
87 if (!already_ran) { 93 if (!already_ran) {
88 // Do the initial event recording if is the first run or if we have an 94 // Do the initial event recording if is the first run or if we have an
89 // empty rlz which means we haven't got a chance to do it. 95 // empty rlz which means we haven't got a chance to do it.
90 char omnibox_rlz[rlz_lib::kMaxRlzLength + 1]; 96 char omnibox_rlz[rlz_lib::kMaxRlzLength + 1];
91 if (!rlz_lib::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, omnibox_rlz, 97 if (!rlz_lib::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, omnibox_rlz,
92 rlz_lib::kMaxRlzLength)) { 98 rlz_lib::kMaxRlzLength)) {
93 omnibox_rlz[0] = 0; 99 omnibox_rlz[0] = 0;
94 } 100 }
95 101
96 // Record if google is the initial search provider and/or home page. 102 // Record if google is the initial search provider and/or home page.
97 if ((first_run || omnibox_rlz[0] == 0) && is_google_default_search) { 103 if ((first_run || omnibox_rlz[0] == 0) && is_google_default_search) {
98 rlz_lib::RecordProductEvent(rlz_lib::CHROME, 104 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
99 RLZTracker::CHROME_OMNIBOX, 105 RLZTracker::CHROME_OMNIBOX,
100 rlz_lib::SET_TO_GOOGLE); 106 rlz_lib::SET_TO_GOOGLE);
101 } 107 }
102 108
103 char homepage_rlz[rlz_lib::kMaxRlzLength + 1]; 109 char homepage_rlz[rlz_lib::kMaxRlzLength + 1];
104 if (!rlz_lib::GetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, homepage_rlz, 110 if (!rlz_lib::GetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, homepage_rlz,
105 rlz_lib::kMaxRlzLength)) { 111 rlz_lib::kMaxRlzLength)) {
106 homepage_rlz[0] = 0; 112 homepage_rlz[0] = 0;
107 } 113 }
108 114
109 if ((first_run || homepage_rlz[0] == 0) && 115 if ((first_run || homepage_rlz[0] == 0) &&
110 (is_google_homepage || is_google_in_startpages)) { 116 (is_google_homepage || is_google_in_startpages)) {
111 rlz_lib::RecordProductEvent(rlz_lib::CHROME, 117 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
112 RLZTracker::CHROME_HOME_PAGE, 118 RLZTracker::CHROME_HOME_PAGE,
113 rlz_lib::SET_TO_GOOGLE); 119 rlz_lib::SET_TO_GOOGLE);
114 } 120 }
121
122 #if !defined(OS_IOS)
123 char app_list_rlz[rlz_lib::kMaxRlzLength + 1];
124 if (!rlz_lib::GetAccessPointRlz(RLZTracker::CHROME_APP_LIST, app_list_rlz,
125 rlz_lib::kMaxRlzLength)) {
126 app_list_rlz[0] = 0;
127 }
128
129 // Record if google is the initial search provider and/or home page.
130 if ((first_run || app_list_rlz[0] == 0) && is_google_default_search) {
131 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
132 RLZTracker::CHROME_APP_LIST,
133 rlz_lib::SET_TO_GOOGLE);
134 }
135 #endif
115 } 136 }
116 137
117 // Record first user interaction with the omnibox. We call this all the 138 // Record first user interaction with the omnibox. We call this all the
118 // time but the rlz lib should ingore all but the first one. 139 // time but the rlz lib should ingore all but the first one.
119 if (omnibox_used) { 140 if (omnibox_used) {
120 rlz_lib::RecordProductEvent(rlz_lib::CHROME, 141 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
121 RLZTracker::CHROME_OMNIBOX, 142 RLZTracker::CHROME_OMNIBOX,
122 rlz_lib::FIRST_SEARCH); 143 rlz_lib::FIRST_SEARCH);
123 } 144 }
124 145
125 // Record first user interaction with the home page. We call this all the 146 // Record first user interaction with the home page. We call this all the
126 // time but the rlz lib should ingore all but the first one. 147 // time but the rlz lib should ingore all but the first one.
127 if (homepage_used || is_google_in_startpages) { 148 if (homepage_used || is_google_in_startpages) {
128 rlz_lib::RecordProductEvent(rlz_lib::CHROME, 149 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
129 RLZTracker::CHROME_HOME_PAGE, 150 RLZTracker::CHROME_HOME_PAGE,
130 rlz_lib::FIRST_SEARCH); 151 rlz_lib::FIRST_SEARCH);
131 } 152 }
153
154 #if !defined(OS_IOS)
155 // Record first user interaction with the app list. We call this all the
156 // time but the rlz lib should ingore all but the first one.
157 if (app_list_used) {
158 rlz_lib::RecordProductEvent(rlz_lib::CHROME,
159 RLZTracker::CHROME_APP_LIST,
160 rlz_lib::FIRST_SEARCH);
161 }
162 #endif
132 } 163 }
133 164
134 bool SendFinancialPing(const std::string& brand, 165 bool SendFinancialPing(const std::string& brand,
135 const base::string16& lang, 166 const base::string16& lang,
136 const base::string16& referral) { 167 const base::string16& referral) {
137 rlz_lib::AccessPoint points[] = {RLZTracker::CHROME_OMNIBOX, 168 rlz_lib::AccessPoint points[] = {RLZTracker::CHROME_OMNIBOX,
138 RLZTracker::CHROME_HOME_PAGE, 169 RLZTracker::CHROME_HOME_PAGE,
170 #if !defined(OS_IOS)
171 RLZTracker::CHROME_APP_LIST,
172 #endif
139 rlz_lib::NO_ACCESS_POINT}; 173 rlz_lib::NO_ACCESS_POINT};
140 std::string lang_ascii(base::UTF16ToASCII(lang)); 174 std::string lang_ascii(base::UTF16ToASCII(lang));
141 std::string referral_ascii(base::UTF16ToASCII(referral)); 175 std::string referral_ascii(base::UTF16ToASCII(referral));
142 std::string product_signature; 176 std::string product_signature;
143 #if defined(OS_CHROMEOS) 177 #if defined(OS_CHROMEOS)
144 product_signature = "chromeos"; 178 product_signature = "chromeos";
145 #else 179 #else
146 product_signature = "chrome"; 180 product_signature = "chrome";
147 #endif 181 #endif
148 return rlz_lib::SendFinancialPing(rlz_lib::CHROME, points, 182 return rlz_lib::SendFinancialPing(rlz_lib::CHROME, points,
149 product_signature.c_str(), 183 product_signature.c_str(),
150 brand.c_str(), referral_ascii.c_str(), 184 brand.c_str(), referral_ascii.c_str(),
151 lang_ascii.c_str(), false, true); 185 lang_ascii.c_str(), false, true);
152 } 186 }
153 187
154 } // namespace 188 } // namespace
155 189
156 #if defined(OS_WIN) 190 #if defined(OS_WIN)
157 // static 191 // static
158 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX = 192 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX =
159 rlz_lib::CHROME_OMNIBOX; 193 rlz_lib::CHROME_OMNIBOX;
160 // static 194 // static
161 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE = 195 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE =
162 rlz_lib::CHROME_HOME_PAGE; 196 rlz_lib::CHROME_HOME_PAGE;
197 // static
198 const rlz_lib::AccessPoint RLZTracker::CHROME_APP_LIST =
199 rlz_lib::CHROME_APP_LIST;
163 #elif defined(OS_IOS) 200 #elif defined(OS_IOS)
164 // static 201 // static
165 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX = 202 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX =
166 rlz_lib::CHROME_IOS_OMNIBOX; 203 rlz_lib::CHROME_IOS_OMNIBOX;
167 // static 204 // static
168 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE = 205 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE =
169 rlz_lib::CHROME_IOS_HOME_PAGE; 206 rlz_lib::CHROME_IOS_HOME_PAGE;
170 #elif defined(OS_MACOSX) 207 #elif defined(OS_MACOSX)
171 // static 208 // static
172 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX = 209 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX =
173 rlz_lib::CHROME_MAC_OMNIBOX; 210 rlz_lib::CHROME_MAC_OMNIBOX;
174 // static 211 // static
175 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE = 212 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE =
176 rlz_lib::CHROME_MAC_HOME_PAGE; 213 rlz_lib::CHROME_MAC_HOME_PAGE;
214 // static
215 const rlz_lib::AccessPoint RLZTracker::CHROME_APP_LIST =
216 rlz_lib::CHROME_MAC_APP_LIST;
177 #elif defined(OS_CHROMEOS) 217 #elif defined(OS_CHROMEOS)
178 // static 218 // static
179 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX = 219 const rlz_lib::AccessPoint RLZTracker::CHROME_OMNIBOX =
180 rlz_lib::CHROMEOS_OMNIBOX; 220 rlz_lib::CHROMEOS_OMNIBOX;
181 // static 221 // static
182 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE = 222 const rlz_lib::AccessPoint RLZTracker::CHROME_HOME_PAGE =
183 rlz_lib::CHROMEOS_HOME_PAGE; 223 rlz_lib::CHROMEOS_HOME_PAGE;
224 // static
225 const rlz_lib::AccessPoint RLZTracker::CHROME_APP_LIST =
226 rlz_lib::CHROMEOS_APP_LIST;
184 #endif 227 #endif
185 228
186 RLZTracker* RLZTracker::tracker_ = NULL; 229 RLZTracker* RLZTracker::tracker_ = NULL;
187 230
188 // static 231 // static
189 RLZTracker* RLZTracker::GetInstance() { 232 RLZTracker* RLZTracker::GetInstance() {
190 return tracker_ ? tracker_ : Singleton<RLZTracker>::get(); 233 return tracker_ ? tracker_ : Singleton<RLZTracker>::get();
191 } 234 }
192 235
193 RLZTracker::RLZTracker() 236 RLZTracker::RLZTracker()
194 : first_run_(false), 237 : first_run_(false),
195 send_ping_immediately_(false), 238 send_ping_immediately_(false),
196 is_google_default_search_(false), 239 is_google_default_search_(false),
197 is_google_homepage_(false), 240 is_google_homepage_(false),
198 is_google_in_startpages_(false), 241 is_google_in_startpages_(false),
199 worker_pool_token_(BrowserThread::GetBlockingPool()->GetSequenceToken()), 242 worker_pool_token_(BrowserThread::GetBlockingPool()->GetSequenceToken()),
200 already_ran_(false), 243 already_ran_(false),
201 omnibox_used_(false), 244 omnibox_used_(false),
202 homepage_used_(false), 245 homepage_used_(false),
246 app_list_used_(false),
203 min_init_delay_(kMinInitDelay) { 247 min_init_delay_(kMinInitDelay) {
204 } 248 }
205 249
206 RLZTracker::~RLZTracker() { 250 RLZTracker::~RLZTracker() {
207 } 251 }
208 252
209 // static 253 // static
210 bool RLZTracker::InitRlzDelayed(bool first_run, 254 bool RLZTracker::InitRlzDelayed(bool first_run,
211 bool send_ping_immediately, 255 bool send_ping_immediately,
212 base::TimeDelta delay, 256 base::TimeDelta delay,
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 } 363 }
320 364
321 void RLZTracker::DelayedInit() { 365 void RLZTracker::DelayedInit() {
322 bool schedule_ping = false; 366 bool schedule_ping = false;
323 367
324 // For organic brandcodes do not use rlz at all. Empty brandcode usually 368 // For organic brandcodes do not use rlz at all. Empty brandcode usually
325 // means a chromium install. This is ok. 369 // means a chromium install. This is ok.
326 if (!IsBrandOrganic(brand_)) { 370 if (!IsBrandOrganic(brand_)) {
327 RecordProductEvents(first_run_, is_google_default_search_, 371 RecordProductEvents(first_run_, is_google_default_search_,
328 is_google_homepage_, is_google_in_startpages_, 372 is_google_homepage_, is_google_in_startpages_,
329 already_ran_, omnibox_used_, homepage_used_); 373 already_ran_, omnibox_used_, homepage_used_,
374 app_list_used_);
330 schedule_ping = true; 375 schedule_ping = true;
331 } 376 }
332 377
333 // If chrome has been reactivated, record the events for this brand 378 // If chrome has been reactivated, record the events for this brand
334 // as well. 379 // as well.
335 if (!IsBrandOrganic(reactivation_brand_)) { 380 if (!IsBrandOrganic(reactivation_brand_)) {
336 rlz_lib::SupplementaryBranding branding(reactivation_brand_.c_str()); 381 rlz_lib::SupplementaryBranding branding(reactivation_brand_.c_str());
337 RecordProductEvents(first_run_, is_google_default_search_, 382 RecordProductEvents(first_run_, is_google_default_search_,
338 is_google_homepage_, is_google_in_startpages_, 383 is_google_homepage_, is_google_in_startpages_,
339 already_ran_, omnibox_used_, homepage_used_); 384 already_ran_, omnibox_used_, homepage_used_,
385 app_list_used_);
340 schedule_ping = true; 386 schedule_ping = true;
341 } 387 }
342 388
343 already_ran_ = true; 389 already_ran_ = true;
344 390
345 if (schedule_ping) 391 if (schedule_ping)
346 ScheduleFinancialPing(); 392 ScheduleFinancialPing();
347 } 393 }
348 394
349 void RLZTracker::ScheduleFinancialPing() { 395 void RLZTracker::ScheduleFinancialPing() {
(...skipping 17 matching lines...) Expand all
367 GoogleUpdateSettings::ClearReferral(); 413 GoogleUpdateSettings::ClearReferral();
368 414
369 { 415 {
370 base::AutoLock lock(cache_lock_); 416 base::AutoLock lock(cache_lock_);
371 rlz_cache_.clear(); 417 rlz_cache_.clear();
372 } 418 }
373 419
374 // Prime the RLZ cache for the access points we are interested in. 420 // Prime the RLZ cache for the access points we are interested in.
375 GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, NULL); 421 GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, NULL);
376 GetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, NULL); 422 GetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, NULL);
423 #if !defined(OS_IOS)
424 GetAccessPointRlz(RLZTracker::CHROME_APP_LIST, NULL);
425 #endif
377 } 426 }
378 427
379 if (!IsBrandOrganic(reactivation_brand_)) { 428 if (!IsBrandOrganic(reactivation_brand_)) {
380 rlz_lib::SupplementaryBranding branding(reactivation_brand_.c_str()); 429 rlz_lib::SupplementaryBranding branding(reactivation_brand_.c_str());
381 SendFinancialPing(reactivation_brand_, lang, referral); 430 SendFinancialPing(reactivation_brand_, lang, referral);
382 } 431 }
383 } 432 }
384 433
385 bool RLZTracker::SendFinancialPing(const std::string& brand, 434 bool RLZTracker::SendFinancialPing(const std::string& brand,
386 const base::string16& lang, 435 const base::string16& lang,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 505
457 return true; 506 return true;
458 } 507 }
459 508
460 void RLZTracker::RecordFirstSearch(rlz_lib::AccessPoint point) { 509 void RLZTracker::RecordFirstSearch(rlz_lib::AccessPoint point) {
461 // Make sure we don't access disk outside of the I/O thread. 510 // Make sure we don't access disk outside of the I/O thread.
462 // In such case we repost the task on the right thread and return error. 511 // In such case we repost the task on the right thread and return error.
463 if (ScheduleRecordFirstSearch(point)) 512 if (ScheduleRecordFirstSearch(point))
464 return; 513 return;
465 514
466 bool* record_used = point == CHROME_OMNIBOX ? 515 bool* record_used = GetAccessPointRecord(point);
467 &omnibox_used_ : &homepage_used_;
468 516
469 // Try to record event now, else set the flag to try later when we 517 // Try to record event now, else set the flag to try later when we
470 // attempt the ping. 518 // attempt the ping.
471 if (!RecordProductEvent(rlz_lib::CHROME, point, rlz_lib::FIRST_SEARCH)) 519 if (!RecordProductEvent(rlz_lib::CHROME, point, rlz_lib::FIRST_SEARCH))
472 *record_used = true; 520 *record_used = true;
473 else if (send_ping_immediately_ && point == CHROME_OMNIBOX) 521 else if (send_ping_immediately_ && point == CHROME_OMNIBOX)
474 ScheduleDelayedInit(base::TimeDelta()); 522 ScheduleDelayedInit(base::TimeDelta());
475 } 523 }
476 524
477 bool RLZTracker::ScheduleRecordFirstSearch(rlz_lib::AccessPoint point) { 525 bool RLZTracker::ScheduleRecordFirstSearch(rlz_lib::AccessPoint point) {
478 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) 526 if (!BrowserThread::CurrentlyOn(BrowserThread::UI))
479 return false; 527 return false;
480 BrowserThread::GetBlockingPool()->PostSequencedWorkerTaskWithShutdownBehavior( 528 BrowserThread::GetBlockingPool()->PostSequencedWorkerTaskWithShutdownBehavior(
481 worker_pool_token_, 529 worker_pool_token_,
482 FROM_HERE, 530 FROM_HERE,
483 base::Bind(&RLZTracker::RecordFirstSearch, 531 base::Bind(&RLZTracker::RecordFirstSearch,
484 base::Unretained(this), point), 532 base::Unretained(this), point),
485 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); 533 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
486 return true; 534 return true;
487 } 535 }
488 536
537 bool* RLZTracker::GetAccessPointRecord(rlz_lib::AccessPoint point) {
538 if (point == CHROME_OMNIBOX)
539 return &omnibox_used_;
540 if (point == CHROME_HOME_PAGE)
541 return &homepage_used_;
542 #if !defined(OS_IOS)
543 if (point == CHROME_APP_LIST)
544 return &app_list_used_;
545 #endif
546 NOTREACHED();
547 return NULL;
548 }
549
489 // static 550 // static
490 std::string RLZTracker::GetAccessPointHttpHeader(rlz_lib::AccessPoint point) { 551 std::string RLZTracker::GetAccessPointHttpHeader(rlz_lib::AccessPoint point) {
491 TRACE_EVENT0("RLZ", "RLZTracker::GetAccessPointHttpHeader"); 552 TRACE_EVENT0("RLZ", "RLZTracker::GetAccessPointHttpHeader");
492 std::string extra_headers; 553 std::string extra_headers;
493 base::string16 rlz_string; 554 base::string16 rlz_string;
494 RLZTracker::GetAccessPointRlz(point, &rlz_string); 555 RLZTracker::GetAccessPointRlz(point, &rlz_string);
495 if (!rlz_string.empty()) { 556 if (!rlz_string.empty()) {
496 net::HttpUtil::AppendHeaderIfMissing("X-Rlz-String", 557 net::HttpUtil::AppendHeaderIfMissing("X-Rlz-String",
497 base::UTF16ToUTF8(rlz_string), 558 base::UTF16ToUTF8(rlz_string),
498 &extra_headers); 559 &extra_headers);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 void RLZTracker::CleanupRlz() { 647 void RLZTracker::CleanupRlz() {
587 GetInstance()->rlz_cache_.clear(); 648 GetInstance()->rlz_cache_.clear();
588 GetInstance()->registrar_.RemoveAll(); 649 GetInstance()->registrar_.RemoveAll();
589 rlz_lib::SetURLRequestContext(NULL); 650 rlz_lib::SetURLRequestContext(NULL);
590 } 651 }
591 652
592 // static 653 // static
593 void RLZTracker::EnableZeroDelayForTesting() { 654 void RLZTracker::EnableZeroDelayForTesting() {
594 GetInstance()->min_init_delay_ = base::TimeDelta(); 655 GetInstance()->min_init_delay_ = base::TimeDelta();
595 } 656 }
657
658 #if !defined(OS_IOS)
659 // static
660 void RLZTracker::RecordAppListSearch() {
661 GetInstance()->RecordFirstSearch(RLZTracker::CHROME_APP_LIST);
662 }
663 #endif
OLDNEW
« no previous file with comments | « chrome/browser/rlz/rlz.h ('k') | chrome/browser/rlz/rlz_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698