| Index: blimp/client/app/android/web_input_box.cc | 
| diff --git a/blimp/client/app/android/web_input_box.cc b/blimp/client/app/android/web_input_box.cc | 
| index ffdf9cdd18af1f640c9f8bfedf98ce64057bde63..f65092ed7658e3d22b58cae7ffd6f35bd4ddf576 100644 | 
| --- a/blimp/client/app/android/web_input_box.cc | 
| +++ b/blimp/client/app/android/web_input_box.cc | 
| @@ -5,7 +5,9 @@ | 
| #include "base/android/jni_string.h" | 
| #include "blimp/client/app/android/blimp_client_session_android.h" | 
| #include "blimp/client/app/android/web_input_box.h" | 
| +#include "blimp/client/feature/ime_feature.h" | 
| #include "jni/WebInputBox_jni.h" | 
| +#include "ui/base/ime/text_input_type.h" | 
|  | 
| namespace blimp { | 
| namespace client { | 
| @@ -13,7 +15,11 @@ namespace client { | 
| static jlong Init(JNIEnv* env, | 
| const JavaParamRef<jobject>& jobj, | 
| const JavaParamRef<jobject>& blimp_client_session) { | 
| -  return reinterpret_cast<intptr_t>(new WebInputBox(env, jobj)); | 
| +  BlimpClientSession* client_session = | 
| +      BlimpClientSessionAndroid::FromJavaObject(env, | 
| +                                                blimp_client_session.obj()); | 
| +  return reinterpret_cast<intptr_t>( | 
| +      new WebInputBox(env, jobj, client_session->GetImeFeature())); | 
| } | 
|  | 
| // static | 
| @@ -22,25 +28,39 @@ bool WebInputBox::RegisterJni(JNIEnv* env) { | 
| } | 
|  | 
| WebInputBox::WebInputBox(JNIEnv* env, | 
| -                         const base::android::JavaParamRef<jobject>& jobj) { | 
| +                         const base::android::JavaParamRef<jobject>& jobj, | 
| +                         ImeFeature* ime_feature) { | 
| java_obj_.Reset(env, jobj); | 
| +  ime_feature_ = ime_feature; | 
| +  ime_feature_->set_delegate(this); | 
| } | 
|  | 
| -WebInputBox::~WebInputBox() {} | 
| +WebInputBox::~WebInputBox() { | 
| +  ime_feature_->set_delegate(nullptr); | 
| +} | 
|  | 
| void WebInputBox::Destroy(JNIEnv* env, const JavaParamRef<jobject>& jobj) { | 
| delete this; | 
| } | 
|  | 
| -void WebInputBox::OnImeRequested(bool show) { | 
| +void WebInputBox::OnShowImeRequested(ui::TextInputType input_type, | 
| +                                     const std::string& text) { | 
| +  JNIEnv* env = base::android::AttachCurrentThread(); | 
| +  Java_WebInputBox_onShowImeRequested( | 
| +      env, java_obj_.obj(), input_type, | 
| +      base::android::ConvertUTF8ToJavaString(env, text).obj()); | 
| +} | 
| + | 
| +void WebInputBox::OnHideImeRequested() { | 
| JNIEnv* env = base::android::AttachCurrentThread(); | 
| -  Java_WebInputBox_onImeRequested(env, java_obj_.obj(), show); | 
| +  Java_WebInputBox_onHideImeRequested(env, java_obj_.obj()); | 
| } | 
|  | 
| void WebInputBox::OnImeTextEntered(JNIEnv* env, | 
| const JavaParamRef<jobject>& jobj, | 
| const JavaParamRef<jstring>& text) { | 
| -  // TODO(shaktisahu): Send text to browser. | 
| +  std::string textInput = base::android::ConvertJavaStringToUTF8(env, text); | 
| +  ime_feature_->OnImeTextEntered(textInput); | 
| } | 
|  | 
| }  // namespace client | 
|  |