1 // Copyright (c) 2012 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.
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_IME_ADAPTER_ANDROID_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_IME_ADAPTER_ANDROID_H_
10 #include "base/android/jni_helper.h"
14 class RenderWidgetHostImpl;
15 class RenderWidgetHostViewAndroid;
16 struct NativeWebKeyboardEvent;
18 // This class is in charge of dispatching key events from the java side
19 // and forward to renderer along with input method results via
20 // corresponding host view.
21 // Ownership of these objects remains on the native side (see
22 // RenderWidgetHostViewAndroid).
23 class ImeAdapterAndroid {
25 explicit ImeAdapterAndroid(RenderWidgetHostViewAndroid* rwhva);
28 // Called from java -> native
29 // The java side is responsible to translate android KeyEvent various enums
30 // and values into the corresponding WebKit::WebInputEvent.
31 bool SendKeyEvent(JNIEnv* env, jobject,
32 jobject original_key_event,
33 int action, int meta_state,
34 long event_time, int key_code,
35 bool is_system_key, int unicode_text);
36 // |event_type| is a value of WebInputEvent::Type.
37 bool SendSyntheticKeyEvent(JNIEnv*,
43 void SetComposingText(JNIEnv*, jobject, jstring text, int new_cursor_pos);
44 void CommitText(JNIEnv*, jobject, jstring text);
45 void FinishComposingText(JNIEnv* env, jobject);
46 void AttachImeAdapter(JNIEnv*, jobject java_object);
47 void SetEditableSelectionOffsets(JNIEnv*, jobject, int start, int end);
48 void SetComposingRegion(JNIEnv*, jobject, int start, int end);
49 void DeleteSurroundingText(JNIEnv*, jobject, int before, int after);
50 void Unselect(JNIEnv*, jobject);
51 void SelectAll(JNIEnv*, jobject);
52 void Cut(JNIEnv*, jobject);
53 void Copy(JNIEnv*, jobject);
54 void Paste(JNIEnv*, jobject);
55 void ResetImeAdapter(JNIEnv*, jobject);
57 // Called from native -> java
58 void CancelComposition();
61 RenderWidgetHostImpl* GetRenderWidgetHostImpl();
63 RenderWidgetHostViewAndroid* rwhva_;
64 JavaObjectWeakGlobalRef java_ime_adapter_;
67 bool RegisterImeAdapter(JNIEnv* env);
69 } // namespace content
71 #endif // CONTENT_BROWSER_RENDERER_HOST_IME_ADAPTER_ANDROID_H_