blob: 8f71e903c3031052230e116d41f62902675317f3 [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2019 The Chromium Authors
Mikolaj Walczak297ece62019-10-11 02:55:402// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/exo/client_controlled_accelerators.h"
6
Sara Kato4fbf822682020-04-02 21:16:577#include "base/metrics/user_metrics.h"
8#include "base/metrics/user_metrics_action.h"
9
Mikolaj Walczak297ece62019-10-11 02:55:4010namespace exo {
11
12ClientControlledAcceleratorTarget::ClientControlledAcceleratorTarget(
13 ClientControlledShellSurface* surface)
14 : surface_(surface) {}
15
16ClientControlledAcceleratorTarget::~ClientControlledAcceleratorTarget() =
17 default;
18
19void ClientControlledAcceleratorTarget::RegisterAccelerator(
20 const ui::Accelerator& accelerator,
21 ClientControlledAcceleratorAction action) {
22 accelerators_.insert(std::make_pair(ui::Accelerator{accelerator}, action));
23}
24
25void ClientControlledAcceleratorTarget::RegisterAccelerator(
26 ui::Accelerator&& accelerator,
27 ClientControlledAcceleratorAction action) {
28 accelerators_.insert(std::make_pair(std::move(accelerator), action));
29}
30
31bool ClientControlledAcceleratorTarget::AcceleratorPressed(
32 const ui::Accelerator& accelerator) {
33 auto it = accelerators_.find(accelerator);
34 DCHECK(it != accelerators_.end());
35 ClientControlledAcceleratorAction action = it->second;
36
37 switch (action) {
38 case ClientControlledAcceleratorAction::ZOOM_IN:
39 surface_->ChangeZoomLevel(ZoomChange::IN);
Sara Kato4fbf822682020-04-02 21:16:5740 base::RecordAction(base::UserMetricsAction("Accel_ARC_Zoom_Ui_In"));
Mikolaj Walczak297ece62019-10-11 02:55:4041 break;
42 case ClientControlledAcceleratorAction::ZOOM_OUT:
43 surface_->ChangeZoomLevel(ZoomChange::OUT);
Sara Kato4fbf822682020-04-02 21:16:5744 base::RecordAction(base::UserMetricsAction("Accel_ARC_Zoom_Ui_Out"));
Mikolaj Walczak297ece62019-10-11 02:55:4045 break;
46 case ClientControlledAcceleratorAction::ZOOM_RESET:
47 surface_->ChangeZoomLevel(ZoomChange::RESET);
Sara Kato4fbf822682020-04-02 21:16:5748 base::RecordAction(base::UserMetricsAction("Accel_ARC_Zoom_Ui_Reset"));
Mikolaj Walczak297ece62019-10-11 02:55:4049 break;
50 }
51 return true;
52}
53
54bool ClientControlledAcceleratorTarget::CanHandleAccelerators() const {
55 return true;
56}
57
58} // namespace exo