Chromium Code Reviews| Index: ash/common/accelerators/accelerator_controller.h |
| diff --git a/ash/common/accelerators/accelerator_controller.h b/ash/common/accelerators/accelerator_controller.h |
| index 7a5ae515da4a2323719d2ed466c1f35fd8e394a8..c418fccf03dbffb83a446e9331c2947f238c1110 100644 |
| --- a/ash/common/accelerators/accelerator_controller.h |
| +++ b/ash/common/accelerators/accelerator_controller.h |
| @@ -18,6 +18,7 @@ |
| #include "base/compiler_specific.h" |
| #include "base/gtest_prod_util.h" |
| #include "base/macros.h" |
| +#include "mojo/public/cpp/bindings/binding_set.h" |
| #include "ui/base/accelerators/accelerator.h" |
| #include "ui/base/accelerators/accelerator_history.h" |
| @@ -35,8 +36,12 @@ class ImeControlDelegate; |
| // AcceleratorController provides functions for registering or unregistering |
| // global keyboard accelerators, which are handled earlier than any windows. It |
| -// also implements several handlers as an accelerator target. |
| -class ASH_EXPORT AcceleratorController : public ui::AcceleratorTarget { |
| +// also implements several handlers as an accelerator target. Implements |
| +// mojom::Volume so that Chrome can set itself as the mojom::VolumeClient, |
| +// which is only used by accelerator keys. |
| +class ASH_EXPORT AcceleratorController |
| + : public ui::AcceleratorTarget, |
| + NON_EXPORTED_BASE(public mojom::Volume) { |
|
msw
2016/12/03 00:26:43
Inheriting a Volume-specific interface here is som
James Cook
2016/12/06 19:23:57
Done.
|
| public: |
| AcceleratorController(AcceleratorControllerDelegate* delegate, |
| ui::AcceleratorManagerDelegate* manager_delegate); |
| @@ -121,6 +126,12 @@ class ASH_EXPORT AcceleratorController : public ui::AcceleratorTarget { |
| bool AcceleratorPressed(const ui::Accelerator& accelerator) override; |
| bool CanHandleAccelerators() const override; |
| + // Binds the mojom::Volume interface to this object. |
| + void BindRequest(mojom::VolumeRequest request); |
| + |
| + // mojom::Volume: |
| + void SetClient(mojom::VolumeClientPtr client) override; |
| + |
| private: |
| FRIEND_TEST_ALL_PREFIXES(AcceleratorControllerTest, GlobalAccelerators); |
| FRIEND_TEST_ALL_PREFIXES(AcceleratorControllerTest, |
| @@ -156,10 +167,6 @@ class ASH_EXPORT AcceleratorController : public ui::AcceleratorTarget { |
| AcceleratorProcessingRestriction GetAcceleratorProcessingRestriction( |
| int action); |
| - // Returns the volume controller interface raw pointer, may be null in tests. |
| - mojom::VolumeController* GetVolumeController(); |
| - void OnVolumeControllerConnectionError(); |
| - |
| AcceleratorControllerDelegate* delegate_; |
| std::unique_ptr<ui::AcceleratorManager> accelerator_manager_; |
| @@ -181,8 +188,11 @@ class ASH_EXPORT AcceleratorController : public ui::AcceleratorTarget { |
| actions_with_deprecations_; |
| std::set<ui::Accelerator> deprecated_accelerators_; |
| - // The cached volume controller interface pointer. |
| - mojom::VolumeControllerPtr volume_controller_; |
| + // Bindings for the mojom::Volume interface. |
| + mojo::BindingSet<mojom::Volume> bindings_; |
| + |
| + // Client interface in chrome browser. May be null in tests. |
|
msw
2016/12/05 20:15:09
optional nit: Mention here that it's used for [Cra
James Cook
2016/12/06 19:23:57
Done.
|
| + mojom::VolumeClientPtr volume_client_; |
| // Actions allowed when the user is not signed in. |
| std::set<int> actions_allowed_at_login_screen_; |