blob: 445868a4b65e123093f1ccadd9ca92ee5a8b7309 [file]
// 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_