// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/test/metrics/histogram_tester.h"
#include "components/exo/shell_surface.h"
#include "components/exo/test/exo_test_base.h"
#include "components/exo/test/shell_surface_builder.h"
#include "ui/compositor/test/test_utils.h"
namespace exo {
namespace {
using EventLatencyMetricsTest = test::ExoTestBase;
// Ash.EventLatency metrics should not be recorded when the target window
// is an exo windows.
TEST_F(EventLatencyMetricsTest, NoReportForExo) {
std::unique_ptr<ShellSurface> shell_surface =
test::ShellSurfaceBuilder({100, 100}).SetAsPopup().BuildShellSurface();
views::Widget* widget = shell_surface->GetWidget();
ui::Compositor* compositor = widget->GetCompositor();
base::HistogramTester histogram_tester;
widget->Activate();
// Key events are handled by shell surface by default.
PressAndReleaseKey(ui::VKEY_A);
compositor->ScheduleFullRedraw();
EXPECT_TRUE(ui::WaitForNextFrameToBePresented(compositor));
// Event latency metrics should not be recorded if the target window is
// an exo window.
histogram_tester.ExpectTotalCount("Ash.EventLatency.KeyPressed.TotalLatency",
0);
histogram_tester.ExpectTotalCount("Ash.EventLatency.KeyReleased.TotalLatency",
0);
histogram_tester.ExpectTotalCount("Ash.EventLatency.TotalLatency", 0);
}
} // namespace
} // namespace exo