New issue
Advanced search Search tips

Issue 626746 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Bug

Blocking:
issue 578168



Sign in to add a comment

Move IME logic from RenderView to RenderWidget and Implement IME methods for WebFrameWidgetImpl

Project Member Reported by ekaramad@chromium.org, Jul 8 2016

Issue description

In order to make OOPIF-IME heppen, the IME logic needs to be moved to Widget, that is:

1- Move the current logic from RenderViewImpl to RenderWidget
2- Implement the methods related to IME inside WebFramWidgetImpl rather than just delegating it to WebViewImpl.

The list of methods to be implemented in WebFrameWidgetImpl is:
setComposition.
confirmComposition (all signatures)
textInputInfo
textInputType
compositionRange.

Any further methods should be appended to this bug for proper tracking. Since IME requires knowledge of focused LocalFrame and WebPlugin, this change will lead to adding extra methods to both RenderWidget and WebWidget.


 
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2a46d63b3c442f1f0d26cd1484c25eb766a064bc

commit 2a46d63b3c442f1f0d26cd1484c25eb766a064bc
Author: ekaramad <ekaramad@chromium.org>
Date: Tue Jul 19 13:33:09 2016

OOPIF IME: Renderer Side Changes

Currently, all IME-related IPC are handled at the RenderViewImpl first
before calling the base class
methods on RenderWidget (ImeSetComposition and
ImeConfirmComposition). Further, to query IME-related
state, e.g., GetTextInputType(), RenderViewImpl overrides the method
from RenderWidget so that it can access the
state from pepper plugin.

These overrides are needed to either:
1- Access focused PepperPluginInstacneImpl to set/get IME-related
state.
2- Use focused frame to set/get IME-related state.

This CL removes all those methods from RenderViewImpl and handles
them in RenderWidget. To this end, a reference to
the focused plugin is kept in RenderWidget and updated by its owning
RenderFrame (to get IME-related state). Also, new API is added to blink
to enable RenderWidget handle IME tasks related to focusedFrame.

In line with the separation of WebViewImpl from WebWidget,
as well as avoiding potential race conditions between
mutiple Widgets on the same process, most of the IME-
related WebWidget methods are now specifically
implemented for WebFrameWidgetImpl.

Finally, a new private API is added to WebFrameWidgetImpl to help the
widget distinguish between in process frames which do or do not belong
to widget's local root.

BUG= 578168 , 618774 , 626746 

Review-Url: https://codereview.chromium.org/2029423003
Cr-Commit-Position: refs/heads/master@{#406263}

[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/content/renderer/render_view_impl.cc
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/content/renderer/render_view_impl.h
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/content/renderer/render_widget.cc
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/content/renderer/render_widget.h
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/third_party/WebKit/Source/web/WebFrameWidgetImpl.h
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/third_party/WebKit/Source/web/WebViewImpl.h
[modify] https://crrev.com/2a46d63b3c442f1f0d26cd1484c25eb766a064bc/third_party/WebKit/public/web/WebWidget.h

Closing the bug as the CL above moves the logic from RenderViewImpl to RenderWidget.
Status: Fixed (was: Started)

Sign in to add a comment