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

Side by Side 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: Fix ash_unittests Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/render_widget.h ('k') | ui/base/ime/dummy_input_method.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/debug/trace_event_synthetic_delay.h" 10 #include "base/debug/trace_event_synthetic_delay.h"
(...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 } else { 1191 } else {
1192 Send(response.release()); 1192 Send(response.release());
1193 } 1193 }
1194 } 1194 }
1195 1195
1196 #if defined(OS_ANDROID) 1196 #if defined(OS_ANDROID)
1197 // Allow the IME to be shown when the focus changes as a consequence 1197 // Allow the IME to be shown when the focus changes as a consequence
1198 // of a processed touch end event. 1198 // of a processed touch end event.
1199 if (input_event->type == WebInputEvent::TouchEnd && processed) 1199 if (input_event->type == WebInputEvent::TouchEnd && processed)
1200 UpdateTextInputState(true, true); 1200 UpdateTextInputState(true, true);
1201 #elif defined(USE_AURA)
1202 // Show the virtual keyboard if enabled and a user gesture triggers a focus
1203 // change.
1204 if (processed && (input_event->type == WebInputEvent::TouchEnd ||
1205 input_event->type == WebInputEvent::MouseUp))
1206 UpdateTextInputState(true, false);
1201 #endif 1207 #endif
1202 1208
1203 TRACE_EVENT_SYNTHETIC_DELAY_END("blink.HandleInputEvent"); 1209 TRACE_EVENT_SYNTHETIC_DELAY_END("blink.HandleInputEvent");
1204 handling_input_event_ = false; 1210 handling_input_event_ = false;
1205 1211
1206 if (!prevent_default) { 1212 if (!prevent_default) {
1207 if (WebInputEvent::isKeyboardEventType(input_event->type)) 1213 if (WebInputEvent::isKeyboardEventType(input_event->type))
1208 DidHandleKeyEvent(); 1214 DidHandleKeyEvent();
1209 if (WebInputEvent::isMouseEventType(input_event->type)) 1215 if (WebInputEvent::isMouseEventType(input_event->type))
1210 DidHandleMouseEvent(*(static_cast<const WebMouseEvent*>(input_event))); 1216 DidHandleMouseEvent(*(static_cast<const WebMouseEvent*>(input_event)));
(...skipping 1285 matching lines...) Expand 10 before | Expand all | Expand 10 after
2496 Send(new ViewHostMsg_TextInputTypeChanged(routing_id(), 2502 Send(new ViewHostMsg_TextInputTypeChanged(routing_id(),
2497 new_type, 2503 new_type,
2498 new_mode, 2504 new_mode,
2499 new_can_compose_inline)); 2505 new_can_compose_inline));
2500 text_input_type_ = new_type; 2506 text_input_type_ = new_type;
2501 can_compose_inline_ = new_can_compose_inline; 2507 can_compose_inline_ = new_can_compose_inline;
2502 text_input_mode_ = new_mode; 2508 text_input_mode_ = new_mode;
2503 } 2509 }
2504 } 2510 }
2505 2511
2506 #if defined(OS_ANDROID) 2512 #if defined(OS_ANDROID) || defined(USE_AURA)
2507 void RenderWidget::UpdateTextInputState(bool show_ime_if_needed, 2513 void RenderWidget::UpdateTextInputState(bool show_ime_if_needed,
2508 bool send_ime_ack) { 2514 bool send_ime_ack) {
2509 if (handling_ime_event_) 2515 if (handling_ime_event_)
2510 return; 2516 return;
2511 if (!show_ime_if_needed && !input_method_is_active_) 2517 if (!show_ime_if_needed && !input_method_is_active_)
2512 return; 2518 return;
2513 ui::TextInputType new_type = GetTextInputType(); 2519 ui::TextInputType new_type = GetTextInputType();
2514 if (IsDateTimeInput(new_type)) 2520 if (IsDateTimeInput(new_type))
2515 return; // Not considered as a text input field in WebKit/Chromium. 2521 return; // Not considered as a text input field in WebKit/Chromium.
2516 2522
2517 blink::WebTextInputInfo new_info; 2523 blink::WebTextInputInfo new_info;
2518 if (webwidget_) 2524 if (webwidget_)
2519 new_info = webwidget_->textInputInfo(); 2525 new_info = webwidget_->textInputInfo();
2520 2526
2521 bool new_can_compose_inline = CanComposeInline(); 2527 bool new_can_compose_inline = CanComposeInline();
2522 2528
2523 // Only sends text input params if they are changed or if the ime should be 2529 // Only sends text input params if they are changed or if the ime should be
2524 // shown. 2530 // shown.
2525 if (show_ime_if_needed || (text_input_type_ != new_type 2531 if (show_ime_if_needed || (text_input_type_ != new_type
2526 || text_input_info_ != new_info 2532 || text_input_info_ != new_info
2527 || can_compose_inline_ != new_can_compose_inline)) { 2533 || can_compose_inline_ != new_can_compose_inline)) {
2528 ViewHostMsg_TextInputState_Params p; 2534 ViewHostMsg_TextInputState_Params p;
2535 #if defined(USE_AURA)
2536 p.require_ack = false;
2537 #endif
2529 p.type = new_type; 2538 p.type = new_type;
2530 p.value = new_info.value.utf8(); 2539 p.value = new_info.value.utf8();
2531 p.selection_start = new_info.selectionStart; 2540 p.selection_start = new_info.selectionStart;
2532 p.selection_end = new_info.selectionEnd; 2541 p.selection_end = new_info.selectionEnd;
2533 p.composition_start = new_info.compositionStart; 2542 p.composition_start = new_info.compositionStart;
2534 p.composition_end = new_info.compositionEnd; 2543 p.composition_end = new_info.compositionEnd;
2535 p.can_compose_inline = new_can_compose_inline; 2544 p.can_compose_inline = new_can_compose_inline;
2536 p.show_ime_if_needed = show_ime_if_needed; 2545 p.show_ime_if_needed = show_ime_if_needed;
2546 #if defined(OS_ANDROID)
2537 p.require_ack = send_ime_ack; 2547 p.require_ack = send_ime_ack;
2538 if (p.require_ack) 2548 if (p.require_ack)
2539 IncrementOutstandingImeEventAcks(); 2549 IncrementOutstandingImeEventAcks();
2550 #endif
2540 Send(new ViewHostMsg_TextInputStateChanged(routing_id(), p)); 2551 Send(new ViewHostMsg_TextInputStateChanged(routing_id(), p));
2541 2552
2542 text_input_info_ = new_info; 2553 text_input_info_ = new_info;
2543 text_input_type_ = new_type; 2554 text_input_type_ = new_type;
2544 can_compose_inline_ = new_can_compose_inline; 2555 can_compose_inline_ = new_can_compose_inline;
2545 } 2556 }
2546 } 2557 }
2547 #endif 2558 #endif
2548 2559
2549 void RenderWidget::GetSelectionBounds(gfx::Rect* focus, gfx::Rect* anchor) { 2560 void RenderWidget::GetSelectionBounds(gfx::Rect* focus, gfx::Rect* anchor) {
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
2705 } 2716 }
2706 2717
2707 #if defined(OS_MACOSX) || defined(OS_WIN) || defined(USE_AURA) 2718 #if defined(OS_MACOSX) || defined(OS_WIN) || defined(USE_AURA)
2708 UpdateCompositionInfo(true); 2719 UpdateCompositionInfo(true);
2709 #endif 2720 #endif
2710 } 2721 }
2711 2722
2712 void RenderWidget::didHandleGestureEvent( 2723 void RenderWidget::didHandleGestureEvent(
2713 const WebGestureEvent& event, 2724 const WebGestureEvent& event,
2714 bool event_cancelled) { 2725 bool event_cancelled) {
2715 #if defined(OS_ANDROID) 2726 #if defined(OS_ANDROID) || defined(USE_AURA)
2716 if (event_cancelled) 2727 if (event_cancelled)
2717 return; 2728 return;
2718 if (event.type == WebInputEvent::GestureTap || 2729 if (event.type == WebInputEvent::GestureTap ||
2719 event.type == WebInputEvent::GestureLongPress) { 2730 event.type == WebInputEvent::GestureLongPress) {
2720 UpdateTextInputState(true, true); 2731 UpdateTextInputState(true, true);
2721 } 2732 }
2722 #endif 2733 #endif
2723 } 2734 }
2724 2735
2725 void RenderWidget::SchedulePluginMove(const WebPluginGeometry& move) { 2736 void RenderWidget::SchedulePluginMove(const WebPluginGeometry& move) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
2873 surface_id(), 2884 surface_id(),
2874 GetURLForGraphicsContext3D(), 2885 GetURLForGraphicsContext3D(),
2875 gpu_channel_host.get(), 2886 gpu_channel_host.get(),
2876 attributes, 2887 attributes,
2877 false /* bind generates resources */, 2888 false /* bind generates resources */,
2878 limits)); 2889 limits));
2879 return context.Pass(); 2890 return context.Pass();
2880 } 2891 }
2881 2892
2882 } // namespace content 2893 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | ui/base/ime/dummy_input_method.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698