Index: chrome/browser/metrics/first_web_contents_profiler.cc |
diff --git a/chrome/browser/metrics/first_web_contents_profiler.cc b/chrome/browser/metrics/first_web_contents_profiler.cc |
index cbeef39cf1b5e766fcf462c49547889be281e623..1b3a68006a21595a9f055713b3da53160c4dc38a 100644 |
--- a/chrome/browser/metrics/first_web_contents_profiler.cc |
+++ b/chrome/browser/metrics/first_web_contents_profiler.cc |
@@ -11,9 +11,6 @@ |
#include "base/location.h" |
#include "base/logging.h" |
#include "base/metrics/histogram_macros.h" |
-#include "base/process/process_info.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/thread_task_runner_handle.h" |
#include "base/time/time.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_iterator.h" |
@@ -21,83 +18,8 @@ |
#include "components/metrics/profiler/tracking_synchronizer.h" |
#include "components/metrics/proto/profiler_event.pb.h" |
#include "components/startup_metric_utils/startup_metric_utils.h" |
-#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/navigation_handle.h" |
-namespace { |
- |
-// The initial delay for responsiveness prober in milliseconds. |
-const int kInitialDelayMs = 20; |
- |
-// The following is the multiplier is used to delay the probe for |
-// responsiveness. |
-const double kBackoffMultiplier = 1.5; |
- |
-// The maximum backoff delay in milliseconds. |
-const int kMaxDelayMs = 250; |
- |
-void DelayedRecordUIResponsiveness( |
- base::HistogramBase* responsiveness_histogram, |
- base::HistogramBase* unresponsiveness_histogram, |
- base::Time start_recording_time, |
- base::TimeDelta next_task_delay); |
- |
-// Records the elapsed time for a task to execute a UI task under 1/60s after |
-// the first WebContent was painted at least once. If after few tries it is |
-// unable to execute under 1/60s it records the execution time of a task. |
-void RecordUIResponsiveness(base::HistogramBase* responsiveness_histogram, |
- base::HistogramBase* unresponsiveness_histogram, |
- base::Time start_recording_time, |
- base::Time task_posted_time, |
- base::TimeDelta next_task_delay) { |
- DCHECK(!start_recording_time.is_null()); |
- DCHECK(!task_posted_time.is_null()); |
- base::Time now = base::Time::Now(); |
- base::TimeDelta elapsed = now - task_posted_time; |
- |
- // Task executed in less then 1/60s. |
- if (elapsed.InMilliseconds() <= (1000 / 60)) { |
- responsiveness_histogram->AddTime(now - start_recording_time); |
- } else if (next_task_delay.InMilliseconds() > kMaxDelayMs) { |
- // Records elapsed time to execute last task. |
- unresponsiveness_histogram->AddTime(elapsed); |
- } else { |
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&DelayedRecordUIResponsiveness, responsiveness_histogram, |
- unresponsiveness_histogram, start_recording_time, |
- next_task_delay * kBackoffMultiplier), |
- next_task_delay); |
- } |
-} |
- |
-// Used for posting |RecordUIResponsiveness| without delay, so that |
-// |RecordUIResponsiveness| can do more accurate time calculation for elapsed |
-// time of the task to complete. |
-void DelayedRecordUIResponsiveness( |
- base::HistogramBase* responsiveness_histogram, |
- base::HistogramBase* unresponsiveness_histogram, |
- base::Time start_recording_time, |
- base::TimeDelta next_task_delay) { |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(&RecordUIResponsiveness, responsiveness_histogram, |
- unresponsiveness_histogram, start_recording_time, |
- base::Time::Now(), next_task_delay)); |
-} |
- |
-// Sends the first task for measuring UI Responsiveness. |
-void MeasureUIResponsiveness(base::HistogramBase* responsiveness_histogram, |
- base::HistogramBase* unresponsiveness_histogram) { |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, |
- base::Bind(&RecordUIResponsiveness, responsiveness_histogram, |
- unresponsiveness_histogram, base::Time::Now(), |
- base::Time::Now(), |
- base::TimeDelta::FromMilliseconds(kInitialDelayMs))); |
-} |
- |
-} // namespace |
- |
scoped_ptr<FirstWebContentsProfiler> |
FirstWebContentsProfiler::CreateProfilerForFirstWebContents( |
Delegate* delegate) { |
@@ -123,15 +45,7 @@ FirstWebContentsProfiler::FirstWebContentsProfiler( |
collected_main_navigation_start_metric_(false), |
collected_main_navigation_finished_metric_(false), |
finished_(false), |
- delegate_(delegate), |
- responsiveness_histogram_(NULL), |
- responsiveness_1sec_histogram_(NULL), |
- responsiveness_10sec_histogram_(NULL), |
- unresponsiveness_histogram_(NULL), |
- unresponsiveness_1sec_histogram_(NULL), |
- unresponsiveness_10sec_histogram_(NULL) { |
- InitHistograms(); |
-} |
+ delegate_(delegate) {} |
void FirstWebContentsProfiler::DidFirstVisuallyNonEmptyPaint() { |
if (collected_paint_metric_) |
@@ -151,26 +65,6 @@ void FirstWebContentsProfiler::DidFirstVisuallyNonEmptyPaint() { |
metrics::TrackingSynchronizer::OnProfilingPhaseCompleted( |
metrics::ProfilerEventProto::EVENT_FIRST_NONEMPTY_PAINT); |
- // Measures responsiveness now. |
- MeasureUIResponsiveness(responsiveness_histogram_, |
- unresponsiveness_histogram_); |
- |
- // As it was observed that sometimes the task queue can be free immediately |
- // after the first paint but get overloaded shortly thereafter, here we |
- // measures responsiveness after 1 second and 10 seconds to observe the |
- // possible effect of those late tasks. |
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&MeasureUIResponsiveness, responsiveness_1sec_histogram_, |
- unresponsiveness_1sec_histogram_), |
- base::TimeDelta::FromSeconds(1)); |
- |
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&MeasureUIResponsiveness, responsiveness_10sec_histogram_, |
- unresponsiveness_10sec_histogram_), |
- base::TimeDelta::FromSeconds(10)); |
- |
if (IsFinishedCollectingMetrics()) |
FinishedCollectingMetrics(FinishReason::DONE); |
} |
@@ -281,47 +175,4 @@ void FirstWebContentsProfiler::FinishedCollectingMetrics( |
delegate_->ProfilerFinishedCollectingMetrics(); |
} |
-void FirstWebContentsProfiler::InitHistograms() { |
- const std::string responsiveness_histogram_name = |
- "Startup.FirstWebContents.UIResponsive"; |
- responsiveness_histogram_ = base::Histogram::FactoryTimeGet( |
- responsiveness_histogram_name, base::TimeDelta::FromMilliseconds(1), |
- base::TimeDelta::FromSeconds(60), 100, |
- base::Histogram::kUmaTargetedHistogramFlag); |
- |
- const std::string responsiveness_1sec_histogram_name = |
- "Startup.FirstWebContents.UIResponsive_1sec"; |
- responsiveness_1sec_histogram_ = base::Histogram::FactoryTimeGet( |
- responsiveness_1sec_histogram_name, base::TimeDelta::FromMilliseconds(1), |
- base::TimeDelta::FromSeconds(60), 100, |
- base::Histogram::kUmaTargetedHistogramFlag); |
- |
- const std::string responsiveness_10sec_histogram_name = |
- "Startup.FirstWebContents.UIResponsive_10sec"; |
- responsiveness_10sec_histogram_ = base::Histogram::FactoryTimeGet( |
- responsiveness_10sec_histogram_name, base::TimeDelta::FromMilliseconds(1), |
- base::TimeDelta::FromSeconds(60), 100, |
- base::Histogram::kUmaTargetedHistogramFlag); |
- |
- const std::string unresponsiveness_histogram_name = |
- "Startup.FirstWebContents.UINotResponsive"; |
- unresponsiveness_histogram_ = base::Histogram::FactoryTimeGet( |
- unresponsiveness_histogram_name, base::TimeDelta::FromMilliseconds(1), |
- base::TimeDelta::FromSeconds(60), 100, |
- base::Histogram::kUmaTargetedHistogramFlag); |
- |
- const std::string unresponsiveness_1sec_histogram_name = |
- "Startup.FirstWebContents.UINotResponsive_1sec"; |
- unresponsiveness_1sec_histogram_ = base::Histogram::FactoryTimeGet( |
- unresponsiveness_1sec_histogram_name, |
- base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(60), |
- 100, base::Histogram::kUmaTargetedHistogramFlag); |
- |
- const std::string unresponsiveness_10sec_histogram_name = |
- "Startup.FirstWebContents.UINotResponsive_10sec"; |
- unresponsiveness_10sec_histogram_ = base::Histogram::FactoryTimeGet( |
- unresponsiveness_10sec_histogram_name, |
- base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(60), |
- 100, base::Histogram::kUmaTargetedHistogramFlag); |
-} |
#endif // !defined(OS_ANDROID) |