| OLD | NEW |
| 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/startup_metric_utils/browser/startup_metric_utils.h" | 5 #include "components/startup_metric_utils/browser/startup_metric_utils.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 if (WasNonBrowserUIDisplayed() || g_process_creation_ticks.Get().is_null()) | 713 if (WasNonBrowserUIDisplayed() || g_process_creation_ticks.Get().is_null()) |
| 714 return; | 714 return; |
| 715 | 715 |
| 716 base::StackSamplingProfiler::SetProcessMilestone( | 716 base::StackSamplingProfiler::SetProcessMilestone( |
| 717 metrics::CallStackProfileMetricsProvider::FIRST_NONEMPTY_PAINT); | 717 metrics::CallStackProfileMetricsProvider::FIRST_NONEMPTY_PAINT); |
| 718 UMA_HISTOGRAM_AND_TRACE_WITH_TEMPERATURE_AND_SAME_VERSION_COUNT( | 718 UMA_HISTOGRAM_AND_TRACE_WITH_TEMPERATURE_AND_SAME_VERSION_COUNT( |
| 719 UMA_HISTOGRAM_LONG_TIMES_100, "Startup.FirstWebContents.NonEmptyPaint2", | 719 UMA_HISTOGRAM_LONG_TIMES_100, "Startup.FirstWebContents.NonEmptyPaint2", |
| 720 g_process_creation_ticks.Get(), ticks); | 720 g_process_creation_ticks.Get(), ticks); |
| 721 } | 721 } |
| 722 | 722 |
| 723 void RecordFirstWebContentsMainNavigationStart(const base::TimeTicks& ticks) { | 723 void RecordFirstWebContentsMainNavigationStart(const base::TimeTicks& ticks, |
| 724 WebContentsWorkload workload) { |
| 724 static bool is_first_call = true; | 725 static bool is_first_call = true; |
| 725 if (!is_first_call || ticks.is_null()) | 726 if (!is_first_call || ticks.is_null()) |
| 726 return; | 727 return; |
| 727 is_first_call = false; | 728 is_first_call = false; |
| 728 if (WasNonBrowserUIDisplayed() || g_process_creation_ticks.Get().is_null()) | 729 if (WasNonBrowserUIDisplayed() || g_process_creation_ticks.Get().is_null()) |
| 729 return; | 730 return; |
| 730 | 731 |
| 731 base::StackSamplingProfiler::SetProcessMilestone( | 732 base::StackSamplingProfiler::SetProcessMilestone( |
| 732 metrics::CallStackProfileMetricsProvider::MAIN_NAVIGATION_START); | 733 metrics::CallStackProfileMetricsProvider::MAIN_NAVIGATION_START); |
| 733 UMA_HISTOGRAM_AND_TRACE_WITH_TEMPERATURE_AND_SAME_VERSION_COUNT( | 734 UMA_HISTOGRAM_AND_TRACE_WITH_TEMPERATURE_AND_SAME_VERSION_COUNT( |
| 734 UMA_HISTOGRAM_LONG_TIMES_100, | 735 UMA_HISTOGRAM_LONG_TIMES_100, |
| 735 "Startup.FirstWebContents.MainNavigationStart", | 736 "Startup.FirstWebContents.MainNavigationStart", |
| 736 g_process_creation_ticks.Get(), ticks); | 737 g_process_creation_ticks.Get(), ticks); |
| 738 |
| 739 // Log extra information about this startup's workload. Only added to this |
| 740 // histogram as this extra suffix can help making it less noisy but isn't |
| 741 // worth tripling the number of startup histograms either. |
| 742 if (workload == WebContentsWorkload::SINGLE_TAB) { |
| 743 UMA_HISTOGRAM_WITH_TEMPERATURE( |
| 744 UMA_HISTOGRAM_LONG_TIMES_100, |
| 745 "Startup.FirstWebContents.MainNavigationStart.SingleTab", |
| 746 ticks - g_process_creation_ticks.Get()); |
| 747 } else { |
| 748 UMA_HISTOGRAM_WITH_TEMPERATURE( |
| 749 UMA_HISTOGRAM_LONG_TIMES_100, |
| 750 "Startup.FirstWebContents.MainNavigationStart.MultiTabs", |
| 751 ticks - g_process_creation_ticks.Get()); |
| 752 } |
| 737 } | 753 } |
| 738 | 754 |
| 739 void RecordFirstWebContentsMainNavigationFinished( | 755 void RecordFirstWebContentsMainNavigationFinished( |
| 740 const base::TimeTicks& ticks) { | 756 const base::TimeTicks& ticks) { |
| 741 static bool is_first_call = true; | 757 static bool is_first_call = true; |
| 742 if (!is_first_call || ticks.is_null()) | 758 if (!is_first_call || ticks.is_null()) |
| 743 return; | 759 return; |
| 744 is_first_call = false; | 760 is_first_call = false; |
| 745 if (WasNonBrowserUIDisplayed() || g_process_creation_ticks.Get().is_null()) | 761 if (WasNonBrowserUIDisplayed() || g_process_creation_ticks.Get().is_null()) |
| 746 return; | 762 return; |
| 747 | 763 |
| 748 base::StackSamplingProfiler::SetProcessMilestone( | 764 base::StackSamplingProfiler::SetProcessMilestone( |
| 749 metrics::CallStackProfileMetricsProvider::MAIN_NAVIGATION_FINISHED); | 765 metrics::CallStackProfileMetricsProvider::MAIN_NAVIGATION_FINISHED); |
| 750 UMA_HISTOGRAM_AND_TRACE_WITH_TEMPERATURE_AND_SAME_VERSION_COUNT( | 766 UMA_HISTOGRAM_AND_TRACE_WITH_TEMPERATURE_AND_SAME_VERSION_COUNT( |
| 751 UMA_HISTOGRAM_LONG_TIMES_100, | 767 UMA_HISTOGRAM_LONG_TIMES_100, |
| 752 "Startup.FirstWebContents.MainNavigationFinished", | 768 "Startup.FirstWebContents.MainNavigationFinished", |
| 753 g_process_creation_ticks.Get(), ticks); | 769 g_process_creation_ticks.Get(), ticks); |
| 754 } | 770 } |
| 755 | 771 |
| 756 base::TimeTicks MainEntryPointTicks() { | 772 base::TimeTicks MainEntryPointTicks() { |
| 757 return g_browser_main_entry_point_ticks.Get(); | 773 return g_browser_main_entry_point_ticks.Get(); |
| 758 } | 774 } |
| 759 | 775 |
| 760 } // namespace startup_metric_utils | 776 } // namespace startup_metric_utils |
| OLD | NEW |