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_weak_ref.h"
14 class RenderFrameHost
;
15 class RenderWidgetHostImpl
;
16 class RenderWidgetHostViewAndroid
;
18 struct NativeWebKeyboardEvent
;
20 // This class is in charge of dispatching key events from the java side
21 // and forward to renderer along with input method results via
22 // corresponding host view.
23 // Ownership of these objects remains on the native side (see
24 // RenderWidgetHostViewAndroid).
25 class ImeAdapterAndroid
{
27 explicit ImeAdapterAndroid(RenderWidgetHostViewAndroid
* rwhva
);
30 // Called from java -> native
31 // The java side is responsible to translate android KeyEvent various enums
32 // and values into the corresponding blink::WebInputEvent.
33 bool SendKeyEvent(JNIEnv
* env
, jobject
,
34 jobject original_key_event
,
35 int action
, int meta_state
,
36 long event_time
, int key_code
,
37 bool is_system_key
, int unicode_text
);
38 // |event_type| is a value of WebInputEvent::Type.
39 bool SendSyntheticKeyEvent(JNIEnv
*,
46 void SetComposingText(JNIEnv
*,
51 void CommitText(JNIEnv
*, jobject
, jstring text_str
);
52 void FinishComposingText(JNIEnv
* env
, jobject
);
53 void AttachImeAdapter(JNIEnv
*, jobject java_object
);
54 void SetEditableSelectionOffsets(JNIEnv
*, jobject
, int start
, int end
);
55 void SetComposingRegion(JNIEnv
*, jobject
, int start
, int end
);
56 void DeleteSurroundingText(JNIEnv
*, jobject
, int before
, int after
);
57 void Unselect(JNIEnv
*, jobject
);
58 void SelectAll(JNIEnv
*, jobject
);
59 void Cut(JNIEnv
*, jobject
);
60 void Copy(JNIEnv
*, jobject
);
61 void Paste(JNIEnv
*, jobject
);
62 void ResetImeAdapter(JNIEnv
*, jobject
);
64 // Called from native -> java
65 void CancelComposition();
66 void FocusedNodeChanged(bool is_editable_node
);
69 RenderWidgetHostImpl
* GetRenderWidgetHostImpl();
70 RenderFrameHost
* GetFocusedFrame();
71 WebContents
* GetWebContents();
73 RenderWidgetHostViewAndroid
* rwhva_
;
74 JavaObjectWeakGlobalRef java_ime_adapter_
;
77 bool RegisterImeAdapter(JNIEnv
* env
);
79 } // namespace content
81 #endif // CONTENT_BROWSER_RENDERER_HOST_IME_ADAPTER_ANDROID_H_