Index: content/renderer/render_view_browsertest.cc |
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc |
index 25bd75ddf6df4df19ea4587e635252edc40aa72a..3d05ecda8f2897f7a00463ce4973afe5871a20ad 100644 |
--- a/content/renderer/render_view_browsertest.cc |
+++ b/content/renderer/render_view_browsertest.cc |
@@ -1667,6 +1667,37 @@ TEST_F(RenderViewImplTest, OnDeleteSurroundingText) { |
EXPECT_EQ(0, info.selectionEnd); |
} |
+TEST_F(RenderViewImplTest, OnDeleteSurroundingTextInCodePoints) { |
+ // Load an HTML page consisting of an input field. |
+ LoadHTML( |
+ "<html>" |
+ "<head>" |
+ "</head>" |
+ "<body>" |
+ // "ab" + trophy + space + "cdef" + trophy + space + "gh". |
+ "<input id=\"test1\" value=\"ab🏆 cdef🏆 gh\"></input>" |
+ "</body>" |
+ "</html>"); |
+ ExecuteJavaScriptForTests("document.getElementById('test1').focus();"); |
+ |
+ frame()->SetEditableSelectionOffsets(4, 4); |
+ frame()->DeleteSurroundingTextInCodePoints(2, 2); |
+ blink::WebInputMethodController* controller = |
+ frame()->GetWebFrame()->inputMethodController(); |
+ blink::WebTextInputInfo info = controller->textInputInfo(); |
+ // "a" + "def" + trophy + space + "gh". |
+ EXPECT_EQ(WebString::fromUTF8("adef\xF0\x9F\x8F\x86 gh"), info.value); |
+ EXPECT_EQ(1, info.selectionStart); |
+ EXPECT_EQ(1, info.selectionEnd); |
+ |
+ frame()->SetEditableSelectionOffsets(1, 3); |
+ frame()->DeleteSurroundingTextInCodePoints(1, 4); |
+ info = controller->textInputInfo(); |
+ EXPECT_EQ("deh", info.value); |
+ EXPECT_EQ(0, info.selectionStart); |
+ EXPECT_EQ(2, info.selectionEnd); |
+} |
+ |
// Test that the navigating specific frames works correctly. |
TEST_F(RenderViewImplTest, NavigateSubframe) { |
// Load page A. |