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

Unified Diff: components/test_runner/text_input_controller.cc

Issue 2333813002: Introduce WebInputMethodController to blink (Closed)
Patch Set: Rebased Created 4 years, 1 month 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
« no previous file with comments | « components/test_runner/text_input_controller.h ('k') | components/test_runner/web_test_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/test_runner/text_input_controller.cc
diff --git a/components/test_runner/text_input_controller.cc b/components/test_runner/text_input_controller.cc
index c2241267b8bef72a4d07a80203a24516772ecfdc..71489464c93074da34170002ce132c2cef81e3f3 100644
--- a/components/test_runner/text_input_controller.cc
+++ b/components/test_runner/text_input_controller.cc
@@ -5,13 +5,16 @@
#include "components/test_runner/text_input_controller.h"
#include "base/macros.h"
+#include "components/test_runner/web_test_delegate.h"
#include "components/test_runner/web_view_test_proxy.h"
#include "gin/arguments.h"
#include "gin/handle.h"
#include "gin/object_template_builder.h"
#include "gin/wrappable.h"
#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
+#include "third_party/WebKit/public/web/WebFrameWidget.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
+#include "third_party/WebKit/public/web/WebInputMethodController.h"
#include "third_party/WebKit/public/web/WebKit.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
#include "third_party/WebKit/public/web/WebRange.h"
@@ -48,6 +51,7 @@ class TextInputControllerBindings
std::vector<int> FirstRectForCharacterRange(unsigned location,
unsigned length);
void SetComposition(const std::string& text);
+ void ForceTextInputStateUpdate();
base::WeakPtr<TextInputController> controller_;
@@ -96,8 +100,9 @@ TextInputControllerBindings::GetObjectTemplateBuilder(v8::Isolate* isolate) {
.SetMethod("selectedRange", &TextInputControllerBindings::SelectedRange)
.SetMethod("firstRectForCharacterRange",
&TextInputControllerBindings::FirstRectForCharacterRange)
- .SetMethod("setComposition",
- &TextInputControllerBindings::SetComposition);
+ .SetMethod("setComposition", &TextInputControllerBindings::SetComposition)
+ .SetMethod("forceTextInputStateUpdate",
+ &TextInputControllerBindings::ForceTextInputStateUpdate);
}
void TextInputControllerBindings::InsertText(const std::string& text) {
@@ -145,7 +150,10 @@ void TextInputControllerBindings::SetComposition(const std::string& text) {
if (controller_)
controller_->SetComposition(text);
}
-
+void TextInputControllerBindings::ForceTextInputStateUpdate() {
+ if (controller_)
+ controller_->ForceTextInputStateUpdate();
+}
// TextInputController ---------------------------------------------------------
TextInputController::TextInputController(
@@ -160,11 +168,12 @@ void TextInputController::Install(blink::WebLocalFrame* frame) {
}
void TextInputController::InsertText(const std::string& text) {
- view()->commitText(blink::WebString::fromUTF8(text), 0);
+ inputMethodController()->commitText(blink::WebString::fromUTF8(text), 0);
}
void TextInputController::UnmarkText() {
- view()->finishComposingText(blink::WebWidget::KeepSelection);
+ inputMethodController()->finishComposingText(
+ blink::WebInputMethodController::KeepSelection);
}
void TextInputController::DoCommand(const std::string& text) {
@@ -203,7 +212,8 @@ void TextInputController::SetMarkedText(const std::string& text,
underlines.push_back(underline);
}
- view()->setComposition(web_text, underlines, start, start + length);
+ inputMethodController()->setComposition(web_text, underlines, start,
+ start + length);
}
bool TextInputController::HasMarkedText() {
@@ -292,13 +302,27 @@ void TextInputController::SetComposition(const std::string& text) {
std::vector<blink::WebCompositionUnderline> underlines;
underlines.push_back(blink::WebCompositionUnderline(
0, textLength, SK_ColorBLACK, false, SK_ColorTRANSPARENT));
- view()->setComposition(
+ inputMethodController()->setComposition(
newText, blink::WebVector<blink::WebCompositionUnderline>(underlines),
textLength, textLength);
}
+void TextInputController::ForceTextInputStateUpdate() {
+ web_view_test_proxy_base_->delegate()->ForceTextInputStateUpdate(
+ view()->mainFrame());
+}
+
blink::WebView* TextInputController::view() {
return web_view_test_proxy_base_->web_view();
}
+blink::WebInputMethodController* TextInputController::inputMethodController() {
+ blink::WebLocalFrame* mainFrame = view()->mainFrame()->toWebLocalFrame();
+ if (!mainFrame) {
+ CHECK(false) << "WebView does not have a local main frame and"
+ " cannot handle input method controller tasks.";
+ }
+ return mainFrame->frameWidget()->getActiveWebInputMethodController();
+}
+
} // namespace test_runner
« no previous file with comments | « components/test_runner/text_input_controller.h ('k') | components/test_runner/web_test_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698