Commit 782b9d89 authored by Collin Baker's avatar Collin Baker Committed by Commit Bot

Record browser window widths

Bug: 1100596
Change-Id: I64212babff827e76f0f614ad375fc690a3d6db30
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2533835
Commit-Queue: Collin Baker <collinbaker@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Reviewed-by: default avatarWeilun Shi <sweilun@chromium.org>
Cr-Commit-Position: refs/heads/master@{#827056}
parent 0feebc2e
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "chrome/browser/resource_coordinator/tab_manager.h" #include "chrome/browser/resource_coordinator/tab_manager.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/buildflags.h" #include "chrome/common/buildflags.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
...@@ -32,6 +33,8 @@ ...@@ -32,6 +33,8 @@
#include "components/ukm/content/source_url_recorder.h" #include "components/ukm/content/source_url_recorder.h"
#include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_source_id.h" #include "services/metrics/public/cpp/ukm_source_id.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
#if BUILDFLAG(ENABLE_BACKGROUND_MODE) #if BUILDFLAG(ENABLE_BACKGROUND_MODE)
#include "chrome/browser/background/background_mode_manager.h" #include "chrome/browser/background/background_mode_manager.h"
...@@ -108,6 +111,10 @@ const char ...@@ -108,6 +111,10 @@ const char
TabStatsTracker::UmaStatsReportingDelegate::kWindowCountHistogramName[] = TabStatsTracker::UmaStatsReportingDelegate::kWindowCountHistogramName[] =
"Tabs.WindowCount"; "Tabs.WindowCount";
const char
TabStatsTracker::UmaStatsReportingDelegate::kWindowWidthHistogramName[] =
"Tabs.WindowWidth";
const TabStatsDataStore::TabsStats& TabStatsTracker::tab_stats() const { const TabStatsDataStore::TabsStats& TabStatsTracker::tab_stats() const {
return tab_stats_data_store_->tab_stats(); return tab_stats_data_store_->tab_stats();
} }
...@@ -396,6 +403,33 @@ void TabStatsTracker::UmaStatsReportingDelegate::ReportHeartbeatMetrics( ...@@ -396,6 +403,33 @@ void TabStatsTracker::UmaStatsReportingDelegate::ReportHeartbeatMetrics(
UMA_HISTOGRAM_COUNTS_10000(kTabCountHistogramName, tab_stats.total_tab_count); UMA_HISTOGRAM_COUNTS_10000(kTabCountHistogramName, tab_stats.total_tab_count);
UMA_HISTOGRAM_COUNTS_10000(kWindowCountHistogramName, tab_stats.window_count); UMA_HISTOGRAM_COUNTS_10000(kWindowCountHistogramName, tab_stats.window_count);
// Record the width of all open browser windows with tabs.
for (Browser* browser : *BrowserList::GetInstance()) {
if (browser->type() != Browser::TYPE_NORMAL)
continue;
const BrowserWindow* window = browser->window();
// Only consider visible windows.
if (!window->IsVisible() || window->IsMinimized())
continue;
// Get the window's size (in DIPs).
const gfx::Size window_size = browser->window()->GetBounds().size();
// If the size is for some reason 0 in either dimension, skip it.
if (window_size.IsEmpty())
continue;
// A 4K screen is 4096 pixels wide. Doubling this and rounding up to
// 10000 should give a reasonable upper bound on DIPs. For the
// minimum width, pick an arbitrary value of 100. Most screens are
// unlikely to be this small, and likewise a browser window's min
// width is around this size.
UMA_HISTOGRAM_CUSTOM_COUNTS(kWindowWidthHistogramName, window_size.width(),
100, 10000, 50);
}
} }
void TabStatsTracker::UmaStatsReportingDelegate::ReportUsageDuringInterval( void TabStatsTracker::UmaStatsReportingDelegate::ReportUsageDuringInterval(
......
...@@ -243,6 +243,9 @@ class TabStatsTracker::UmaStatsReportingDelegate { ...@@ -243,6 +243,9 @@ class TabStatsTracker::UmaStatsReportingDelegate {
static const char kTabCountHistogramName[]; static const char kTabCountHistogramName[];
static const char kWindowCountHistogramName[]; static const char kWindowCountHistogramName[];
// The name of the histogram that records each window's width, in DIPs.
static const char kWindowWidthHistogramName[];
UmaStatsReportingDelegate() {} UmaStatsReportingDelegate() {}
virtual ~UmaStatsReportingDelegate() {} virtual ~UmaStatsReportingDelegate() {}
......
...@@ -2481,6 +2481,15 @@ reviews. Googlers can read more about this at go/gwsq-gerrit. ...@@ -2481,6 +2481,15 @@ reviews. Googlers can read more about this at go/gwsq-gerrit.
</summary> </summary>
</histogram> </histogram>
<histogram name="Tabs.WindowWidth" units="DIPs" expires_after="M91">
<owner>collinbaker@chromium.org</owner>
<owner>chrome-desktop-ui-sea@google.com</owner>
<summary>
The width of each open browser window, in DIPs, reported every 5 minutes.
Desktop only.
</summary>
</histogram>
<histogram name="TabStrip.PaintChildrenDuration" units="microseconds" <histogram name="TabStrip.PaintChildrenDuration" units="microseconds"
expires_after="M80"> expires_after="M80">
<owner>collinbaker@chromium.org</owner> <owner>collinbaker@chromium.org</owner>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment