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

Unified Diff: content/renderer/render_widget.cc

Issue 1278593004: Introduce ThreadedInputConnection behind a switch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 8997a58307d4207416a25d7e8cc9e1a9b69e6467..24663e675938d5d8ea3ba993f732b6f210ee0075 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -743,6 +743,8 @@ bool RenderWidget::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_SetSurfaceIdNamespace, OnSetSurfaceIdNamespace)
#if defined(OS_ANDROID)
IPC_MESSAGE_HANDLER(InputMsg_ImeEventAck, OnImeEventAck)
+ IPC_MESSAGE_HANDLER(InputMsg_RequestTextInputStateUpdate,
+ OnRequestTextInputStateUpdate)
IPC_MESSAGE_HANDLER(ViewMsg_ShowImeIfNeeded, OnShowImeIfNeeded)
#endif
IPC_MESSAGE_UNHANDLED(handled = false)
@@ -1114,8 +1116,12 @@ void RenderWidget::OnHandleInputEvent(const blink::WebInputEvent* input_event,
key_event.nativeKeyCode != AKEYCODE_DPAD_LEFT &&
key_event.nativeKeyCode != AKEYCODE_DPAD_RIGHT &&
key_event.nativeKeyCode != AKEYCODE_DPAD_UP &&
- key_event.nativeKeyCode != AKEYCODE_DPAD_DOWN)
+ key_event.nativeKeyCode != AKEYCODE_DPAD_DOWN &&
+ // We do not need to block additionally for composition key code.
+ key_event.nativeKeyCode != 229) {
+ LOG(ERROR) << "XXX OnHandleInputEvent: " << key_event.nativeKeyCode;
ime_event_guard_maybe.reset(new ImeEventGuard(this));
+ }
}
#endif
@@ -1688,6 +1694,7 @@ void RenderWidget::OnImeSetComposition(
int selection_start, int selection_end) {
if (!ShouldHandleImeEvent())
return;
+ LOG(ERROR) << "XXX OnImeSetComposition";
ImeEventGuard guard(this);
if (!webwidget_->setComposition(
text, WebVector<WebCompositionUnderline>(underlines),
@@ -1705,6 +1712,7 @@ void RenderWidget::OnImeConfirmComposition(const base::string16& text,
bool keep_selection) {
if (!ShouldHandleImeEvent())
return;
+ LOG(ERROR) << "XXX OnImeConfirmComposition";
ImeEventGuard guard(this);
handling_input_event_ = true;
if (text.length())
@@ -1788,12 +1796,20 @@ void RenderWidget::OnImeEventAck() {
DCHECK_GE(text_input_info_history_.size(), 1u);
text_input_info_history_.pop_front();
}
+
+void RenderWidget::OnRequestTextInputStateUpdate() {
+ LOG(ERROR) << "XXX OnRequestTextInputStateUpdate";
+ ImeEventGuard guard(this);
+}
#endif
bool RenderWidget::ShouldHandleImeEvent() {
#if defined(OS_ANDROID)
if (!webwidget_)
return false;
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kUseImeThread))
+ return true;
// We cannot handle IME events if there is any chance that the event we are
// receiving here from the browser is based on the state that is different
@@ -1906,7 +1922,6 @@ static bool IsDateTimeInput(ui::TextInputType type) {
type == ui::TEXT_INPUT_TYPE_WEEK;
}
-
void RenderWidget::StartHandlingImeEvent() {
DCHECK(!handling_ime_event_);
handling_ime_event_ = true;
@@ -1940,17 +1955,26 @@ void RenderWidget::UpdateTextInputState(ShowIme show_ime,
bool new_can_compose_inline = CanComposeInline();
+ bool use_ime_thread = false;
+#if defined(OS_ANDROID)
+ use_ime_thread = base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kUseImeThread);
+#endif
+
// Only sends text input params if they are changed or if the ime should be
// shown.
if (show_ime == SHOW_IME_IF_NEEDED ||
- (text_input_type_ != new_type ||
- text_input_mode_ != new_mode ||
+ (use_ime_thread && change_source == FROM_IME) ||
+ (text_input_type_ != new_type || text_input_mode_ != new_mode ||
text_input_info_ != new_info ||
can_compose_inline_ != new_can_compose_inline)
#if defined(OS_ANDROID)
|| text_field_is_dirty_
#endif
) {
+ if (change_source == FROM_IME) {
+ LOG(ERROR) << "cr.Ime UpdateTextInputState FROM_IME";
+ }
ViewHostMsg_TextInputState_Params params;
params.type = new_type;
params.mode = new_mode;
@@ -2140,6 +2164,7 @@ float RenderWidget::deviceScaleFactor() {
}
void RenderWidget::resetInputMethod() {
+ LOG(ERROR) << "XXX resetInputMethod";
ImeEventGuard guard(this);
// If the last text input type is not None, then we should finish any
// ongoing composition regardless of the new text input type.
@@ -2329,7 +2354,9 @@ void RenderWidget::setTouchAction(
void RenderWidget::didUpdateTextOfFocusedElementByNonUserInput() {
#if defined(OS_ANDROID)
- text_field_is_dirty_ = true;
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kUseImeThread))
+ text_field_is_dirty_ = true;
#endif
}

Powered by Google App Engine
This is Rietveld 408576698