client_controlled_accelerators.cc 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/exo/client_controlled_accelerators.h"
  5. #include "base/metrics/user_metrics.h"
  6. #include "base/metrics/user_metrics_action.h"
  7. namespace exo {
  8. ClientControlledAcceleratorTarget::ClientControlledAcceleratorTarget(
  9. ClientControlledShellSurface* surface)
  10. : surface_(surface) {}
  11. ClientControlledAcceleratorTarget::~ClientControlledAcceleratorTarget() =
  12. default;
  13. void ClientControlledAcceleratorTarget::RegisterAccelerator(
  14. const ui::Accelerator& accelerator,
  15. ClientControlledAcceleratorAction action) {
  16. accelerators_.insert(std::make_pair(ui::Accelerator{accelerator}, action));
  17. }
  18. void ClientControlledAcceleratorTarget::RegisterAccelerator(
  19. ui::Accelerator&& accelerator,
  20. ClientControlledAcceleratorAction action) {
  21. accelerators_.insert(std::make_pair(std::move(accelerator), action));
  22. }
  23. bool ClientControlledAcceleratorTarget::AcceleratorPressed(
  24. const ui::Accelerator& accelerator) {
  25. auto it = accelerators_.find(accelerator);
  26. DCHECK(it != accelerators_.end());
  27. ClientControlledAcceleratorAction action = it->second;
  28. switch (action) {
  29. case ClientControlledAcceleratorAction::ZOOM_IN:
  30. surface_->ChangeZoomLevel(ZoomChange::IN);
  31. base::RecordAction(base::UserMetricsAction("Accel_ARC_Zoom_Ui_In"));
  32. break;
  33. case ClientControlledAcceleratorAction::ZOOM_OUT:
  34. surface_->ChangeZoomLevel(ZoomChange::OUT);
  35. base::RecordAction(base::UserMetricsAction("Accel_ARC_Zoom_Ui_Out"));
  36. break;
  37. case ClientControlledAcceleratorAction::ZOOM_RESET:
  38. surface_->ChangeZoomLevel(ZoomChange::RESET);
  39. base::RecordAction(base::UserMetricsAction("Accel_ARC_Zoom_Ui_Reset"));
  40. break;
  41. }
  42. return true;
  43. }
  44. bool ClientControlledAcceleratorTarget::CanHandleAccelerators() const {
  45. return true;
  46. }
  47. } // namespace exo