| Index: Source/web/WebFrameImpl.cpp
|
| diff --git a/Source/web/WebFrameImpl.cpp b/Source/web/WebFrameImpl.cpp
|
| index 4fc38f19600ea2535cdb3a57cc34c404476d5486..7453ee2531db3a628d8efabbed6b8deafc433d5b 100644
|
| --- a/Source/web/WebFrameImpl.cpp
|
| +++ b/Source/web/WebFrameImpl.cpp
|
| @@ -74,6 +74,7 @@
|
|
|
| #include <algorithm>
|
| #include "AssociatedURLLoader.h"
|
| +#include "CompositionUnderlineVectorBuilder.h"
|
| #include "EventListenerWrapper.h"
|
| #include "FindInPageCoordinates.h"
|
| #include "HTMLNames.h"
|
| @@ -1359,6 +1360,36 @@ void WebFrameImpl::moveCaretSelection(const WebPoint& point)
|
| frame()->selection().moveTo(position, UserTriggered);
|
| }
|
|
|
| +bool WebFrameImpl::setEditableSelectionOffsets(int start, int end)
|
| +{
|
| + return frame()->inputMethodController().setEditableSelectionOffsets(PlainTextRange(start, end));
|
| +}
|
| +
|
| +bool WebFrameImpl::setCompositionFromExistingText(int compositionStart, int compositionEnd, const WebVector<WebCompositionUnderline>& underlines)
|
| +{
|
| + if (!frame()->editor().canEdit())
|
| + return false;
|
| +
|
| + InputMethodController& inputMethodController = frame()->inputMethodController();
|
| + inputMethodController.cancelComposition();
|
| +
|
| + if (compositionStart == compositionEnd)
|
| + return true;
|
| +
|
| + inputMethodController.setCompositionFromExistingText(CompositionUnderlineVectorBuilder(underlines), compositionStart, compositionEnd);
|
| +
|
| + return true;
|
| +}
|
| +
|
| +void WebFrameImpl::extendSelectionAndDelete(int before, int after)
|
| +{
|
| + if (WebPlugin* plugin = focusedPluginIfInputMethodSupported()) {
|
| + plugin->extendSelectionAndDelete(before, after);
|
| + return;
|
| + }
|
| + frame()->inputMethodController().extendSelectionAndDelete(before, after);
|
| +}
|
| +
|
| void WebFrameImpl::setCaretVisible(bool visible)
|
| {
|
| frame()->selection().setCaretVisible(visible);
|
| @@ -1378,6 +1409,14 @@ VisiblePosition WebFrameImpl::visiblePositionForWindowPoint(const WebPoint& poin
|
| return VisiblePosition();
|
| }
|
|
|
| +WebPlugin* WebFrameImpl::focusedPluginIfInputMethodSupported()
|
| +{
|
| + WebPluginContainerImpl* container = WebFrameImpl::pluginContainerFromNode(frame(), WebNode(frame()->document()->focusedElement()));
|
| + if (container && container->supportsInputMethod())
|
| + return container->plugin();
|
| + return 0;
|
| +}
|
| +
|
| int WebFrameImpl::printBegin(const WebPrintParams& printParams, const WebNode& constrainToNode)
|
| {
|
| ASSERT(!frame()->document()->isFrameSet());
|
|
|