| Index: content/browser/renderer_host/ime_adapter_android.cc
|
| diff --git a/content/browser/renderer_host/ime_adapter_android.cc b/content/browser/renderer_host/ime_adapter_android.cc
|
| index ac820f5765c3a7bf214293e8271e7bba7951f972..7f116db63562e3a82fd1d8534d2ee41eabe7ae7f 100644
|
| --- a/content/browser/renderer_host/ime_adapter_android.cc
|
| +++ b/content/browser/renderer_host/ime_adapter_android.cc
|
| @@ -9,6 +9,7 @@
|
| #include <vector>
|
|
|
| #include "base/android/jni_android.h"
|
| +#include "base/android/jni_array.h"
|
| #include "base/android/jni_string.h"
|
| #include "base/android/scoped_java_ref.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| @@ -237,6 +238,31 @@ void ImeAdapterAndroid::FocusedNodeChanged(bool is_editable_node) {
|
| }
|
| }
|
|
|
| +void ImeAdapterAndroid::SetCharacterBounds(
|
| + const std::vector<gfx::Rect>& character_bounds) {
|
| + JNIEnv* env = AttachCurrentThread();
|
| + base::android::ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(env);
|
| + if (obj.is_null())
|
| + return;
|
| +
|
| + const size_t coordinates_array_size = character_bounds.size() * 4;
|
| + scoped_ptr<float[]> coordinates_array(new float[coordinates_array_size]);
|
| + for (size_t i = 0; i < character_bounds.size(); ++i) {
|
| + const gfx::Rect& rect = character_bounds[i];
|
| + const size_t coordinates_array_index = i * 4;
|
| + coordinates_array[coordinates_array_index + 0] = rect.x();
|
| + coordinates_array[coordinates_array_index + 1] = rect.y();
|
| + coordinates_array[coordinates_array_index + 2] = rect.right();
|
| + coordinates_array[coordinates_array_index + 3] = rect.bottom();
|
| + }
|
| + Java_ImeAdapter_setCharacterBounds(
|
| + env,
|
| + obj.obj(),
|
| + base::android::ToJavaFloatArray(env,
|
| + coordinates_array.get(),
|
| + coordinates_array_size).obj());
|
| +}
|
| +
|
| void ImeAdapterAndroid::SetEditableSelectionOffsets(JNIEnv*, jobject,
|
| int start, int end) {
|
| RenderFrameHost* rfh = GetFocusedFrame();
|
|
|