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

Side by Side Diff: third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp

Issue 2934913002: Re-add content-independent marker tests to InputMethodControllerTest (Closed)
Patch Set: Re-add missing test, fix mixed-up test case names Created 3 years, 6 months 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/editing/InputMethodController.h" 5 #include "core/editing/InputMethodController.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/dom/Element.h" 9 #include "core/dom/Element.h"
10 #include "core/dom/Range.h" 10 #include "core/dom/Range.h"
(...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 Vector<CompositionUnderline> empty_underlines; 1512 Vector<CompositionUnderline> empty_underlines;
1513 Controller().SetEditableSelectionOffsets(PlainTextRange(4, 8)); 1513 Controller().SetEditableSelectionOffsets(PlainTextRange(4, 8));
1514 Controller().CommitText(String(""), empty_underlines, 0); 1514 Controller().CommitText(String(""), empty_underlines, 0);
1515 EXPECT_STREQ("Abc Ghi", input->value().Utf8().data()); 1515 EXPECT_STREQ("Abc Ghi", input->value().Utf8().data());
1516 1516
1517 Controller().SetEditableSelectionOffsets(PlainTextRange(4, 7)); 1517 Controller().SetEditableSelectionOffsets(PlainTextRange(4, 7));
1518 Controller().CommitText(String("1"), empty_underlines, 0); 1518 Controller().CommitText(String("1"), empty_underlines, 0);
1519 EXPECT_STREQ("Abc 1", input->value().Utf8().data()); 1519 EXPECT_STREQ("Abc 1", input->value().Utf8().data());
1520 } 1520 }
1521 1521
1522 static String GetMarkedText(
1523 DocumentMarkerController& document_marker_controller,
1524 Node* node,
1525 int marker_index) {
1526 DocumentMarker* marker = document_marker_controller.Markers()[marker_index];
1527 return node->textContent().Substring(
1528 marker->StartOffset(), marker->EndOffset() - marker->StartOffset());
1529 }
1530
1531 TEST_F(InputMethodControllerTest,
1532 Marker_WhitespaceFixupAroundContentIndependentMarkerNotContainingSpace) {
1533 Element* div = InsertHTMLElement(
1534 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1535
1536 // Add marker under "text" (use TextMatch since Composition markers don't
1537 // persist across editing operations)
1538 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1539 GetDocument().Markers().AddActiveSuggestionMarker(
1540 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1541 Color::kBlack);
1542 // Delete "Initial"
1543 Vector<CompositionUnderline> empty_underlines;
1544 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1545 Controller().CommitText(String(""), empty_underlines, 0);
1546
1547 // Delete "blah"
1548 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1549 Controller().CommitText(String(""), empty_underlines, 0);
1550
1551 // Check that the marker is still attached to "text" and doesn't include
1552 // either space around it
1553 EXPECT_EQ(1u, GetDocument().Markers().MarkersFor(div->firstChild()).size());
1554 EXPECT_STREQ("text",
1555 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1556 .Utf8()
1557 .data());
1558 }
1559
1560 TEST_F(InputMethodControllerTest,
1561 Marker_WhitespaceFixupAroundContentIndependentMarkerBeginningWithSpace) {
1562 Element* div = InsertHTMLElement(
1563 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1564
1565 // Add marker under " text" (use TextMatch since Composition markers don't
1566 // persist across editing operations)
1567 EphemeralRange marker_range = PlainTextRange(7, 12).CreateRange(*div);
1568 GetDocument().Markers().AddActiveSuggestionMarker(
1569 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1570 Color::kBlack);
1571 // Delete "Initial"
1572 Vector<CompositionUnderline> empty_underlines;
1573 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1574 Controller().CommitText(String(""), empty_underlines, 0);
1575
1576 // Delete "blah"
1577 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1578 Controller().CommitText(String(""), empty_underlines, 0);
1579
1580 // Check that the marker is still attached to " text" and includes the space
1581 // before "text" but not the space after
1582 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1583 ASSERT_STREQ("\xC2\xA0text",
1584 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1585 .Utf8()
1586 .data());
1587 }
1588
1589 TEST_F(InputMethodControllerTest,
1590 Marker_WhitespaceFixupAroundContentIndependentMarkerEndingWithSpace) {
1591 Element* div = InsertHTMLElement(
1592 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1593
1594 // Add marker under "text " (use TextMatch since Composition markers don't
1595 // persist across editing operations)
1596 EphemeralRange marker_range = PlainTextRange(8, 13).CreateRange(*div);
1597 GetDocument().Markers().AddActiveSuggestionMarker(
1598 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1599 Color::kBlack);
1600 // Delete "Initial"
1601 Vector<CompositionUnderline> empty_underlines;
1602 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1603 Controller().CommitText(String(""), empty_underlines, 0);
1604
1605 // Delete "blah"
1606 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1607 Controller().CommitText(String(""), empty_underlines, 0);
1608
1609 // Check that the marker is still attached to "text " and includes the space
1610 // after "text" but not the space before
1611 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1612 ASSERT_STREQ("text\xC2\xA0",
1613 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1614 .Utf8()
1615 .data());
1616 }
1617
1618 TEST_F(
1619 InputMethodControllerTest,
1620 Marker_WhitespaceFixupAroundContentIndependentMarkerBeginningAndEndingWithSp aces) {
1621 Element* div = InsertHTMLElement(
1622 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1623
1624 // Add marker under " text " (use TextMatch since Composition markers don't
1625 // persist across editing operations)
1626 EphemeralRange marker_range = PlainTextRange(7, 13).CreateRange(*div);
1627 GetDocument().Markers().AddActiveSuggestionMarker(
1628 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1629 Color::kBlack);
1630
1631 // Delete "Initial"
1632 Vector<CompositionUnderline> empty_underlines;
1633 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1634 Controller().CommitText(String(""), empty_underlines, 0);
1635
1636 // Delete "blah"
1637 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1638 Controller().CommitText(String(""), empty_underlines, 0);
1639
1640 // Check that the marker is still attached to " text " and includes both the
1641 // space before "text" and the space after
1642 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1643 ASSERT_STREQ("\xC2\xA0text\xC2\xA0",
1644 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1645 .Utf8()
1646 .data());
1647 }
1648
1522 TEST_F(InputMethodControllerTest, ContentDependentMarker_ReplaceStartOfMarker) { 1649 TEST_F(InputMethodControllerTest, ContentDependentMarker_ReplaceStartOfMarker) {
1523 Element* div = InsertHTMLElement( 1650 Element* div = InsertHTMLElement(
1524 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1651 "<div id='sample' contenteditable>Initial text</div>", "sample");
1525 1652
1526 // Add marker under "Initial text" 1653 // Add marker under "Initial text"
1527 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div); 1654 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div);
1528 GetDocument().Markers().AddTextMatchMarker( 1655 GetDocument().Markers().AddTextMatchMarker(
1529 marker_range, TextMatchMarker::MatchStatus::kInactive); 1656 marker_range, TextMatchMarker::MatchStatus::kInactive);
1530 1657
1531 // Replace "Initial" with "Original" 1658 // Replace "Initial" with "Original"
1532 Vector<CompositionUnderline> empty_underlines; 1659 Vector<CompositionUnderline> empty_underlines;
1533 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7); 1660 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1534 Controller().CommitText(String("Original"), empty_underlines, 0); 1661 Controller().CommitText(String("Original"), empty_underlines, 0);
1535 1662
1536 // Verify marker was removed 1663 // Verify marker was removed
1537 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1664 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1538 } 1665 }
1539 1666
1540 TEST_F(InputMethodControllerTest, 1667 TEST_F(InputMethodControllerTest,
1668 ContentIndependentMarker_ReplaceStartOfMarker) {
1669 Element* div = InsertHTMLElement(
1670 "<div id='sample' contenteditable>Initial text</div>", "sample");
1671
1672 // Add marker under "Initial text"
1673 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div);
1674 GetDocument().Markers().AddActiveSuggestionMarker(
1675 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1676 Color::kBlack);
1677
1678 // Replace "Initial" with "Original"
1679 Vector<CompositionUnderline> empty_underlines;
1680 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1681 Controller().CommitText(String("Original"), empty_underlines, 0);
1682
1683 // Verify marker is under "Original text"
1684 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1685 ASSERT_STREQ("Original text",
1686 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1687 .Utf8()
1688 .data());
1689 }
1690
1691 TEST_F(InputMethodControllerTest,
1541 ContentDependentMarker_ReplaceTextContainsStartOfMarker) { 1692 ContentDependentMarker_ReplaceTextContainsStartOfMarker) {
1542 Element* div = InsertHTMLElement( 1693 Element* div = InsertHTMLElement(
1543 "<div id='sample' contenteditable>This is some initial text</div>", 1694 "<div id='sample' contenteditable>This is some initial text</div>",
1544 "sample"); 1695 "sample");
1545 1696
1546 // Add marker under "initial text" 1697 // Add marker under "initial text"
1547 EphemeralRange marker_range = PlainTextRange(13, 25).CreateRange(*div); 1698 EphemeralRange marker_range = PlainTextRange(13, 25).CreateRange(*div);
1548 GetDocument().Markers().AddTextMatchMarker( 1699 GetDocument().Markers().AddTextMatchMarker(
1549 marker_range, TextMatchMarker::MatchStatus::kInactive); 1700 marker_range, TextMatchMarker::MatchStatus::kInactive);
1550 1701
1551 // Replace "some initial" with "boring" 1702 // Replace "some initial" with "boring"
1552 Vector<CompositionUnderline> empty_underlines; 1703 Vector<CompositionUnderline> empty_underlines;
1553 Controller().SetCompositionFromExistingText(empty_underlines, 8, 20); 1704 Controller().SetCompositionFromExistingText(empty_underlines, 8, 20);
1554 Controller().CommitText(String("boring"), empty_underlines, 0); 1705 Controller().CommitText(String("boring"), empty_underlines, 0);
1555 1706
1556 // Verify marker was removed 1707 // Verify marker was removed
1557 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1708 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1558 } 1709 }
1559 1710
1711 TEST_F(InputMethodControllerTest,
1712 ContentIndependentMarker_ReplaceTextContainsStartOfMarker) {
1713 Element* div = InsertHTMLElement(
1714 "<div id='sample' contenteditable>This is some initial text</div>",
1715 "sample");
1716
1717 // Add marker under "initial text"
1718 EphemeralRange marker_range = PlainTextRange(13, 25).CreateRange(*div);
1719 GetDocument().Markers().AddActiveSuggestionMarker(
1720 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1721 Color::kBlack);
1722
1723 // Replace "some initial" with "boring"
1724 Vector<CompositionUnderline> empty_underlines;
1725 Controller().SetCompositionFromExistingText(empty_underlines, 8, 20);
1726 Controller().CommitText(String("boring"), empty_underlines, 0);
1727
1728 // Verify marker is under " text"
1729 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1730 EXPECT_STREQ(" text",
1731 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1732 .Utf8()
1733 .data());
1734 }
1735
1560 TEST_F(InputMethodControllerTest, ContentDependentMarker_ReplaceEndOfMarker) { 1736 TEST_F(InputMethodControllerTest, ContentDependentMarker_ReplaceEndOfMarker) {
1561 Element* div = InsertHTMLElement( 1737 Element* div = InsertHTMLElement(
1562 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1738 "<div id='sample' contenteditable>Initial text</div>", "sample");
1563 1739
1564 // Add marker under "Initial text" 1740 // Add marker under "Initial text"
1565 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div); 1741 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div);
1566 GetDocument().Markers().AddTextMatchMarker( 1742 GetDocument().Markers().AddTextMatchMarker(
1567 marker_range, TextMatchMarker::MatchStatus::kInactive); 1743 marker_range, TextMatchMarker::MatchStatus::kInactive);
1568 1744
1569 // Replace "text" with "string" 1745 // Replace "text" with "string"
1570 Vector<CompositionUnderline> empty_underlines; 1746 Vector<CompositionUnderline> empty_underlines;
1571 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12); 1747 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12);
1572 Controller().CommitText(String("string"), empty_underlines, 0); 1748 Controller().CommitText(String("string"), empty_underlines, 0);
1573 1749
1574 // Verify marker was removed 1750 // Verify marker was removed
1575 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1751 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1576 } 1752 }
1577 1753
1754 TEST_F(InputMethodControllerTest, ContentIndependentMarker_ReplaceEndOfMarker) {
1755 Element* div = InsertHTMLElement(
1756 "<div id='sample' contenteditable>Initial text</div>", "sample");
1757
1758 // Add marker under "Initial text"
1759 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div);
1760 GetDocument().Markers().AddActiveSuggestionMarker(
1761 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1762 Color::kBlack);
1763
1764 // Replace "text" with "string"
1765 Vector<CompositionUnderline> empty_underlines;
1766 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12);
1767 Controller().CommitText(String("string"), empty_underlines, 0);
1768
1769 // Verify marker is under "Initial string"
1770 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1771 ASSERT_STREQ("Initial string",
1772 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1773 .Utf8()
1774 .data());
1775 }
1776
1578 TEST_F(InputMethodControllerTest, 1777 TEST_F(InputMethodControllerTest,
1579 ContentDependentMarker_ReplaceTextContainsEndOfMarker) { 1778 ContentDependentMarker_ReplaceTextContainsEndOfMarker) {
1580 Element* div = InsertHTMLElement( 1779 Element* div = InsertHTMLElement(
1581 "<div id='sample' contenteditable>This is some initial text</div>", 1780 "<div id='sample' contenteditable>This is some initial text</div>",
1582 "sample"); 1781 "sample");
1583 1782
1584 // Add marker under "some initial" 1783 // Add marker under "some initial"
1585 EphemeralRange marker_range = PlainTextRange(8, 20).CreateRange(*div); 1784 EphemeralRange marker_range = PlainTextRange(8, 20).CreateRange(*div);
1586 GetDocument().Markers().AddTextMatchMarker( 1785 GetDocument().Markers().AddTextMatchMarker(
1587 marker_range, TextMatchMarker::MatchStatus::kInactive); 1786 marker_range, TextMatchMarker::MatchStatus::kInactive);
1588 1787
1589 // Replace "initial text" with "content" 1788 // Replace "initial text" with "content"
1590 Vector<CompositionUnderline> empty_underlines; 1789 Vector<CompositionUnderline> empty_underlines;
1591 Controller().SetCompositionFromExistingText(empty_underlines, 13, 25); 1790 Controller().SetCompositionFromExistingText(empty_underlines, 13, 25);
1592 Controller().CommitText(String("content"), empty_underlines, 0); 1791 Controller().CommitText(String("content"), empty_underlines, 0);
1593 1792
1594 EXPECT_STREQ("This is some content", div->innerHTML().Utf8().data()); 1793 EXPECT_STREQ("This is some content", div->innerHTML().Utf8().data());
1595 1794
1596 // Verify marker was removed 1795 // Verify marker was removed
1597 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1796 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1598 } 1797 }
1599 1798
1799 TEST_F(InputMethodControllerTest,
1800 ContentIndependentMarker_ReplaceTextContainsEndOfMarker) {
1801 Element* div = InsertHTMLElement(
1802 "<div id='sample' contenteditable>This is some initial text</div>",
1803 "sample");
1804
1805 // Add marker under "some initial"
1806 EphemeralRange marker_range = PlainTextRange(8, 20).CreateRange(*div);
1807 GetDocument().Markers().AddActiveSuggestionMarker(
1808 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1809 Color::kBlack);
1810
1811 // Replace "initial text" with "content"
1812 Vector<CompositionUnderline> empty_underlines;
1813 Controller().SetCompositionFromExistingText(empty_underlines, 13, 25);
1814 Controller().CommitText(String("content"), empty_underlines, 0);
1815
1816 EXPECT_STREQ("This is some content", div->innerHTML().Utf8().data());
1817
1818 // Verify marker is under "some "
1819 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1820 ASSERT_STREQ("some ",
1821 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1822 .Utf8()
1823 .data());
1824 }
1825
1600 TEST_F(InputMethodControllerTest, ContentDependentMarker_ReplaceEntireMarker) { 1826 TEST_F(InputMethodControllerTest, ContentDependentMarker_ReplaceEntireMarker) {
1601 Element* div = InsertHTMLElement( 1827 Element* div = InsertHTMLElement(
1602 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1828 "<div id='sample' contenteditable>Initial text</div>", "sample");
1603 1829
1604 // Add marker under "text" 1830 // Add marker under "text"
1605 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div); 1831 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1606 GetDocument().Markers().AddTextMatchMarker( 1832 GetDocument().Markers().AddTextMatchMarker(
1607 marker_range, TextMatchMarker::MatchStatus::kInactive); 1833 marker_range, TextMatchMarker::MatchStatus::kInactive);
1608 1834
1609 // Replace "text" with "string" 1835 // Replace "text" with "string"
1610 Vector<CompositionUnderline> empty_underlines; 1836 Vector<CompositionUnderline> empty_underlines;
1611 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12); 1837 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12);
1612 Controller().CommitText(String("string"), empty_underlines, 0); 1838 Controller().CommitText(String("string"), empty_underlines, 0);
1613 1839
1614 // Verify marker was removed 1840 // Verify marker was removed
1615 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1841 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1616 } 1842 }
1617 1843
1618 TEST_F(InputMethodControllerTest, 1844 TEST_F(InputMethodControllerTest,
1845 ContentIndependentMarker_ReplaceEntireMarker) {
1846 Element* div = InsertHTMLElement(
1847 "<div id='sample' contenteditable>Initial text</div>", "sample");
1848
1849 // Add marker under "text"
1850 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1851 GetDocument().Markers().AddActiveSuggestionMarker(
1852 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1853 Color::kBlack);
1854
1855 // Replace "text" with "string"
1856 Vector<CompositionUnderline> empty_underlines;
1857 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12);
1858 Controller().CommitText(String("string"), empty_underlines, 0);
1859
1860 // Verify marker is under "string"
1861 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1862 ASSERT_STREQ("string",
1863 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1864 .Utf8()
1865 .data());
1866 }
1867
1868 TEST_F(InputMethodControllerTest,
1619 ContentDependentMarker_ReplaceTextWithMarkerAtBeginning) { 1869 ContentDependentMarker_ReplaceTextWithMarkerAtBeginning) {
1620 Element* div = InsertHTMLElement( 1870 Element* div = InsertHTMLElement(
1621 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1871 "<div id='sample' contenteditable>Initial text</div>", "sample");
1622 1872
1623 // Add marker under "Initial" 1873 // Add marker under "Initial"
1624 EphemeralRange marker_range = PlainTextRange(0, 7).CreateRange(*div); 1874 EphemeralRange marker_range = PlainTextRange(0, 7).CreateRange(*div);
1625 GetDocument().Markers().AddTextMatchMarker( 1875 GetDocument().Markers().AddTextMatchMarker(
1626 marker_range, TextMatchMarker::MatchStatus::kInactive); 1876 marker_range, TextMatchMarker::MatchStatus::kInactive);
1627 1877
1628 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1878 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1629 1879
1630 // Replace "Initial text" with "New string" 1880 // Replace "Initial text" with "New string"
1631 Vector<CompositionUnderline> empty_underlines; 1881 Vector<CompositionUnderline> empty_underlines;
1632 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12); 1882 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12);
1633 Controller().CommitText(String("New string"), empty_underlines, 0); 1883 Controller().CommitText(String("New string"), empty_underlines, 0);
1634 1884
1635 // Verify marker was removed 1885 // Verify marker was removed
1636 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1886 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1637 } 1887 }
1638 1888
1639 TEST_F(InputMethodControllerTest, 1889 TEST_F(InputMethodControllerTest,
1890 ContentIndependentMarker_ReplaceTextWithMarkerAtBeginning) {
1891 Element* div = InsertHTMLElement(
1892 "<div id='sample' contenteditable>Initial text</div>", "sample");
1893
1894 // Add marker under "Initial"
1895 EphemeralRange marker_range = PlainTextRange(0, 7).CreateRange(*div);
1896 GetDocument().Markers().AddActiveSuggestionMarker(
1897 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1898 Color::kBlack);
1899
1900 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1901
1902 // Replace "Initial text" with "New string"
1903 Vector<CompositionUnderline> empty_underlines;
1904 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12);
1905 Controller().CommitText(String("New string"), empty_underlines, 0);
1906
1907 // Verify marker was removed
1908 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1909 }
1910
1911 TEST_F(InputMethodControllerTest,
1640 ContentDependentMarker_ReplaceTextWithMarkerAtEnd) { 1912 ContentDependentMarker_ReplaceTextWithMarkerAtEnd) {
1641 Element* div = InsertHTMLElement( 1913 Element* div = InsertHTMLElement(
1642 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1914 "<div id='sample' contenteditable>Initial text</div>", "sample");
1643 1915
1644 // Add marker under "text" 1916 // Add marker under "text"
1645 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div); 1917 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1646 GetDocument().Markers().AddTextMatchMarker( 1918 GetDocument().Markers().AddTextMatchMarker(
1647 marker_range, TextMatchMarker::MatchStatus::kInactive); 1919 marker_range, TextMatchMarker::MatchStatus::kInactive);
1648 1920
1649 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1921 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1650 1922
1651 // Replace "Initial text" with "New string" 1923 // Replace "Initial text" with "New string"
1652 Vector<CompositionUnderline> empty_underlines; 1924 Vector<CompositionUnderline> empty_underlines;
1653 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12); 1925 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12);
1654 Controller().CommitText(String("New string"), empty_underlines, 0); 1926 Controller().CommitText(String("New string"), empty_underlines, 0);
1655 1927
1656 // Verify marker was removed 1928 // Verify marker was removed
1657 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1929 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1658 } 1930 }
1659 1931
1932 TEST_F(InputMethodControllerTest,
1933 ContentIndependentMarker_ReplaceTextWithMarkerAtEnd) {
1934 Element* div = InsertHTMLElement(
1935 "<div id='sample' contenteditable>Initial text</div>", "sample");
1936
1937 // Add marker under "text"
1938 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1939 GetDocument().Markers().AddActiveSuggestionMarker(
1940 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
1941 Color::kBlack);
1942
1943 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1944
1945 // Replace "Initial text" with "New string"
1946 Vector<CompositionUnderline> empty_underlines;
1947 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12);
1948 Controller().CommitText(String("New string"), empty_underlines, 0);
1949
1950 // Verify marker was removed
1951 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1952 }
1953
1660 TEST_F(InputMethodControllerTest, ContentDependentMarker_Deletions) { 1954 TEST_F(InputMethodControllerTest, ContentDependentMarker_Deletions) {
1661 Element* div = InsertHTMLElement( 1955 Element* div = InsertHTMLElement(
1662 "<div id='sample' contenteditable>1111122222333334444455555</div>", 1956 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1663 "sample"); 1957 "sample");
1664 1958
1665 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div); 1959 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
1666 GetDocument().Markers().AddTextMatchMarker( 1960 GetDocument().Markers().AddTextMatchMarker(
1667 marker_range, TextMatchMarker::MatchStatus::kInactive); 1961 marker_range, TextMatchMarker::MatchStatus::kInactive);
1668 1962
1669 marker_range = PlainTextRange(5, 10).CreateRange(*div); 1963 marker_range = PlainTextRange(5, 10).CreateRange(*div);
(...skipping 22 matching lines...) Expand all
1692 // Verify markers were updated correctly 1986 // Verify markers were updated correctly
1693 EXPECT_EQ(2u, GetDocument().Markers().Markers().size()); 1987 EXPECT_EQ(2u, GetDocument().Markers().Markers().size());
1694 1988
1695 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset()); 1989 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
1696 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset()); 1990 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
1697 1991
1698 EXPECT_EQ(11u, GetDocument().Markers().Markers()[1]->StartOffset()); 1992 EXPECT_EQ(11u, GetDocument().Markers().Markers()[1]->StartOffset());
1699 EXPECT_EQ(16u, GetDocument().Markers().Markers()[1]->EndOffset()); 1993 EXPECT_EQ(16u, GetDocument().Markers().Markers()[1]->EndOffset());
1700 } 1994 }
1701 1995
1996 TEST_F(InputMethodControllerTest, ContentIndependentMarker_Deletions) {
1997 Element* div = InsertHTMLElement(
1998 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1999 "sample");
2000
2001 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
2002 GetDocument().Markers().AddActiveSuggestionMarker(
2003 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2004 Color::kBlack);
2005
2006 marker_range = PlainTextRange(5, 10).CreateRange(*div);
2007 GetDocument().Markers().AddActiveSuggestionMarker(
2008 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2009 Color::kBlack);
2010
2011 marker_range = PlainTextRange(10, 15).CreateRange(*div);
2012 GetDocument().Markers().AddActiveSuggestionMarker(
2013 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2014 Color::kBlack);
2015
2016 marker_range = PlainTextRange(15, 20).CreateRange(*div);
2017 GetDocument().Markers().AddActiveSuggestionMarker(
2018 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2019 Color::kBlack);
2020
2021 marker_range = PlainTextRange(20, 25).CreateRange(*div);
2022 GetDocument().Markers().AddActiveSuggestionMarker(
2023 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2024 Color::kBlack);
2025
2026 EXPECT_EQ(5u, GetDocument().Markers().Markers().size());
2027
2028 // Delete third marker and portions of second and fourth
2029 Vector<CompositionUnderline> empty_underlines;
2030 Controller().SetCompositionFromExistingText(empty_underlines, 8, 17);
2031 Controller().CommitText(String(""), empty_underlines, 0);
2032
2033 // Verify markers were updated correctly
2034 EXPECT_EQ(4u, GetDocument().Markers().Markers().size());
2035
2036 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
2037 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
2038
2039 EXPECT_EQ(5u, GetDocument().Markers().Markers()[1]->StartOffset());
2040 EXPECT_EQ(8u, GetDocument().Markers().Markers()[1]->EndOffset());
2041
2042 EXPECT_EQ(8u, GetDocument().Markers().Markers()[2]->StartOffset());
2043 EXPECT_EQ(11u, GetDocument().Markers().Markers()[2]->EndOffset());
2044
2045 EXPECT_EQ(11u, GetDocument().Markers().Markers()[3]->StartOffset());
2046 EXPECT_EQ(16u, GetDocument().Markers().Markers()[3]->EndOffset());
2047 }
2048
1702 TEST_F(InputMethodControllerTest, 2049 TEST_F(InputMethodControllerTest,
1703 ContentDependentMarker_DeleteExactlyOnMarker) { 2050 ContentDependentMarker_DeleteExactlyOnMarker) {
1704 Element* div = InsertHTMLElement( 2051 Element* div = InsertHTMLElement(
1705 "<div id='sample' contenteditable>1111122222333334444455555</div>", 2052 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1706 "sample"); 2053 "sample");
1707 2054
1708 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div); 2055 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
1709 GetDocument().Markers().AddTextMatchMarker( 2056 GetDocument().Markers().AddTextMatchMarker(
1710 marker_range, TextMatchMarker::MatchStatus::kInactive); 2057 marker_range, TextMatchMarker::MatchStatus::kInactive);
1711 2058
1712 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 2059 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1713 2060
1714 // Delete exactly on the marker 2061 // Delete exactly on the marker
1715 Vector<CompositionUnderline> empty_underlines; 2062 Vector<CompositionUnderline> empty_underlines;
1716 Controller().SetCompositionFromExistingText(empty_underlines, 5, 10); 2063 Controller().SetCompositionFromExistingText(empty_underlines, 5, 10);
1717 Controller().CommitText(String(""), empty_underlines, 0); 2064 Controller().CommitText(String(""), empty_underlines, 0);
1718 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 2065 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1719 } 2066 }
1720 2067
2068 TEST_F(InputMethodControllerTest,
2069 ContentIndependentMarker_DeleteExactlyOnMarker) {
2070 Element* div = InsertHTMLElement(
2071 "<div id='sample' contenteditable>1111122222333334444455555</div>",
2072 "sample");
2073
2074 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
2075 GetDocument().Markers().AddActiveSuggestionMarker(
2076 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2077 Color::kBlack);
2078
2079 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
2080
2081 // Delete exactly on the marker
2082 Vector<CompositionUnderline> empty_underlines;
2083 Controller().SetCompositionFromExistingText(empty_underlines, 5, 10);
2084 Controller().CommitText(String(""), empty_underlines, 0);
2085 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
2086 }
2087
1721 TEST_F(InputMethodControllerTest, ContentDependentMarker_DeleteMiddleOfMarker) { 2088 TEST_F(InputMethodControllerTest, ContentDependentMarker_DeleteMiddleOfMarker) {
1722 Element* div = InsertHTMLElement( 2089 Element* div = InsertHTMLElement(
1723 "<div id='sample' contenteditable>1111122222333334444455555</div>", 2090 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1724 "sample"); 2091 "sample");
1725 2092
1726 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div); 2093 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
1727 GetDocument().Markers().AddTextMatchMarker( 2094 GetDocument().Markers().AddTextMatchMarker(
1728 marker_range, TextMatchMarker::MatchStatus::kInactive); 2095 marker_range, TextMatchMarker::MatchStatus::kInactive);
1729 2096
1730 // Delete middle of marker 2097 // Delete middle of marker
1731 Vector<CompositionUnderline> empty_underlines; 2098 Vector<CompositionUnderline> empty_underlines;
1732 Controller().SetCompositionFromExistingText(empty_underlines, 6, 9); 2099 Controller().SetCompositionFromExistingText(empty_underlines, 6, 9);
1733 Controller().CommitText(String(""), empty_underlines, 0); 2100 Controller().CommitText(String(""), empty_underlines, 0);
1734 2101
1735 // Verify marker was removed 2102 // Verify marker was removed
1736 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 2103 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1737 } 2104 }
1738 2105
1739 TEST_F(InputMethodControllerTest, 2106 TEST_F(InputMethodControllerTest,
2107 ContentIndependentMarker_DeleteMiddleOfMarker) {
2108 Element* div = InsertHTMLElement(
2109 "<div id='sample' contenteditable>1111122222333334444455555</div>",
2110 "sample");
2111
2112 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
2113 GetDocument().Markers().AddActiveSuggestionMarker(
2114 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2115 Color::kBlack);
2116
2117 // Delete middle of marker
2118 Vector<CompositionUnderline> empty_underlines;
2119 Controller().SetCompositionFromExistingText(empty_underlines, 6, 9);
2120 Controller().CommitText(String(""), empty_underlines, 0);
2121
2122 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
2123
2124 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->StartOffset());
2125 EXPECT_EQ(7u, GetDocument().Markers().Markers()[0]->EndOffset());
2126 }
2127
2128 TEST_F(InputMethodControllerTest,
1740 ContentDependentMarker_InsertInMarkerInterior) { 2129 ContentDependentMarker_InsertInMarkerInterior) {
1741 Element* div = InsertHTMLElement( 2130 Element* div = InsertHTMLElement(
1742 "<div id='sample' contenteditable>1111122222333334444455555</div>", 2131 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1743 "sample"); 2132 "sample");
1744 2133
1745 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div); 2134 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
1746 GetDocument().Markers().AddTextMatchMarker( 2135 GetDocument().Markers().AddTextMatchMarker(
1747 marker_range, TextMatchMarker::MatchStatus::kInactive); 2136 marker_range, TextMatchMarker::MatchStatus::kInactive);
1748 2137
1749 marker_range = PlainTextRange(5, 10).CreateRange(*div); 2138 marker_range = PlainTextRange(5, 10).CreateRange(*div);
(...skipping 13 matching lines...) Expand all
1763 2152
1764 EXPECT_EQ(2u, GetDocument().Markers().Markers().size()); 2153 EXPECT_EQ(2u, GetDocument().Markers().Markers().size());
1765 2154
1766 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset()); 2155 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
1767 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset()); 2156 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
1768 2157
1769 EXPECT_EQ(15u, GetDocument().Markers().Markers()[1]->StartOffset()); 2158 EXPECT_EQ(15u, GetDocument().Markers().Markers()[1]->StartOffset());
1770 EXPECT_EQ(20u, GetDocument().Markers().Markers()[1]->EndOffset()); 2159 EXPECT_EQ(20u, GetDocument().Markers().Markers()[1]->EndOffset());
1771 } 2160 }
1772 2161
2162 TEST_F(InputMethodControllerTest,
2163 ContentIndependentMarker_InsertInMarkerInterior) {
2164 Element* div = InsertHTMLElement(
2165 "<div id='sample' contenteditable>1111122222333334444455555</div>",
2166 "sample");
2167
2168 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
2169 GetDocument().Markers().AddActiveSuggestionMarker(
2170 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2171 Color::kBlack);
2172
2173 marker_range = PlainTextRange(5, 10).CreateRange(*div);
2174 GetDocument().Markers().AddActiveSuggestionMarker(
2175 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2176 Color::kBlack);
2177
2178 marker_range = PlainTextRange(10, 15).CreateRange(*div);
2179 GetDocument().Markers().AddActiveSuggestionMarker(
2180 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2181 Color::kBlack);
2182
2183 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
2184
2185 // insert in middle of second marker
2186 Vector<CompositionUnderline> empty_underlines;
2187 Controller().SetComposition("", empty_underlines, 7, 7);
2188 Controller().CommitText(String("66666"), empty_underlines, -7);
2189
2190 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
2191
2192 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
2193 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
2194
2195 EXPECT_EQ(5u, GetDocument().Markers().Markers()[1]->StartOffset());
2196 EXPECT_EQ(15u, GetDocument().Markers().Markers()[1]->EndOffset());
2197
2198 EXPECT_EQ(15u, GetDocument().Markers().Markers()[2]->StartOffset());
2199 EXPECT_EQ(20u, GetDocument().Markers().Markers()[2]->EndOffset());
2200 }
2201
1773 TEST_F(InputMethodControllerTest, ContentDependentMarker_InsertBetweenMarkers) { 2202 TEST_F(InputMethodControllerTest, ContentDependentMarker_InsertBetweenMarkers) {
1774 Element* div = InsertHTMLElement( 2203 Element* div = InsertHTMLElement(
1775 "<div id='sample' contenteditable>1111122222333334444455555</div>", 2204 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1776 "sample"); 2205 "sample");
1777 2206
1778 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div); 2207 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
1779 GetDocument().Markers().AddTextMatchMarker( 2208 GetDocument().Markers().AddTextMatchMarker(
1780 marker_range, TextMatchMarker::MatchStatus::kInactive); 2209 marker_range, TextMatchMarker::MatchStatus::kInactive);
1781 2210
1782 marker_range = PlainTextRange(5, 15).CreateRange(*div); 2211 marker_range = PlainTextRange(5, 15).CreateRange(*div);
(...skipping 15 matching lines...) Expand all
1798 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset()); 2227 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
1799 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset()); 2228 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
1800 2229
1801 EXPECT_EQ(10u, GetDocument().Markers().Markers()[1]->StartOffset()); 2230 EXPECT_EQ(10u, GetDocument().Markers().Markers()[1]->StartOffset());
1802 EXPECT_EQ(20u, GetDocument().Markers().Markers()[1]->EndOffset()); 2231 EXPECT_EQ(20u, GetDocument().Markers().Markers()[1]->EndOffset());
1803 2232
1804 EXPECT_EQ(20u, GetDocument().Markers().Markers()[2]->StartOffset()); 2233 EXPECT_EQ(20u, GetDocument().Markers().Markers()[2]->StartOffset());
1805 EXPECT_EQ(25u, GetDocument().Markers().Markers()[2]->EndOffset()); 2234 EXPECT_EQ(25u, GetDocument().Markers().Markers()[2]->EndOffset());
1806 } 2235 }
1807 2236
2237 TEST_F(InputMethodControllerTest,
2238 ContentIndependentMarker_InsertBetweenMarkers) {
2239 Element* div = InsertHTMLElement(
2240 "<div id='sample' contenteditable>1111122222333334444455555</div>",
2241 "sample");
2242
2243 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
2244 GetDocument().Markers().AddActiveSuggestionMarker(
2245 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2246 Color::kBlack);
2247
2248 marker_range = PlainTextRange(5, 15).CreateRange(*div);
2249 GetDocument().Markers().AddActiveSuggestionMarker(
2250 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2251 Color::kBlack);
2252
2253 marker_range = PlainTextRange(15, 20).CreateRange(*div);
2254 GetDocument().Markers().AddActiveSuggestionMarker(
2255 marker_range, Color::kBlack, StyleableMarker::Thickness::kThin,
2256 Color::kBlack);
2257
2258 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
2259
2260 Vector<CompositionUnderline> empty_underlines;
2261 Controller().SetComposition("", empty_underlines, 5, 5);
2262 Controller().CommitText(String("77777"), empty_underlines, 0);
2263
2264 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
2265
2266 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
2267 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
2268
2269 EXPECT_EQ(10u, GetDocument().Markers().Markers()[1]->StartOffset());
2270 EXPECT_EQ(20u, GetDocument().Markers().Markers()[1]->EndOffset());
2271
2272 EXPECT_EQ(20u, GetDocument().Markers().Markers()[2]->StartOffset());
2273 EXPECT_EQ(25u, GetDocument().Markers().Markers()[2]->EndOffset());
2274 }
2275
1808 // For http://crbug.com/712761 2276 // For http://crbug.com/712761
1809 TEST_F(InputMethodControllerTest, TextInputTypeAtBeforeEditable) { 2277 TEST_F(InputMethodControllerTest, TextInputTypeAtBeforeEditable) {
1810 GetDocument().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); 2278 GetDocument().body()->setContentEditable("true", ASSERT_NO_EXCEPTION);
1811 GetDocument().body()->focus(); 2279 GetDocument().body()->focus();
1812 2280
1813 // Set selection before BODY(editable). 2281 // Set selection before BODY(editable).
1814 GetFrame().Selection().SetSelection( 2282 GetFrame().Selection().SetSelection(
1815 SelectionInDOMTree::Builder() 2283 SelectionInDOMTree::Builder()
1816 .Collapse(Position(GetDocument().documentElement(), 0)) 2284 .Collapse(Position(GetDocument().documentElement(), 0))
1817 .Build()); 2285 .Build());
1818 2286
1819 EXPECT_EQ(kWebTextInputTypeContentEditable, Controller().TextInputType()); 2287 EXPECT_EQ(kWebTextInputTypeContentEditable, Controller().TextInputType());
1820 } 2288 }
1821 2289
1822 } // namespace blink 2290 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698