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

Unified Diff: content/renderer/render_widget.cc

Issue 29943002: Limit display of the virtual keyboard to state changes triggered from a user gesture. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 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/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 18f85560cfe41ad717ded99e98f96865cc1d3b4f..1d9b2daf8d1970fb3af2f37f76e87e06bb571623 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -355,7 +355,7 @@ RenderWidget::RenderWidget(WebKit::WebPopupType popup_type,
device_scale_factor_(screen_info_.deviceScaleFactor),
is_threaded_compositing_enabled_(false),
next_output_surface_id_(0),
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
outstanding_ime_acks_(0),
#endif
popup_origin_scale_for_emulation_(0.f),
@@ -597,6 +597,8 @@ bool RenderWidget::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_UpdateScreenRects, OnUpdateScreenRects)
#if defined(OS_ANDROID)
IPC_MESSAGE_HANDLER(ViewMsg_ShowImeIfNeeded, OnShowImeIfNeeded)
+#endif
+#if defined(OS_ANDROID) || defined(USE_AURA)
IPC_MESSAGE_HANDLER(ViewMsg_ImeEventAck, OnImeEventAck)
#endif
IPC_MESSAGE_HANDLER(ViewMsg_Snapshot, OnSnapshot)
@@ -1135,12 +1137,16 @@ void RenderWidget::OnHandleInputEvent(const WebKit::WebInputEvent* input_event,
Send(response);
}
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
// Allow the IME to be shown when the focus changes as a consequence
// of a processed touch end event.
if (input_event->type == WebInputEvent::TouchEnd && processed)
UpdateTextInputState(true, true);
#endif
+#if defined(USE_AURA)
+ if (input_event->type == WebInputEvent::MouseUp && processed)
+ UpdateTextInputState(true, true);
+#endif
handling_input_event_ = false;
@@ -1815,7 +1821,7 @@ void RenderWidget::willBeginCompositorFrame() {
// enable GPU acceleration so they need to be called before any painting
// is done.
UpdateTextInputType();
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
UpdateTextInputState(false, true);
#endif
UpdateSelectionBounds();
@@ -2242,7 +2248,9 @@ void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
void RenderWidget::OnShowImeIfNeeded() {
UpdateTextInputState(true, true);
}
+#endif
+#if defined(OS_ANDROID) || defined(USE_AURA)
void RenderWidget::IncrementOutstandingImeEventAcks() {
++outstanding_ime_acks_;
}
@@ -2254,7 +2262,7 @@ void RenderWidget::OnImeEventAck() {
#endif
bool RenderWidget::ShouldHandleImeEvent() {
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
return !!webwidget_ && outstanding_ime_acks_ == 0;
#else
return !!webwidget_;
@@ -2372,7 +2380,7 @@ void RenderWidget::FinishHandlingImeEvent() {
// are ignored. These must explicitly be updated once finished handling the
// ime event.
UpdateSelectionBounds();
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
UpdateTextInputState(false, false);
#endif
}
@@ -2413,7 +2421,7 @@ void RenderWidget::UpdateTextInputType() {
}
}
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
void RenderWidget::UpdateTextInputState(bool show_ime_if_needed,
bool send_ime_ack) {
if (handling_ime_event_)
@@ -2428,6 +2436,7 @@ void RenderWidget::UpdateTextInputState(bool show_ime_if_needed,
if (webwidget_)
new_info = webwidget_->textInputInfo();
+ const ui::TextInputMode new_mode = ConvertInputMode(new_info.inputMode);
bool new_can_compose_inline = CanComposeInline();
// Only sends text input params if they are changed or if the ime should be
@@ -2437,6 +2446,7 @@ void RenderWidget::UpdateTextInputState(bool show_ime_if_needed,
|| can_compose_inline_ != new_can_compose_inline)) {
ViewHostMsg_TextInputState_Params p;
p.type = new_type;
+ p.mode = new_mode;
p.value = new_info.value.utf8();
p.selection_start = new_info.selectionStart;
p.selection_end = new_info.selectionEnd;
@@ -2622,7 +2632,7 @@ void RenderWidget::resetInputMethod() {
void RenderWidget::didHandleGestureEvent(
const WebGestureEvent& event,
bool event_cancelled) {
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(USE_AURA)
if (event_cancelled)
return;
if (event.type == WebInputEvent::GestureTap ||

Powered by Google App Engine
This is Rietveld 408576698