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

Unified Diff: content/browser/renderer_host/render_widget_host_view_base.cc

Issue 1652483002: Browser Side Text Input State Tracking for OOPIF. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merged Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_base.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
index b411ca102f1a519c36e5f9c4353f5811bb1cdaca..febe51602f32512404b1f1ffadf6c6421ed2e671 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -10,11 +10,18 @@
#include "content/browser/gpu/gpu_data_manager_impl.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target_base.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
+#include "content/browser/renderer_host/render_view_host_delegate.h"
+#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_delegate.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base_observer.h"
#include "content/common/content_switches_internal.h"
+#include "content/common/input_messages.h"
+#include "content/common/site_isolation_policy.h"
+#include "content/common/text_input_state.h"
+#include "content/common/view_messages.h"
#include "content/public/browser/render_widget_host_view_frame_subscriber.h"
+#include "content/public/common/browser_plugin_guest_mode.h"
#include "ui/gfx/display.h"
#include "ui/gfx/geometry/point_conversions.h"
#include "ui/gfx/geometry/size_conversions.h"
@@ -41,6 +48,7 @@ RenderWidgetHostViewBase::RenderWidgetHostViewBase()
current_display_rotation_(gfx::Display::ROTATE_0),
pinch_zoom_enabled_(content::IsPinchToZoomEnabled()),
renderer_frame_number_(0),
+ text_input_state_(new TextInputState()),
weak_factory_(this) {}
RenderWidgetHostViewBase::~RenderWidgetHostViewBase() {
@@ -65,6 +73,19 @@ void RenderWidgetHostViewBase::NotifyObserversAboutShutdown() {
DCHECK(!observers_.might_have_observers());
}
+void RenderWidgetHostViewBase::NotifyHostDelegateAboutShutdown() {
+ RenderWidgetHostImpl* host =
+ RenderWidgetHostImpl::From(GetRenderWidgetHost());
+
+ if (!host || !host->delegate())
+ return;
+
+ bool has_active_text = text_input_state()->type != ui::TEXT_INPUT_TYPE_NONE;
+ text_input_state_.reset(new TextInputState());
+
+ host->delegate()->UpdateTextInputState(this, has_active_text);
+}
+
bool RenderWidgetHostViewBase::OnMessageReceived(const IPC::Message& msg){
return false;
}
@@ -228,6 +249,35 @@ bool RenderWidgetHostViewBase::HasDisplayPropertyChanged(gfx::NativeView view) {
return true;
}
+void RenderWidgetHostViewBase::TextInputStateChanged(
+ const TextInputState& params) {
+ bool text_input_state_changed = true;
+#if !defined(OS_ANDROID)
+ if (params.type == text_input_state_->type &&
+ params.can_compose_inline == text_input_state_->can_compose_inline
+#if !defined(OS_MACOSX)
+ && params.mode == text_input_state_->mode &&
+ params.flags == text_input_state_->flags
+#endif
+ )
+ text_input_state_changed = false;
+#else
+ if (params.is_non_ime_change) {
+ // Sends an acknowledgement to the renderer of a processed IME event.
+ GetRenderWidgetHost()->Send(
+ new InputMsg_ImeEventAck(GetRenderWidgetHost()->GetRoutingID()));
+ }
+#endif
+
+ if (text_input_state_changed) {
+ *text_input_state_ = params;
+ RenderWidgetHostImpl* host =
+ RenderWidgetHostImpl::From(GetRenderWidgetHost());
+ if (host && host->delegate())
+ host->delegate()->UpdateTextInputState(this, text_input_state_changed);
+ }
+}
+
base::WeakPtr<RenderWidgetHostViewBase> RenderWidgetHostViewBase::GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}

Powered by Google App Engine
This is Rietveld 408576698