// Copyright 2021 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 "ash/clipboard/control_v_histogram_recorder.h" #include "ash/accelerators/accelerator_controller_impl.h" #include "ash/accelerators/accelerator_history_impl.h" #include "ash/shell.h" #include "base/metrics/histogram_functions.h" #include "ui/events/event.h" namespace ash { void ControlVHistogramRecorder::OnKeyEvent(ui::KeyEvent* event) { if (event->type() != ui::ET_KEY_PRESSED) return; switch (event->key_code()) { case ui::VKEY_CONTROL: ctrl_pressed_time_ = base::TimeTicks::Now(); break; case ui::VKEY_V: { auto& currently_pressed_keys = Shell::Get() ->accelerator_controller() ->GetAcceleratorHistory() ->currently_pressed_keys(); if (currently_pressed_keys.find(ui::VKEY_CONTROL) != currently_pressed_keys.end() && currently_pressed_keys.find(ui::VKEY_V) != currently_pressed_keys.end() && currently_pressed_keys.size() == 2 && !ctrl_pressed_time_.is_null()) { base::UmaHistogramTimes("Ash.ClipboardHistory.ControlToVDelay", base::TimeTicks::Now() - ctrl_pressed_time_); // Prevent a second V from recording a second metric. ctrl_pressed_time_ = base::TimeTicks(); } } break; default: break; } } } // namespace ash