| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index e01306b0e421bdcee5d147f4d81dbb7d464c3fd0..4e2ecc8d8edc8c232d6b5c4f1fbf81b2d1f9fa03 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -4390,6 +4390,47 @@ void RenderFrameImpl::WidgetWillClose() {
|
| FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WidgetWillClose());
|
| }
|
|
|
| +void RenderFrameImpl::OnImeSetComposition(
|
| + RenderWidget* render_widget,
|
| + const base::string16& text,
|
| + const std::vector<blink::WebCompositionUnderline>& underlines,
|
| + const gfx::Range& replacement_range,
|
| + int selection_start,
|
| + int selection_end) {
|
| + if (render_widget_ != render_widget)
|
| + return;
|
| +
|
| +#if defined(ENABLE_PLUGINS)
|
| + if (focused_pepper_plugin_) {
|
| + focused_pepper_plugin_->render_frame()->OnImeSetComposition(
|
| + text, underlines, selection_start, selection_end);
|
| + return;
|
| + }
|
| +#endif
|
| + AdjustReplacementRangeForAccentedCharacters(replacement_range);
|
| + render_widget_->HandleImeSetComposition(text, underlines, replacement_range,
|
| + selection_start, selection_end);
|
| +}
|
| +
|
| +void RenderFrameImpl::OnImeConfirmComposition(
|
| + RenderWidget* render_widget,
|
| + const base::string16& text,
|
| + const gfx::Range& replacement_range,
|
| + bool keep_selection) {
|
| + if (render_widget_ != render_widget)
|
| + return;
|
| +#if defined(ENABLE_PLUGINS)
|
| + if (focused_pepper_plugin_) {
|
| + focused_pepper_plugin_->render_frame()->OnImeConfirmComposition(
|
| + text, replacement_range, keep_selection);
|
| + return;
|
| + }
|
| +#endif
|
| + AdjustReplacementRangeForAccentedCharacters(replacement_range);
|
| + render_widget_->HandleImeConfirmComposition(text, replacement_range,
|
| + keep_selection);
|
| +}
|
| +
|
| bool RenderFrameImpl::IsMainFrame() {
|
| return is_main_frame_;
|
| }
|
| @@ -4623,6 +4664,20 @@ void RenderFrameImpl::SendDidCommitProvisionalLoad(
|
| navigation_state->set_transition_type(ui::PAGE_TRANSITION_LINK);
|
| }
|
|
|
| +void RenderFrameImpl::AdjustReplacementRangeForAccentedCharacters(
|
| + const gfx::Range& replacement_range) const {
|
| + if (!replacement_range.IsValid())
|
| + return;
|
| +
|
| + if (WebLocalFrame* frame =
|
| + render_view_->webview()->focusedFrame()->toWebLocalFrame()) {
|
| + WebRange webrange = WebRange::fromDocumentRange(
|
| + frame, replacement_range.start(), replacement_range.length());
|
| + if (!webrange.isNull())
|
| + frame->selectRange(webrange);
|
| + }
|
| +}
|
| +
|
| void RenderFrameImpl::didStartLoading(bool to_different_document) {
|
| TRACE_EVENT1("navigation", "RenderFrameImpl::didStartLoading",
|
| "id", routing_id_);
|
| @@ -6132,6 +6187,8 @@ void RenderFrameImpl::PepperFocusChanged(PepperPluginInstanceImpl* instance,
|
| else if (focused_pepper_plugin_ == instance)
|
| focused_pepper_plugin_ = nullptr;
|
|
|
| + GetRenderWidget()->set_focused_pepper_plugin(focused_pepper_plugin_);
|
| +
|
| GetRenderWidget()->UpdateTextInputState(ShowIme::HIDE_IME,
|
| ChangeSource::FROM_NON_IME);
|
| GetRenderWidget()->UpdateSelectionBounds();
|
|
|