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

Side by Side Diff: chrome/browser/metrics/perf_provider_chromeos.cc

Issue 902613003: Record the number of tabs in a session restore in SampledProfile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add more detailed description of meaning of num tabs, given by sky Created 5 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 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 <string> 5 #include <string>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 base::TimeDelta::FromMilliseconds( 203 base::TimeDelta::FromMilliseconds(
204 base::RandGenerator(kMaxResumeCollectionDelayMs)); 204 base::RandGenerator(kMaxResumeCollectionDelayMs));
205 timer_.Start(FROM_HERE, 205 timer_.Start(FROM_HERE,
206 collection_delay, 206 collection_delay,
207 base::Bind(&PerfProvider::CollectPerfDataAfterResume, 207 base::Bind(&PerfProvider::CollectPerfDataAfterResume,
208 weak_factory_.GetWeakPtr(), 208 weak_factory_.GetWeakPtr(),
209 sleep_duration, 209 sleep_duration,
210 collection_delay)); 210 collection_delay));
211 } 211 }
212 212
213 void PerfProvider::OnSessionRestoreDone() { 213 void PerfProvider::OnSessionRestoreDone(int num_tabs_restored) {
214 // Do not collect a profile unless logged in as a normal user. 214 // Do not collect a profile unless logged in as a normal user.
215 if (!IsNormalUserLoggedIn()) 215 if (!IsNormalUserLoggedIn())
216 return; 216 return;
217 217
218 // Collect a profile only 1/|kRestoreSessionSamplingFactor| of the time, to 218 // Collect a profile only 1/|kRestoreSessionSamplingFactor| of the time, to
219 // avoid collecting too much data and potentially causing UI latency. 219 // avoid collecting too much data and potentially causing UI latency.
220 if (base::RandGenerator(kRestoreSessionSamplingFactor) != 0) 220 if (base::RandGenerator(kRestoreSessionSamplingFactor) != 0)
221 return; 221 return;
222 222
223 const base::TimeDelta min_interval = 223 const base::TimeDelta min_interval =
(...skipping 14 matching lines...) Expand all
238 238
239 // Randomly pick a delay before doing the collection. 239 // Randomly pick a delay before doing the collection.
240 base::TimeDelta collection_delay = 240 base::TimeDelta collection_delay =
241 base::TimeDelta::FromMilliseconds( 241 base::TimeDelta::FromMilliseconds(
242 base::RandGenerator(kMaxRestoreSessionCollectionDelayMs)); 242 base::RandGenerator(kMaxRestoreSessionCollectionDelayMs));
243 timer_.Start( 243 timer_.Start(
244 FROM_HERE, 244 FROM_HERE,
245 collection_delay, 245 collection_delay,
246 base::Bind(&PerfProvider::CollectPerfDataAfterSessionRestore, 246 base::Bind(&PerfProvider::CollectPerfDataAfterSessionRestore,
247 weak_factory_.GetWeakPtr(), 247 weak_factory_.GetWeakPtr(),
248 collection_delay)); 248 collection_delay,
249 num_tabs_restored));
249 } 250 }
250 251
251 void PerfProvider::OnUserLoggedIn() { 252 void PerfProvider::OnUserLoggedIn() {
252 login_time_ = base::TimeTicks::Now(); 253 login_time_ = base::TimeTicks::Now();
253 ScheduleIntervalCollection(); 254 ScheduleIntervalCollection();
254 } 255 }
255 256
256 void PerfProvider::Deactivate() { 257 void PerfProvider::Deactivate() {
257 // Stop the timer, but leave |cached_perf_data_| intact. 258 // Stop the timer, but leave |cached_perf_data_| intact.
258 timer_.Stop(); 259 timer_.Stop();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // Fill out a SampledProfile protobuf that will contain the collected data. 341 // Fill out a SampledProfile protobuf that will contain the collected data.
341 scoped_ptr<SampledProfile> sampled_profile(new SampledProfile); 342 scoped_ptr<SampledProfile> sampled_profile(new SampledProfile);
342 sampled_profile->set_trigger_event(SampledProfile::RESUME_FROM_SUSPEND); 343 sampled_profile->set_trigger_event(SampledProfile::RESUME_FROM_SUSPEND);
343 sampled_profile->set_suspend_duration_ms(sleep_duration.InMilliseconds()); 344 sampled_profile->set_suspend_duration_ms(sleep_duration.InMilliseconds());
344 sampled_profile->set_ms_after_resume(time_after_resume.InMilliseconds()); 345 sampled_profile->set_ms_after_resume(time_after_resume.InMilliseconds());
345 346
346 CollectIfNecessary(sampled_profile.Pass()); 347 CollectIfNecessary(sampled_profile.Pass());
347 } 348 }
348 349
349 void PerfProvider::CollectPerfDataAfterSessionRestore( 350 void PerfProvider::CollectPerfDataAfterSessionRestore(
350 const base::TimeDelta& time_after_restore) { 351 const base::TimeDelta& time_after_restore,
352 int num_tabs_restored) {
351 // Fill out a SampledProfile protobuf that will contain the collected data. 353 // Fill out a SampledProfile protobuf that will contain the collected data.
352 scoped_ptr<SampledProfile> sampled_profile(new SampledProfile); 354 scoped_ptr<SampledProfile> sampled_profile(new SampledProfile);
353 sampled_profile->set_trigger_event(SampledProfile::RESTORE_SESSION); 355 sampled_profile->set_trigger_event(SampledProfile::RESTORE_SESSION);
354 sampled_profile->set_ms_after_restore(time_after_restore.InMilliseconds()); 356 sampled_profile->set_ms_after_restore(time_after_restore.InMilliseconds());
357 sampled_profile->set_num_tabs_restored(num_tabs_restored);
355 358
356 CollectIfNecessary(sampled_profile.Pass()); 359 CollectIfNecessary(sampled_profile.Pass());
357 last_session_restore_collection_time_ = base::TimeTicks::Now(); 360 last_session_restore_collection_time_ = base::TimeTicks::Now();
358 } 361 }
359 362
360 void PerfProvider::ParseProtoIfValid( 363 void PerfProvider::ParseProtoIfValid(
361 scoped_ptr<WindowedIncognitoObserver> incognito_observer, 364 scoped_ptr<WindowedIncognitoObserver> incognito_observer,
362 scoped_ptr<SampledProfile> sampled_profile, 365 scoped_ptr<SampledProfile> sampled_profile,
363 const std::vector<uint8>& data) { 366 const std::vector<uint8>& data) {
364 DCHECK(CalledOnValidThread()); 367 DCHECK(CalledOnValidThread());
(...skipping 22 matching lines...) Expand all
387 DCHECK(!login_time_.is_null()); 390 DCHECK(!login_time_.is_null());
388 collection_data. 391 collection_data.
389 set_ms_after_login((base::TimeTicks::Now() - login_time_) 392 set_ms_after_login((base::TimeTicks::Now() - login_time_)
390 .InMilliseconds()); 393 .InMilliseconds());
391 394
392 // Finally, store the perf data itself. 395 // Finally, store the perf data itself.
393 collection_data.mutable_perf_data()->Swap(&perf_data_proto); 396 collection_data.mutable_perf_data()->Swap(&perf_data_proto);
394 } 397 }
395 398
396 } // namespace metrics 399 } // namespace metrics
OLDNEW
« no previous file with comments | « chrome/browser/metrics/perf_provider_chromeos.h ('k') | chrome/browser/sessions/session_restore.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698