| OLD | NEW |
| 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 <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 1517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1528 } | 1528 } |
| 1529 #endif | 1529 #endif |
| 1530 if (replacement_range.IsValid()) { | 1530 if (replacement_range.IsValid()) { |
| 1531 GetWebWidget()->applyReplacementRange( | 1531 GetWebWidget()->applyReplacementRange( |
| 1532 WebRange(replacement_range.start(), replacement_range.length())); | 1532 WebRange(replacement_range.start(), replacement_range.length())); |
| 1533 } | 1533 } |
| 1534 | 1534 |
| 1535 if (!ShouldHandleImeEvent()) | 1535 if (!ShouldHandleImeEvent()) |
| 1536 return; | 1536 return; |
| 1537 ImeEventGuard guard(this); | 1537 ImeEventGuard guard(this); |
| 1538 blink::WebInputMethodController* controller = GetInputMethodController(); | 1538 blink::WebInputMethodController* controller = |
| 1539 GetWebWidget()->getActiveInputMethodController(); |
| 1539 DCHECK(controller); | 1540 DCHECK(controller); |
| 1540 if (!controller || | 1541 if (!controller || |
| 1541 !controller->setComposition( | 1542 !controller->setComposition( |
| 1542 text, WebVector<WebCompositionUnderline>(underlines), selection_start, | 1543 text, WebVector<WebCompositionUnderline>(underlines), selection_start, |
| 1543 selection_end)) { | 1544 selection_end)) { |
| 1544 // If we failed to set the composition text, then we need to let the browser | 1545 // If we failed to set the composition text, then we need to let the browser |
| 1545 // process to cancel the input method's ongoing composition session, to make | 1546 // process to cancel the input method's ongoing composition session, to make |
| 1546 // sure we are in a consistent state. | 1547 // sure we are in a consistent state. |
| 1547 Send(new InputHostMsg_ImeCancelComposition(routing_id())); | 1548 Send(new InputHostMsg_ImeCancelComposition(routing_id())); |
| 1548 } | 1549 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1561 #endif | 1562 #endif |
| 1562 if (replacement_range.IsValid()) { | 1563 if (replacement_range.IsValid()) { |
| 1563 GetWebWidget()->applyReplacementRange( | 1564 GetWebWidget()->applyReplacementRange( |
| 1564 WebRange(replacement_range.start(), replacement_range.length())); | 1565 WebRange(replacement_range.start(), replacement_range.length())); |
| 1565 } | 1566 } |
| 1566 | 1567 |
| 1567 if (!ShouldHandleImeEvent()) | 1568 if (!ShouldHandleImeEvent()) |
| 1568 return; | 1569 return; |
| 1569 ImeEventGuard guard(this); | 1570 ImeEventGuard guard(this); |
| 1570 input_handler_->set_handling_input_event(true); | 1571 input_handler_->set_handling_input_event(true); |
| 1571 if (auto* controller = GetInputMethodController()) | 1572 if (auto* controller = GetWebWidget()->getActiveInputMethodController()) |
| 1572 controller->commitText(text, relative_cursor_pos); | 1573 controller->commitText(text, relative_cursor_pos); |
| 1573 input_handler_->set_handling_input_event(false); | 1574 input_handler_->set_handling_input_event(false); |
| 1574 UpdateCompositionInfo(false /* not an immediate request */); | 1575 UpdateCompositionInfo(false /* not an immediate request */); |
| 1575 } | 1576 } |
| 1576 | 1577 |
| 1577 void RenderWidget::OnImeFinishComposingText(bool keep_selection) { | 1578 void RenderWidget::OnImeFinishComposingText(bool keep_selection) { |
| 1578 #if BUILDFLAG(ENABLE_PLUGINS) | 1579 #if BUILDFLAG(ENABLE_PLUGINS) |
| 1579 if (focused_pepper_plugin_) { | 1580 if (focused_pepper_plugin_) { |
| 1580 focused_pepper_plugin_->render_frame()->OnImeFinishComposingText( | 1581 focused_pepper_plugin_->render_frame()->OnImeFinishComposingText( |
| 1581 keep_selection); | 1582 keep_selection); |
| 1582 return; | 1583 return; |
| 1583 } | 1584 } |
| 1584 #endif | 1585 #endif |
| 1585 | 1586 |
| 1586 if (!ShouldHandleImeEvent()) | 1587 if (!ShouldHandleImeEvent()) |
| 1587 return; | 1588 return; |
| 1588 ImeEventGuard guard(this); | 1589 ImeEventGuard guard(this); |
| 1589 input_handler_->set_handling_input_event(true); | 1590 input_handler_->set_handling_input_event(true); |
| 1590 if (auto* controller = GetInputMethodController()) { | 1591 if (auto* controller = GetWebWidget()->getActiveInputMethodController()) { |
| 1591 controller->finishComposingText( | 1592 controller->finishComposingText( |
| 1592 keep_selection ? WebInputMethodController::KeepSelection | 1593 keep_selection ? WebInputMethodController::KeepSelection |
| 1593 : WebInputMethodController::DoNotKeepSelection); | 1594 : WebInputMethodController::DoNotKeepSelection); |
| 1594 } | 1595 } |
| 1595 input_handler_->set_handling_input_event(false); | 1596 input_handler_->set_handling_input_event(false); |
| 1596 UpdateCompositionInfo(false /* not an immediate request */); | 1597 UpdateCompositionInfo(false /* not an immediate request */); |
| 1597 } | 1598 } |
| 1598 | 1599 |
| 1599 void RenderWidget::OnDeviceScaleFactorChanged() { | 1600 void RenderWidget::OnDeviceScaleFactorChanged() { |
| 1600 if (!compositor_) | 1601 if (!compositor_) |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2133 return web_screen_info; | 2134 return web_screen_info; |
| 2134 } | 2135 } |
| 2135 | 2136 |
| 2136 void RenderWidget::resetInputMethod() { | 2137 void RenderWidget::resetInputMethod() { |
| 2137 ImeEventGuard guard(this); | 2138 ImeEventGuard guard(this); |
| 2138 // If the last text input type is not None, then we should finish any | 2139 // If the last text input type is not None, then we should finish any |
| 2139 // ongoing composition regardless of the new text input type. | 2140 // ongoing composition regardless of the new text input type. |
| 2140 if (text_input_type_ != ui::TEXT_INPUT_TYPE_NONE) { | 2141 if (text_input_type_ != ui::TEXT_INPUT_TYPE_NONE) { |
| 2141 // If a composition text exists, then we need to let the browser process | 2142 // If a composition text exists, then we need to let the browser process |
| 2142 // to cancel the input method's ongoing composition session. | 2143 // to cancel the input method's ongoing composition session. |
| 2143 blink::WebInputMethodController* controller = GetInputMethodController(); | 2144 blink::WebInputMethodController* controller = |
| 2145 GetWebWidget()->getActiveInputMethodController(); |
| 2144 if (controller && | 2146 if (controller && |
| 2145 controller->finishComposingText( | 2147 controller->finishComposingText( |
| 2146 WebInputMethodController::DoNotKeepSelection)) | 2148 WebInputMethodController::DoNotKeepSelection)) |
| 2147 Send(new InputHostMsg_ImeCancelComposition(routing_id())); | 2149 Send(new InputHostMsg_ImeCancelComposition(routing_id())); |
| 2148 } | 2150 } |
| 2149 | 2151 |
| 2150 UpdateCompositionInfo(false /* not an immediate request */); | 2152 UpdateCompositionInfo(false /* not an immediate request */); |
| 2151 } | 2153 } |
| 2152 | 2154 |
| 2153 #if defined(OS_ANDROID) | 2155 #if defined(OS_ANDROID) |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2299 gfx::Vector2d imageOffset(offset_in_window.x, offset_in_window.y); | 2301 gfx::Vector2d imageOffset(offset_in_window.x, offset_in_window.y); |
| 2300 Send(new DragHostMsg_StartDragging(routing_id(), drop_data, mask, | 2302 Send(new DragHostMsg_StartDragging(routing_id(), drop_data, mask, |
| 2301 image.getSkBitmap(), imageOffset, | 2303 image.getSkBitmap(), imageOffset, |
| 2302 possible_drag_event_info_)); | 2304 possible_drag_event_info_)); |
| 2303 } | 2305 } |
| 2304 | 2306 |
| 2305 blink::WebWidget* RenderWidget::GetWebWidget() const { | 2307 blink::WebWidget* RenderWidget::GetWebWidget() const { |
| 2306 return webwidget_internal_; | 2308 return webwidget_internal_; |
| 2307 } | 2309 } |
| 2308 | 2310 |
| 2309 blink::WebInputMethodController* RenderWidget::GetInputMethodController() | |
| 2310 const { | |
| 2311 // TODO(ekaramad): Remove this CHECK when GetWebWidget() is | |
| 2312 // always a WebFrameWidget. | |
| 2313 CHECK(GetWebWidget()->isWebFrameWidget()); | |
| 2314 return static_cast<blink::WebFrameWidget*>(GetWebWidget()) | |
| 2315 ->getActiveWebInputMethodController(); | |
| 2316 } | |
| 2317 | |
| 2318 } // namespace content | 2311 } // namespace content |
| OLD | NEW |