| 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 788570bb87e9b0a8d6abebca3c641b7af5ec59fe..cd0aa73b8f394b3e6d7c1649e954ae49c103fd5f 100644
|
| --- a/components/test_runner/text_input_controller.cc
|
| +++ b/components/test_runner/text_input_controller.cc
|
| @@ -283,14 +283,18 @@ void TextInputController::SetComposition(const std::string& text) {
|
| key_down.windowsKeyCode = 0xE5; // VKEY_PROCESSKEY
|
| view()->handleInputEvent(key_down);
|
|
|
| + // The value returned by std::string::length() may not correspond to the
|
| + // actual number of encoded characters in sequences of multi-byte or
|
| + // variable-length characters.
|
| + blink::WebString newText = blink::WebString::fromUTF8(text);
|
| + size_t textLength = newText.length();
|
| +
|
| std::vector<blink::WebCompositionUnderline> underlines;
|
| - underlines.push_back(blink::WebCompositionUnderline(0, text.length(),
|
| - SK_ColorBLACK, false,
|
| - SK_ColorTRANSPARENT));
|
| + underlines.push_back(blink::WebCompositionUnderline(
|
| + 0, textLength, SK_ColorBLACK, false, SK_ColorTRANSPARENT));
|
| view()->setComposition(
|
| - blink::WebString::fromUTF8(text),
|
| - blink::WebVector<blink::WebCompositionUnderline>(underlines),
|
| - text.length(), text.length());
|
| + newText, blink::WebVector<blink::WebCompositionUnderline>(underlines),
|
| + textLength, textLength);
|
| }
|
|
|
| blink::WebView* TextInputController::view() {
|
|
|