Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(921)

Side by Side Diff: ui/platform_window/android/platform_ime_controller_android.cc

Issue 1391893003: NOT FOR REVIEW: Aura on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/platform_window/android/platform_ime_controller_android.h" 5 #include "ui/platform_window/android/platform_ime_controller_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "jni/PlatformImeControllerAndroid_jni.h" 9 #include "jni/PlatformImeControllerAndroid_jni.h"
10 #include "ui/base/ime/input_method.h"
11 #include "ui/base/ime/text_input_client.h"
12
13 #include "base/debug/stack_trace.h"
10 14
11 namespace ui { 15 namespace ui {
12 16
13 // static 17 // static
14 bool PlatformImeControllerAndroid::Register(JNIEnv* env) { 18 bool PlatformImeControllerAndroid::Register(JNIEnv* env) {
19 LOG(ERROR) << " ~~~ PlatformImeControllerAndroid::Register";
15 return RegisterNativesImpl(env); 20 return RegisterNativesImpl(env);
16 } 21 }
17 22
18 PlatformImeControllerAndroid::PlatformImeControllerAndroid() { 23 PlatformImeControllerAndroid::PlatformImeControllerAndroid()
24 : keyboard_visible_(false), input_method_(nullptr) {
19 } 25 }
20 26
21 PlatformImeControllerAndroid::~PlatformImeControllerAndroid() { 27 PlatformImeControllerAndroid::~PlatformImeControllerAndroid() {
22 } 28 }
23 29
24 void PlatformImeControllerAndroid::Init(JNIEnv* env, jobject jobj) { 30 void PlatformImeControllerAndroid::Init(JNIEnv* env, jobject jobj) {
25 DCHECK(java_platform_ime_controller_android_.is_empty()); 31 DCHECK(java_platform_ime_controller_android_.is_empty());
26 java_platform_ime_controller_android_ = JavaObjectWeakGlobalRef(env, jobj); 32 java_platform_ime_controller_android_ = JavaObjectWeakGlobalRef(env, jobj);
27 } 33 }
28 34
35 void PlatformImeControllerAndroid::SetInputMethod(
36 ui::InputMethod* input_method) {
37 LOG(ERROR) << "auraclank: PlatformImeControllerAndroid::SetInputMethod"
38 << "input_method=" << input_method;
39 input_method->AddObserver(this);
40 input_method_ = input_method;
41 }
42
43 void PlatformImeControllerAndroid::OnTextInputTypeChanged(
44 const ui::TextInputClient* client) {
45 OnTextInputStateChanged(client);
46 }
47
29 void PlatformImeControllerAndroid::UpdateTextInputState( 48 void PlatformImeControllerAndroid::UpdateTextInputState(
30 const TextInputState& state) { 49 const TextInputState& state) {
31 if (java_platform_ime_controller_android_.is_empty()) 50 if (java_platform_ime_controller_android_.is_empty())
32 return; 51 return;
33 JNIEnv* env = base::android::AttachCurrentThread(); 52 JNIEnv* env = base::android::AttachCurrentThread();
53
34 Java_PlatformImeControllerAndroid_updateTextInputState( 54 Java_PlatformImeControllerAndroid_updateTextInputState(
35 env, 55 env,
36 java_platform_ime_controller_android_.get(env).obj(), 56 java_platform_ime_controller_android_.get(env).obj(),
37 state.type, 57 state.type,
38 state.flags, 58 state.flags,
39 base::android::ConvertUTF8ToJavaString(env, state.text).obj(), 59 base::android::ConvertUTF8ToJavaString(env, state.text).obj(),
40 state.selection_start, 60 state.selection_start,
41 state.selection_end, 61 state.selection_end,
42 state.composition_start, 62 state.composition_start,
43 state.composition_end); 63 state.composition_end);
44 } 64 }
45 65
46 void PlatformImeControllerAndroid::SetImeVisibility(bool visible) { 66 void PlatformImeControllerAndroid::SetImeVisibility(bool visible) {
67 LOG(ERROR) << "auraclank: PlatformImeControllerAndroid::SetImeVisibility";
47 if (java_platform_ime_controller_android_.is_empty()) 68 if (java_platform_ime_controller_android_.is_empty())
48 return; 69 return;
70 if (visible == keyboard_visible_)
71 return;
72 keyboard_visible_ = visible;
49 JNIEnv* env = base::android::AttachCurrentThread(); 73 JNIEnv* env = base::android::AttachCurrentThread();
50 Java_PlatformImeControllerAndroid_setImeVisibility( 74 Java_PlatformImeControllerAndroid_setImeVisibility(
51 env, 75 env,
52 java_platform_ime_controller_android_.get(env).obj(), 76 java_platform_ime_controller_android_.get(env).obj(),
53 visible); 77 visible);
54 } 78 }
55 79
80 // InputMethodObserver:
81 void PlatformImeControllerAndroid::OnTextInputStateChanged(
82 const ui::TextInputClient* client) {
83 TextInputState state;
84 if (client) {
85 state.type = client->GetTextInputType();
86 state.flags = client->GetTextInputFlags();
87 // TODO(mfomitchev): Is the other data needed? Does,'t seem to be used...
88 // state.text = ???
89 // ...
90 } else {
91 state.type = ui::TEXT_INPUT_TYPE_NONE;
92 }
93 UpdateTextInputState(state);
94
95 // TODO(mfomitchev): Not sure if needed
96 if (state.type == ui::TEXT_INPUT_TYPE_NONE)
97 SetImeVisibility(false);
98 else
99 SetImeVisibility(true);
100 }
101
102 void PlatformImeControllerAndroid::OnInputMethodDestroyed(
103 const ui::InputMethod* input_method) {
104 LOG(ERROR) << "auraclank: PlatformImeControllerAndroid::OnInputMethodDestroyed ";
105 SetImeVisibility(false);
106 }
107
108 void PlatformImeControllerAndroid::OnShowImeIfNeeded() {
109 LOG(ERROR) << "auraclank: PlatformImeControllerAndroid::OnShowImeIfNeeded";
110 SetImeVisibility(true);
111 }
112
56 } // namespace ui 113 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698