| // Copyright 2026 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_ANDROID_ACCELERATOR_MANAGER_ANDROID_H_ |
| #define UI_ANDROID_ACCELERATOR_MANAGER_ANDROID_H_ |
| |
| #include <jni.h> |
| |
| #include "base/android/scoped_java_ref.h" |
| #include "ui/android/ui_android_export.h" |
| #include "ui/base/accelerators/accelerator_manager.h" |
| |
| namespace ui { |
| |
| class WindowAndroid; |
| |
| // Native bridge for AcceleratorManager.java. |
| class UI_ANDROID_EXPORT AcceleratorManagerAndroid { |
| public: |
| // Returns the AcceleratorManagerAndroid for the given WindowAndroid. Returns |
| // nullptr if it doesn't exist. |
| static AcceleratorManagerAndroid* FromWindow(WindowAndroid& window); |
| |
| explicit AcceleratorManagerAndroid( |
| base::android::ScopedJavaGlobalRef<jobject> obj); |
| |
| AcceleratorManagerAndroid(const AcceleratorManagerAndroid&) = delete; |
| AcceleratorManagerAndroid& operator=(const AcceleratorManagerAndroid&) = |
| delete; |
| |
| ~AcceleratorManagerAndroid(); |
| |
| void RegisterAccelerator(const Accelerator& accelerator, |
| AcceleratorManager::HandlerPriority priority, |
| AcceleratorTarget* target); |
| |
| void UnregisterAccelerator(const Accelerator& accelerator, |
| AcceleratorTarget* target); |
| |
| // Functions to be called by JNI only. |
| |
| bool ProcessKeyEvent(JNIEnv* env, |
| const base::android::JavaRef<jobject>& j_key_event); |
| |
| void Destroy(JNIEnv* env); |
| |
| private: |
| base::android::ScopedJavaGlobalRef<jobject> java_ref_; |
| AcceleratorManager accelerator_manager_; |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_ANDROID_ACCELERATOR_MANAGER_ANDROID_H_ |