Index: content/browser/renderer_host/render_widget_host_view_android.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
index d0a2b5f0feabe4e1b94aa6d1db0f0ef9c222d17c..4f1608dbfd68116aed9283a9da8389d14bd617fb 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -40,7 +40,6 @@ |
#include "content/browser/accessibility/browser_accessibility_manager_android.h" |
#include "content/browser/android/composited_touch_handle_drawable.h" |
#include "content/browser/android/content_view_core_impl.h" |
-#include "content/browser/android/ime_adapter_android.h" |
#include "content/browser/android/overscroll_controller_android.h" |
#include "content/browser/android/synchronous_compositor_host.h" |
#include "content/browser/compositor/surface_utils.h" |
@@ -449,7 +448,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
is_window_activity_started_(true), |
is_in_vr_(false), |
content_view_core_(nullptr), |
- ime_adapter_android_(nullptr), |
+ ime_adapter_android_(this), |
background_color_(SK_ColorWHITE), |
cached_background_color_(SK_ColorWHITE), |
view_(this), |
@@ -496,8 +495,6 @@ RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() { |
if (content_view_core_) |
content_view_core_->RemoveObserver(this); |
SetContentViewCore(NULL); |
- if (ime_adapter_android_) |
- ime_adapter_android_ = nullptr; |
DCHECK(ack_callbacks_.empty()); |
DCHECK(!delegated_frame_host_); |
} |
@@ -646,13 +643,11 @@ gfx::Rect RenderWidgetHostViewAndroid::GetViewBounds() const { |
if (!content_view_core_) |
return default_bounds_; |
- gfx::Size size(content_view_core_->GetViewSize()); |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kEnableOSKOverscroll)) { |
- size.Enlarge(0, view_.GetSystemWindowInsetBottom() / view_.GetDipScale()); |
- } |
+ switches::kEnableOSKOverscroll)) |
+ return gfx::Rect(content_view_core_->GetViewSizeWithOSKHidden()); |
- return gfx::Rect(size); |
+ return gfx::Rect(content_view_core_->GetViewSize()); |
} |
gfx::Size RenderWidgetHostViewAndroid::GetVisibleViewportSize() const { |
@@ -706,6 +701,10 @@ void RenderWidgetHostViewAndroid::SetIsLoading(bool is_loading) { |
// is TabContentsDelegate. |
} |
+long RenderWidgetHostViewAndroid::GetNativeImeAdapter() { |
+ return reinterpret_cast<intptr_t>(&ime_adapter_android_); |
+} |
+ |
// ----------------------------------------------------------------------------- |
// TextInputManager::Observer implementations. |
void RenderWidgetHostViewAndroid::OnUpdateTextInputStateCalled( |
@@ -720,10 +719,14 @@ void RenderWidgetHostViewAndroid::OnUpdateTextInputStateCalled( |
? *GetTextInputManager()->GetTextInputState() |
: TextInputState(); |
- if (!ime_adapter_android_ || is_in_vr_) |
+ if (!content_view_core_ || is_in_vr_) |
return; |
- ime_adapter_android_->UpdateState(state); |
+ content_view_core_->UpdateImeAdapter( |
+ GetNativeImeAdapter(), static_cast<int>(state.type), state.flags, |
+ state.mode, state.value, state.selection_start, state.selection_end, |
+ state.composition_start, state.composition_end, state.show_ime_if_needed, |
+ state.reply_to_request); |
} |
void RenderWidgetHostViewAndroid::OnImeCompositionRangeChanged( |
@@ -739,16 +742,14 @@ void RenderWidgetHostViewAndroid::OnImeCompositionRangeChanged( |
for (const gfx::Rect& rect : info->character_bounds) |
character_bounds.emplace_back(rect); |
- if (ime_adapter_android_) |
- ime_adapter_android_->SetCharacterBounds(character_bounds); |
+ ime_adapter_android_.SetCharacterBounds(character_bounds); |
} |
void RenderWidgetHostViewAndroid::OnImeCancelComposition( |
TextInputManager* text_input_manager, |
RenderWidgetHostViewBase* updated_view) { |
DCHECK_EQ(text_input_manager_, text_input_manager); |
- if (ime_adapter_android_) |
- ime_adapter_android_->CancelComposition(); |
+ ime_adapter_android_.CancelComposition(); |
} |
void RenderWidgetHostViewAndroid::OnTextSelectionChanged( |
@@ -905,11 +906,6 @@ bool RenderWidgetHostViewAndroid::TransformPointToCoordSpaceForView( |
transformed_point); |
} |
-base::WeakPtr<RenderWidgetHostViewAndroid> |
-RenderWidgetHostViewAndroid::GetWeakPtrAndroid() { |
- return weak_ptr_factory_.GetWeakPtr(); |
-} |
- |
bool RenderWidgetHostViewAndroid::OnTouchEvent( |
const ui::MotionEvent& event) { |
if (!host_ || !host_->delegate()) |
@@ -1001,8 +997,7 @@ void RenderWidgetHostViewAndroid::SetMultiTouchZoomSupportEnabled( |
void RenderWidgetHostViewAndroid::FocusedNodeChanged( |
bool is_editable_node, |
const gfx::Rect& node_bounds_in_screen) { |
- if (ime_adapter_android_) |
- ime_adapter_android_->FocusedNodeChanged(is_editable_node); |
+ ime_adapter_android_.FocusedNodeChanged(is_editable_node); |
} |
void RenderWidgetHostViewAndroid::RenderProcessGone( |