blob: 4812ff95a8ef26264f9e754e26f38ad6759910ee [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/metrics/tab_stats_tracker.h"
#include "base/metrics/histogram_macros.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_window.h"
namespace metrics {
void TabStatsTracker::CalculateAndRecordNativeWindowVisibilities() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
BrowserList* browser_list = BrowserList::GetInstance();
std::vector<aura::WindowTreeHost*> hosts;
hosts.reserve(browser_list->size());
// Get the aura::WindowTreeHost for each Chrome browser.
for (Browser* browser : *browser_list) {
aura::WindowTreeHost* host =
browser->window()->GetNativeWindow()->GetHost();
hosts.push_back(host);
}
// Compute native window occlusion if not using mock occlusion results.
TabStatsTrackerDelegate::OcclusionStatusMap native_window_visibilities =
delegate_->CallComputeNativeWindowOcclusionStatus(hosts);
size_t num_occluded = 0;
size_t num_visible = 0;
size_t num_hidden = 0;
// Determine the number of Chrome browser windows in each visibility state.
for (auto& window_visibility_pair : native_window_visibilities) {
aura::Window::OcclusionState visibility = window_visibility_pair.second;
switch (visibility) {
case aura::Window::OcclusionState::OCCLUDED:
num_occluded++;
break;
case aura::Window::OcclusionState::VISIBLE:
num_visible++;
break;
case aura::Window::OcclusionState::HIDDEN:
num_hidden++;
break;
case aura::Window::OcclusionState::UNKNOWN:
break;
}
}
reporting_delegate_->RecordNativeWindowVisibilities(num_occluded, num_visible,
num_hidden);
}
void TabStatsTracker::UmaStatsReportingDelegate::RecordNativeWindowVisibilities(
size_t num_occluded,
size_t num_visible,
size_t num_hidden) {
UMA_HISTOGRAM_COUNTS_10000("Windows.NativeWindowVisibility.Occluded",
num_occluded);
UMA_HISTOGRAM_COUNTS_10000("Windows.NativeWindowVisibility.Visible",
num_visible);
UMA_HISTOGRAM_COUNTS_10000("Windows.NativeWindowVisibility.Hidden",
num_hidden);
}
} // namespace metrics