Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / android / autofill / autofill_popup_view_android.cc
index 6e95ff9..baf38d9 100644 (file)
@@ -6,12 +6,15 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_string.h"
+#include "chrome/browser/android/resource_mapper.h"
 #include "chrome/browser/ui/android/window_android_helper.h"
 #include "chrome/browser/ui/autofill/autofill_popup_controller.h"
 #include "content/public/browser/android/content_view_core.h"
 #include "jni/AutofillPopupBridge_jni.h"
 #include "ui/base/android/view_android.h"
 #include "ui/base/android/window_android.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/android/java_bitmap.h"
 #include "ui/gfx/rect.h"
 
 namespace autofill {
@@ -65,12 +68,19 @@ void AutofillPopupViewAndroid::UpdateBoundsAndRedrawPopup() {
     ScopedJavaLocalRef<jstring> subtext =
         base::android::ConvertUTF16ToJavaString(env,
                                                 controller_->subtexts()[i]);
+    int android_icon_id = 0;
+    if (!controller_->icons()[i].empty()) {
+      android_icon_id = ResourceMapper::MapFromChromiumId(
+          controller_->GetIconResourceID(controller_->icons()[i]));
+    }
+
     Java_AutofillPopupBridge_addToAutofillSuggestionArray(
         env,
         data_array.obj(),
         i,
         name.obj(),
         subtext.obj(),
+        android_icon_id,
         controller_->identifiers()[i]);
   }
 
@@ -81,7 +91,9 @@ void AutofillPopupViewAndroid::UpdateBoundsAndRedrawPopup() {
 void AutofillPopupViewAndroid::SuggestionSelected(JNIEnv* env,
                                                   jobject obj,
                                                   jint list_index) {
-  controller_->AcceptSuggestion(list_index);
+  // Race: Hide() may have already run.
+  if (controller_)
+    controller_->AcceptSuggestion(list_index);
 }
 
 void AutofillPopupViewAndroid::PopupDismissed(JNIEnv* env, jobject obj) {