Index: content/renderer/render_widget_browsertest.cc |
diff --git a/content/renderer/render_widget_browsertest.cc b/content/renderer/render_widget_browsertest.cc |
index bd44640780f1a4c3d23b68dc4a7478f712e03049..d10ca7be36fd8ac61662292e4c0b23120625d0e0 100644 |
--- a/content/renderer/render_widget_browsertest.cc |
+++ b/content/renderer/render_widget_browsertest.cc |
@@ -23,6 +23,14 @@ class RenderWidgetTest : public RenderViewTest { |
widget()->GetCompositionRange(range); |
} |
+ void SetEditableSelectionOffsets(int start, int end) { |
+ widget()->OnImeSetEditableSelectionOffsets(10, 10); |
+ } |
+ |
+ void ExtendSelectionAndDelete(int start, int end) { |
+ widget()->OnImeExtendSelectionAndDelete(3, 4); |
+ } |
+ |
bool next_paint_is_resize_ack() { |
return widget()->next_paint_is_resize_ack(); |
} |
@@ -139,4 +147,28 @@ TEST_F(RenderWidgetTest, GetCompositionRangeInvalid) { |
EXPECT_FALSE(range.IsValid()); |
} |
+TEST_F(RenderWidgetTest, OnExtendSelectionAndDelete) { |
+ // Load an HTML page consisting of an input field. |
+ LoadHTML("<html>" |
+ "<head>" |
+ "</head>" |
+ "<body>" |
+ "<input id=\"test1\" value=\"abcdefghijklmnopqrstuvwxyz\"></input>" |
+ "</body>" |
+ "</html>"); |
+ ExecuteJavaScriptForTests("document.getElementById('test1').focus();"); |
+ SetEditableSelectionOffsets(10, 10); |
+ ExtendSelectionAndDelete(3, 4); |
+ blink::WebTextInputInfo info = widget()->webwidget()->textInputInfo(); |
+ EXPECT_EQ("abcdefgopqrstuvwxyz", info.value); |
+ EXPECT_EQ(7, info.selectionStart); |
+ EXPECT_EQ(7, info.selectionEnd); |
+ SetEditableSelectionOffsets(4, 8); |
+ ExtendSelectionAndDelete(2, 5); |
+ info = widget()->webwidget()->textInputInfo(); |
+ EXPECT_EQ("abuvwxyz", info.value); |
+ EXPECT_EQ(2, info.selectionStart); |
+ EXPECT_EQ(2, info.selectionEnd); |
+} |
+ |
} // namespace content |