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

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

Issue 2895253003: Split general DocumentMarkerController::AddMarker() method into spelling/grammar versions (Closed)
Patch Set: Created 3 years, 7 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
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 1518 matching lines...) Expand 10 before | Expand all | Expand 10 after
1529 } 1529 }
1530 1530
1531 TEST_F(InputMethodControllerTest, 1531 TEST_F(InputMethodControllerTest,
1532 Marker_WhitespaceFixupAroundMarkerNotContainingSpace) { 1532 Marker_WhitespaceFixupAroundMarkerNotContainingSpace) {
1533 Element* div = InsertHTMLElement( 1533 Element* div = InsertHTMLElement(
1534 "<div id='sample' contenteditable>Initial text blah</div>", "sample"); 1534 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1535 1535
1536 // Add marker under "text" (use TextMatch since Composition markers don't 1536 // Add marker under "text" (use TextMatch since Composition markers don't
1537 // persist across editing operations) 1537 // persist across editing operations)
1538 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div); 1538 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1539 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1539 GetDocument().Markers().AddTextMatchMarker(
yosin_UTC9 2017/05/23 09:35:04 Could you move IMCTest.cpp changes into another pa
1540 marker_range.EndPosition(), 1540 marker_range, DocumentMarker::MatchStatus::kInactive);
1541 DocumentMarker::kTextMatch);
1542 // Delete "Initial" 1541 // Delete "Initial"
1543 Vector<CompositionUnderline> empty_underlines; 1542 Vector<CompositionUnderline> empty_underlines;
1544 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7); 1543 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1545 Controller().CommitText(String(""), empty_underlines, 0); 1544 Controller().CommitText(String(""), empty_underlines, 0);
1546 1545
1547 // Delete "blah" 1546 // Delete "blah"
1548 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10); 1547 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1549 Controller().CommitText(String(""), empty_underlines, 0); 1548 Controller().CommitText(String(""), empty_underlines, 0);
1550 1549
1551 // Check that the marker is still attached to "text" and doesn't include 1550 // Check that the marker is still attached to "text" and doesn't include
1552 // either space around it 1551 // either space around it
1553 EXPECT_EQ(1u, GetDocument().Markers().MarkersFor(div->firstChild()).size()); 1552 EXPECT_EQ(1u, GetDocument().Markers().MarkersFor(div->firstChild()).size());
1554 EXPECT_STREQ("text", 1553 EXPECT_STREQ("text",
1555 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1554 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1556 .Utf8() 1555 .Utf8()
1557 .data()); 1556 .data());
1558 } 1557 }
1559 1558
1560 TEST_F(InputMethodControllerTest, 1559 TEST_F(InputMethodControllerTest,
1561 Marker_WhitespaceFixupAroundMarkerBeginningWithSpace) { 1560 Marker_WhitespaceFixupAroundMarkerBeginningWithSpace) {
1562 Element* div = InsertHTMLElement( 1561 Element* div = InsertHTMLElement(
1563 "<div id='sample' contenteditable>Initial text blah</div>", "sample"); 1562 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1564 1563
1565 // Add marker under " text" (use TextMatch since Composition markers don't 1564 // Add marker under " text" (use TextMatch since Composition markers don't
1566 // persist across editing operations) 1565 // persist across editing operations)
1567 EphemeralRange marker_range = PlainTextRange(7, 12).CreateRange(*div); 1566 EphemeralRange marker_range = PlainTextRange(7, 12).CreateRange(*div);
1568 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1567 GetDocument().Markers().AddTextMatchMarker(
1569 marker_range.EndPosition(), 1568 marker_range, DocumentMarker::MatchStatus::kInactive);
1570 DocumentMarker::kTextMatch);
1571 // Delete "Initial" 1569 // Delete "Initial"
1572 Vector<CompositionUnderline> empty_underlines; 1570 Vector<CompositionUnderline> empty_underlines;
1573 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7); 1571 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1574 Controller().CommitText(String(""), empty_underlines, 0); 1572 Controller().CommitText(String(""), empty_underlines, 0);
1575 1573
1576 // Delete "blah" 1574 // Delete "blah"
1577 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10); 1575 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1578 Controller().CommitText(String(""), empty_underlines, 0); 1576 Controller().CommitText(String(""), empty_underlines, 0);
1579 1577
1580 // Check that the marker is still attached to " text" and includes the space 1578 // Check that the marker is still attached to " text" and includes the space
1581 // before "text" but not the space after 1579 // before "text" but not the space after
1582 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1580 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1583 ASSERT_STREQ("\xC2\xA0text", 1581 ASSERT_STREQ("\xC2\xA0text",
1584 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1582 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1585 .Utf8() 1583 .Utf8()
1586 .data()); 1584 .data());
1587 } 1585 }
1588 1586
1589 TEST_F(InputMethodControllerTest, 1587 TEST_F(InputMethodControllerTest,
1590 Marker_WhitespaceFixupAroundMarkerEndingWithSpace) { 1588 Marker_WhitespaceFixupAroundMarkerEndingWithSpace) {
1591 Element* div = InsertHTMLElement( 1589 Element* div = InsertHTMLElement(
1592 "<div id='sample' contenteditable>Initial text blah</div>", "sample"); 1590 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1593 1591
1594 // Add marker under "text " (use TextMatch since Composition markers don't 1592 // Add marker under "text " (use TextMatch since Composition markers don't
1595 // persist across editing operations) 1593 // persist across editing operations)
1596 EphemeralRange marker_range = PlainTextRange(8, 13).CreateRange(*div); 1594 EphemeralRange marker_range = PlainTextRange(8, 13).CreateRange(*div);
1597 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1595 GetDocument().Markers().AddTextMatchMarker(
1598 marker_range.EndPosition(), 1596 marker_range, DocumentMarker::MatchStatus::kInactive);
1599 DocumentMarker::kTextMatch);
1600 // Delete "Initial" 1597 // Delete "Initial"
1601 Vector<CompositionUnderline> empty_underlines; 1598 Vector<CompositionUnderline> empty_underlines;
1602 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7); 1599 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1603 Controller().CommitText(String(""), empty_underlines, 0); 1600 Controller().CommitText(String(""), empty_underlines, 0);
1604 1601
1605 // Delete "blah" 1602 // Delete "blah"
1606 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10); 1603 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1607 Controller().CommitText(String(""), empty_underlines, 0); 1604 Controller().CommitText(String(""), empty_underlines, 0);
1608 1605
1609 // Check that the marker is still attached to "text " and includes the space 1606 // Check that the marker is still attached to "text " and includes the space
1610 // after "text" but not the space before 1607 // after "text" but not the space before
1611 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1608 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1612 ASSERT_STREQ("text\xC2\xA0", 1609 ASSERT_STREQ("text\xC2\xA0",
1613 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1610 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1614 .Utf8() 1611 .Utf8()
1615 .data()); 1612 .data());
1616 } 1613 }
1617 1614
1618 TEST_F(InputMethodControllerTest, 1615 TEST_F(InputMethodControllerTest,
1619 Marker_WhitespaceFixupAroundMarkerBeginningAndEndingWithSpaces) { 1616 Marker_WhitespaceFixupAroundMarkerBeginningAndEndingWithSpaces) {
1620 Element* div = InsertHTMLElement( 1617 Element* div = InsertHTMLElement(
1621 "<div id='sample' contenteditable>Initial text blah</div>", "sample"); 1618 "<div id='sample' contenteditable>Initial text blah</div>", "sample");
1622 1619
1623 // Add marker under " text " (use TextMatch since Composition markers don't 1620 // Add marker under " text " (use TextMatch since Composition markers don't
1624 // persist across editing operations) 1621 // persist across editing operations)
1625 EphemeralRange marker_range = PlainTextRange(7, 13).CreateRange(*div); 1622 EphemeralRange marker_range = PlainTextRange(7, 13).CreateRange(*div);
1626 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1623 GetDocument().Markers().AddTextMatchMarker(
1627 marker_range.EndPosition(), 1624 marker_range, DocumentMarker::MatchStatus::kInactive);
1628 DocumentMarker::kTextMatch);
1629 1625
1630 // Delete "Initial" 1626 // Delete "Initial"
1631 Vector<CompositionUnderline> empty_underlines; 1627 Vector<CompositionUnderline> empty_underlines;
1632 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7); 1628 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1633 Controller().CommitText(String(""), empty_underlines, 0); 1629 Controller().CommitText(String(""), empty_underlines, 0);
1634 1630
1635 // Delete "blah" 1631 // Delete "blah"
1636 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10); 1632 Controller().SetCompositionFromExistingText(empty_underlines, 6, 10);
1637 Controller().CommitText(String(""), empty_underlines, 0); 1633 Controller().CommitText(String(""), empty_underlines, 0);
1638 1634
1639 // Check that the marker is still attached to " text " and includes both the 1635 // Check that the marker is still attached to " text " and includes both the
1640 // space before "text" and the space after 1636 // space before "text" and the space after
1641 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1637 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1642 ASSERT_STREQ("\xC2\xA0text\xC2\xA0", 1638 ASSERT_STREQ("\xC2\xA0text\xC2\xA0",
1643 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1639 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1644 .Utf8() 1640 .Utf8()
1645 .data()); 1641 .data());
1646 } 1642 }
1647 1643
1648 TEST_F(InputMethodControllerTest, Marker_ReplaceStartOfMarker) { 1644 TEST_F(InputMethodControllerTest, Marker_ReplaceStartOfMarker) {
1649 Element* div = InsertHTMLElement( 1645 Element* div = InsertHTMLElement(
1650 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1646 "<div id='sample' contenteditable>Initial text</div>", "sample");
1651 1647
1652 // Add marker under "Initial text" 1648 // Add marker under "Initial text"
1653 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div); 1649 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div);
1654 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1650 GetDocument().Markers().AddTextMatchMarker(
1655 marker_range.EndPosition(), 1651 marker_range, DocumentMarker::MatchStatus::kInactive);
1656 DocumentMarker::kTextMatch);
1657 1652
1658 // Replace "Initial" with "Original" 1653 // Replace "Initial" with "Original"
1659 Vector<CompositionUnderline> empty_underlines; 1654 Vector<CompositionUnderline> empty_underlines;
1660 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7); 1655 Controller().SetCompositionFromExistingText(empty_underlines, 0, 7);
1661 Controller().CommitText(String("Original"), empty_underlines, 0); 1656 Controller().CommitText(String("Original"), empty_underlines, 0);
1662 1657
1663 // Verify marker is under "Original text" 1658 // Verify marker is under "Original text"
1664 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1659 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1665 ASSERT_STREQ("Original text", 1660 ASSERT_STREQ("Original text",
1666 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1661 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1667 .Utf8() 1662 .Utf8()
1668 .data()); 1663 .data());
1669 } 1664 }
1670 1665
1671 TEST_F(InputMethodControllerTest, Marker_ReplaceTextContainsStartOfMarker) { 1666 TEST_F(InputMethodControllerTest, Marker_ReplaceTextContainsStartOfMarker) {
1672 Element* div = InsertHTMLElement( 1667 Element* div = InsertHTMLElement(
1673 "<div id='sample' contenteditable>This is some initial text</div>", 1668 "<div id='sample' contenteditable>This is some initial text</div>",
1674 "sample"); 1669 "sample");
1675 1670
1676 // Add marker under "initial text" 1671 // Add marker under "initial text"
1677 EphemeralRange marker_range = PlainTextRange(13, 25).CreateRange(*div); 1672 EphemeralRange marker_range = PlainTextRange(13, 25).CreateRange(*div);
1678 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1673 GetDocument().Markers().AddTextMatchMarker(
1679 marker_range.EndPosition(), 1674 marker_range, DocumentMarker::MatchStatus::kInactive);
1680 DocumentMarker::kTextMatch);
1681 1675
1682 // Replace "some initial" with "boring" 1676 // Replace "some initial" with "boring"
1683 Vector<CompositionUnderline> empty_underlines; 1677 Vector<CompositionUnderline> empty_underlines;
1684 Controller().SetCompositionFromExistingText(empty_underlines, 8, 20); 1678 Controller().SetCompositionFromExistingText(empty_underlines, 8, 20);
1685 Controller().CommitText(String("boring"), empty_underlines, 0); 1679 Controller().CommitText(String("boring"), empty_underlines, 0);
1686 1680
1687 // Verify marker is under " text" 1681 // Verify marker is under " text"
1688 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1682 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1689 EXPECT_STREQ(" text", 1683 EXPECT_STREQ(" text",
1690 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1684 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1691 .Utf8() 1685 .Utf8()
1692 .data()); 1686 .data());
1693 } 1687 }
1694 1688
1695 TEST_F(InputMethodControllerTest, Marker_ReplaceEndOfMarker) { 1689 TEST_F(InputMethodControllerTest, Marker_ReplaceEndOfMarker) {
1696 Element* div = InsertHTMLElement( 1690 Element* div = InsertHTMLElement(
1697 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1691 "<div id='sample' contenteditable>Initial text</div>", "sample");
1698 1692
1699 // Add marker under "Initial text" 1693 // Add marker under "Initial text"
1700 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div); 1694 EphemeralRange marker_range = PlainTextRange(0, 12).CreateRange(*div);
1701 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1695 GetDocument().Markers().AddTextMatchMarker(
1702 marker_range.EndPosition(), 1696 marker_range, DocumentMarker::MatchStatus::kInactive);
1703 DocumentMarker::kTextMatch);
1704 1697
1705 // Replace "text" with "string" 1698 // Replace "text" with "string"
1706 Vector<CompositionUnderline> empty_underlines; 1699 Vector<CompositionUnderline> empty_underlines;
1707 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12); 1700 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12);
1708 Controller().CommitText(String("string"), empty_underlines, 0); 1701 Controller().CommitText(String("string"), empty_underlines, 0);
1709 1702
1710 // Verify marker is under "Initial string" 1703 // Verify marker is under "Initial string"
1711 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1704 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1712 ASSERT_STREQ("Initial string", 1705 ASSERT_STREQ("Initial string",
1713 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1706 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1714 .Utf8() 1707 .Utf8()
1715 .data()); 1708 .data());
1716 } 1709 }
1717 1710
1718 TEST_F(InputMethodControllerTest, Marker_ReplaceTextContainsEndOfMarker) { 1711 TEST_F(InputMethodControllerTest, Marker_ReplaceTextContainsEndOfMarker) {
1719 Element* div = InsertHTMLElement( 1712 Element* div = InsertHTMLElement(
1720 "<div id='sample' contenteditable>This is some initial text</div>", 1713 "<div id='sample' contenteditable>This is some initial text</div>",
1721 "sample"); 1714 "sample");
1722 1715
1723 // Add marker under "some initial" 1716 // Add marker under "some initial"
1724 EphemeralRange marker_range = PlainTextRange(8, 20).CreateRange(*div); 1717 EphemeralRange marker_range = PlainTextRange(8, 20).CreateRange(*div);
1725 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1718 GetDocument().Markers().AddTextMatchMarker(
1726 marker_range.EndPosition(), 1719 marker_range, DocumentMarker::MatchStatus::kInactive);
1727 DocumentMarker::kTextMatch);
1728 1720
1729 // Replace "initial text" with "content" 1721 // Replace "initial text" with "content"
1730 Vector<CompositionUnderline> empty_underlines; 1722 Vector<CompositionUnderline> empty_underlines;
1731 Controller().SetCompositionFromExistingText(empty_underlines, 13, 25); 1723 Controller().SetCompositionFromExistingText(empty_underlines, 13, 25);
1732 Controller().CommitText(String("content"), empty_underlines, 0); 1724 Controller().CommitText(String("content"), empty_underlines, 0);
1733 1725
1734 EXPECT_STREQ("This is some content", div->innerHTML().Utf8().data()); 1726 EXPECT_STREQ("This is some content", div->innerHTML().Utf8().data());
1735 1727
1736 // Verify marker is under "some " 1728 // Verify marker is under "some "
1737 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1729 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1738 EXPECT_STREQ("some ", 1730 EXPECT_STREQ("some ",
1739 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1731 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1740 .Utf8() 1732 .Utf8()
1741 .data()); 1733 .data());
1742 } 1734 }
1743 1735
1744 TEST_F(InputMethodControllerTest, Marker_ReplaceEntireMarker) { 1736 TEST_F(InputMethodControllerTest, Marker_ReplaceEntireMarker) {
1745 Element* div = InsertHTMLElement( 1737 Element* div = InsertHTMLElement(
1746 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1738 "<div id='sample' contenteditable>Initial text</div>", "sample");
1747 1739
1748 // Add marker under "text" 1740 // Add marker under "text"
1749 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div); 1741 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1750 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1742 GetDocument().Markers().AddTextMatchMarker(
1751 marker_range.EndPosition(), 1743 marker_range, DocumentMarker::MatchStatus::kInactive);
1752 DocumentMarker::kTextMatch);
1753 1744
1754 // Replace "text" with "string" 1745 // Replace "text" with "string"
1755 Vector<CompositionUnderline> empty_underlines; 1746 Vector<CompositionUnderline> empty_underlines;
1756 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12); 1747 Controller().SetCompositionFromExistingText(empty_underlines, 8, 12);
1757 Controller().CommitText(String("string"), empty_underlines, 0); 1748 Controller().CommitText(String("string"), empty_underlines, 0);
1758 1749
1759 // Verify marker is under "string" 1750 // Verify marker is under "string"
1760 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1751 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1761 ASSERT_STREQ("string", 1752 ASSERT_STREQ("string",
1762 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0) 1753 GetMarkedText(GetDocument().Markers(), div->firstChild(), 0)
1763 .Utf8() 1754 .Utf8()
1764 .data()); 1755 .data());
1765 } 1756 }
1766 1757
1767 TEST_F(InputMethodControllerTest, Marker_ReplaceTextWithMarkerAtBeginning) { 1758 TEST_F(InputMethodControllerTest, Marker_ReplaceTextWithMarkerAtBeginning) {
1768 Element* div = InsertHTMLElement( 1759 Element* div = InsertHTMLElement(
1769 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1760 "<div id='sample' contenteditable>Initial text</div>", "sample");
1770 1761
1771 // Add marker under "Initial" 1762 // Add marker under "Initial"
1772 EphemeralRange marker_range = PlainTextRange(0, 7).CreateRange(*div); 1763 EphemeralRange marker_range = PlainTextRange(0, 7).CreateRange(*div);
1773 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1764 GetDocument().Markers().AddTextMatchMarker(
1774 marker_range.EndPosition(), 1765 marker_range, DocumentMarker::MatchStatus::kInactive);
1775 DocumentMarker::kTextMatch);
1776 1766
1777 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1767 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1778 1768
1779 // Replace "Initial text" with "New string" 1769 // Replace "Initial text" with "New string"
1780 Vector<CompositionUnderline> empty_underlines; 1770 Vector<CompositionUnderline> empty_underlines;
1781 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12); 1771 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12);
1782 Controller().CommitText(String("New string"), empty_underlines, 0); 1772 Controller().CommitText(String("New string"), empty_underlines, 0);
1783 1773
1784 // Verify marker was removed 1774 // Verify marker was removed
1785 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1775 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1786 } 1776 }
1787 1777
1788 TEST_F(InputMethodControllerTest, Marker_ReplaceTextWithMarkerAtEnd) { 1778 TEST_F(InputMethodControllerTest, Marker_ReplaceTextWithMarkerAtEnd) {
1789 Element* div = InsertHTMLElement( 1779 Element* div = InsertHTMLElement(
1790 "<div id='sample' contenteditable>Initial text</div>", "sample"); 1780 "<div id='sample' contenteditable>Initial text</div>", "sample");
1791 1781
1792 // Add marker under "text" 1782 // Add marker under "text"
1793 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div); 1783 EphemeralRange marker_range = PlainTextRange(8, 12).CreateRange(*div);
1794 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1784 GetDocument().Markers().AddTextMatchMarker(
1795 marker_range.EndPosition(), 1785 marker_range, DocumentMarker::MatchStatus::kInactive);
1796 DocumentMarker::kTextMatch);
1797 1786
1798 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1787 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1799 1788
1800 // Replace "Initial text" with "New string" 1789 // Replace "Initial text" with "New string"
1801 Vector<CompositionUnderline> empty_underlines; 1790 Vector<CompositionUnderline> empty_underlines;
1802 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12); 1791 Controller().SetCompositionFromExistingText(empty_underlines, 0, 12);
1803 Controller().CommitText(String("New string"), empty_underlines, 0); 1792 Controller().CommitText(String("New string"), empty_underlines, 0);
1804 1793
1805 // Verify marker was removed 1794 // Verify marker was removed
1806 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1795 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1807 } 1796 }
1808 1797
1809 TEST_F(InputMethodControllerTest, Marker_Deletions) { 1798 TEST_F(InputMethodControllerTest, Marker_Deletions) {
1810 Element* div = InsertHTMLElement( 1799 Element* div = InsertHTMLElement(
1811 "<div id='sample' contenteditable>1111122222333334444455555</div>", 1800 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1812 "sample"); 1801 "sample");
1813 1802
1814 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div); 1803 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
1815 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1804 GetDocument().Markers().AddTextMatchMarker(
1816 marker_range.EndPosition(), 1805 marker_range, DocumentMarker::MatchStatus::kInactive);
1817 DocumentMarker::kTextMatch);
1818 1806
1819 marker_range = PlainTextRange(5, 10).CreateRange(*div); 1807 marker_range = PlainTextRange(5, 10).CreateRange(*div);
1820 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1808 GetDocument().Markers().AddTextMatchMarker(
1821 marker_range.EndPosition(), 1809 marker_range, DocumentMarker::MatchStatus::kInactive);
1822 DocumentMarker::kTextMatch);
1823 1810
1824 marker_range = PlainTextRange(10, 15).CreateRange(*div); 1811 marker_range = PlainTextRange(10, 15).CreateRange(*div);
1825 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1812 GetDocument().Markers().AddTextMatchMarker(
1826 marker_range.EndPosition(), 1813 marker_range, DocumentMarker::MatchStatus::kInactive);
1827 DocumentMarker::kTextMatch);
1828 1814
1829 marker_range = PlainTextRange(15, 20).CreateRange(*div); 1815 marker_range = PlainTextRange(15, 20).CreateRange(*div);
1830 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1816 GetDocument().Markers().AddTextMatchMarker(
1831 marker_range.EndPosition(), 1817 marker_range, DocumentMarker::MatchStatus::kInactive);
1832 DocumentMarker::kTextMatch);
1833 1818
1834 marker_range = PlainTextRange(20, 25).CreateRange(*div); 1819 marker_range = PlainTextRange(20, 25).CreateRange(*div);
1835 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1820 GetDocument().Markers().AddTextMatchMarker(
1836 marker_range.EndPosition(), 1821 marker_range, DocumentMarker::MatchStatus::kInactive);
1837 DocumentMarker::kTextMatch);
1838 1822
1839 EXPECT_EQ(5u, GetDocument().Markers().Markers().size()); 1823 EXPECT_EQ(5u, GetDocument().Markers().Markers().size());
1840 1824
1841 // Delete third marker and portions of second and fourth 1825 // Delete third marker and portions of second and fourth
1842 Vector<CompositionUnderline> empty_underlines; 1826 Vector<CompositionUnderline> empty_underlines;
1843 Controller().SetCompositionFromExistingText(empty_underlines, 8, 17); 1827 Controller().SetCompositionFromExistingText(empty_underlines, 8, 17);
1844 Controller().CommitText(String(""), empty_underlines, 0); 1828 Controller().CommitText(String(""), empty_underlines, 0);
1845 1829
1846 // Verify markers were updated correctly 1830 // Verify markers were updated correctly
1847 EXPECT_EQ(4u, GetDocument().Markers().Markers().size()); 1831 EXPECT_EQ(4u, GetDocument().Markers().Markers().size());
(...skipping 10 matching lines...) Expand all
1858 EXPECT_EQ(11u, GetDocument().Markers().Markers()[3]->StartOffset()); 1842 EXPECT_EQ(11u, GetDocument().Markers().Markers()[3]->StartOffset());
1859 EXPECT_EQ(16u, GetDocument().Markers().Markers()[3]->EndOffset()); 1843 EXPECT_EQ(16u, GetDocument().Markers().Markers()[3]->EndOffset());
1860 } 1844 }
1861 1845
1862 TEST_F(InputMethodControllerTest, Marker_DeleteExactlyOnMarker) { 1846 TEST_F(InputMethodControllerTest, Marker_DeleteExactlyOnMarker) {
1863 Element* div = InsertHTMLElement( 1847 Element* div = InsertHTMLElement(
1864 "<div id='sample' contenteditable>1111122222333334444455555</div>", 1848 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1865 "sample"); 1849 "sample");
1866 1850
1867 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div); 1851 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
1868 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1852 GetDocument().Markers().AddTextMatchMarker(
1869 marker_range.EndPosition(), 1853 marker_range, DocumentMarker::MatchStatus::kInactive);
1870 DocumentMarker::kTextMatch);
1871 1854
1872 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1855 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1873 1856
1874 // Delete exactly on the marker 1857 // Delete exactly on the marker
1875 Vector<CompositionUnderline> empty_underlines; 1858 Vector<CompositionUnderline> empty_underlines;
1876 Controller().SetCompositionFromExistingText(empty_underlines, 5, 10); 1859 Controller().SetCompositionFromExistingText(empty_underlines, 5, 10);
1877 Controller().CommitText(String(""), empty_underlines, 0); 1860 Controller().CommitText(String(""), empty_underlines, 0);
1878 EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); 1861 EXPECT_EQ(0u, GetDocument().Markers().Markers().size());
1879 } 1862 }
1880 1863
1881 TEST_F(InputMethodControllerTest, Marker_DeleteMiddleOfMarker) { 1864 TEST_F(InputMethodControllerTest, Marker_DeleteMiddleOfMarker) {
1882 Element* div = InsertHTMLElement( 1865 Element* div = InsertHTMLElement(
1883 "<div id='sample' contenteditable>1111122222333334444455555</div>", 1866 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1884 "sample"); 1867 "sample");
1885 1868
1886 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div); 1869 EphemeralRange marker_range = PlainTextRange(5, 10).CreateRange(*div);
1887 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1870 GetDocument().Markers().AddTextMatchMarker(
1888 marker_range.EndPosition(), 1871 marker_range, DocumentMarker::MatchStatus::kInactive);
1889 DocumentMarker::kTextMatch);
1890 1872
1891 // Delete middle of marker 1873 // Delete middle of marker
1892 Vector<CompositionUnderline> empty_underlines; 1874 Vector<CompositionUnderline> empty_underlines;
1893 Controller().SetCompositionFromExistingText(empty_underlines, 6, 9); 1875 Controller().SetCompositionFromExistingText(empty_underlines, 6, 9);
1894 Controller().CommitText(String(""), empty_underlines, 0); 1876 Controller().CommitText(String(""), empty_underlines, 0);
1895 1877
1896 EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); 1878 EXPECT_EQ(1u, GetDocument().Markers().Markers().size());
1897 1879
1898 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->StartOffset()); 1880 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->StartOffset());
1899 EXPECT_EQ(7u, GetDocument().Markers().Markers()[0]->EndOffset()); 1881 EXPECT_EQ(7u, GetDocument().Markers().Markers()[0]->EndOffset());
1900 } 1882 }
1901 1883
1902 TEST_F(InputMethodControllerTest, Marker_InsertInMarkerInterior) { 1884 TEST_F(InputMethodControllerTest, Marker_InsertInMarkerInterior) {
1903 Element* div = InsertHTMLElement( 1885 Element* div = InsertHTMLElement(
1904 "<div id='sample' contenteditable>1111122222333334444455555</div>", 1886 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1905 "sample"); 1887 "sample");
1906 1888
1907 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div); 1889 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
1908 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1890 GetDocument().Markers().AddTextMatchMarker(
1909 marker_range.EndPosition(), 1891 marker_range, DocumentMarker::MatchStatus::kInactive);
1910 DocumentMarker::kTextMatch);
1911 1892
1912 marker_range = PlainTextRange(5, 10).CreateRange(*div); 1893 marker_range = PlainTextRange(5, 10).CreateRange(*div);
1913 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1894 GetDocument().Markers().AddTextMatchMarker(
1914 marker_range.EndPosition(), 1895 marker_range, DocumentMarker::MatchStatus::kInactive);
1915 DocumentMarker::kTextMatch);
1916 1896
1917 marker_range = PlainTextRange(10, 15).CreateRange(*div); 1897 marker_range = PlainTextRange(10, 15).CreateRange(*div);
1918 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1898 GetDocument().Markers().AddTextMatchMarker(
1919 marker_range.EndPosition(), 1899 marker_range, DocumentMarker::MatchStatus::kInactive);
1920 DocumentMarker::kTextMatch);
1921 1900
1922 EXPECT_EQ(3u, GetDocument().Markers().Markers().size()); 1901 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
1923 1902
1924 // insert in middle of second marker 1903 // insert in middle of second marker
1925 Vector<CompositionUnderline> empty_underlines; 1904 Vector<CompositionUnderline> empty_underlines;
1926 Controller().SetComposition("", empty_underlines, 7, 7); 1905 Controller().SetComposition("", empty_underlines, 7, 7);
1927 Controller().CommitText(String("66666"), empty_underlines, -7); 1906 Controller().CommitText(String("66666"), empty_underlines, -7);
1928 1907
1929 EXPECT_EQ(3u, GetDocument().Markers().Markers().size()); 1908 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
1930 1909
1931 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset()); 1910 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
1932 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset()); 1911 EXPECT_EQ(5u, GetDocument().Markers().Markers()[0]->EndOffset());
1933 1912
1934 EXPECT_EQ(5u, GetDocument().Markers().Markers()[1]->StartOffset()); 1913 EXPECT_EQ(5u, GetDocument().Markers().Markers()[1]->StartOffset());
1935 EXPECT_EQ(15u, GetDocument().Markers().Markers()[1]->EndOffset()); 1914 EXPECT_EQ(15u, GetDocument().Markers().Markers()[1]->EndOffset());
1936 1915
1937 EXPECT_EQ(15u, GetDocument().Markers().Markers()[2]->StartOffset()); 1916 EXPECT_EQ(15u, GetDocument().Markers().Markers()[2]->StartOffset());
1938 EXPECT_EQ(20u, GetDocument().Markers().Markers()[2]->EndOffset()); 1917 EXPECT_EQ(20u, GetDocument().Markers().Markers()[2]->EndOffset());
1939 } 1918 }
1940 1919
1941 TEST_F(InputMethodControllerTest, Marker_InsertBetweenMarkers) { 1920 TEST_F(InputMethodControllerTest, Marker_InsertBetweenMarkers) {
1942 Element* div = InsertHTMLElement( 1921 Element* div = InsertHTMLElement(
1943 "<div id='sample' contenteditable>1111122222333334444455555</div>", 1922 "<div id='sample' contenteditable>1111122222333334444455555</div>",
1944 "sample"); 1923 "sample");
1945 1924
1946 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div); 1925 EphemeralRange marker_range = PlainTextRange(0, 5).CreateRange(*div);
1947 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1926 GetDocument().Markers().AddTextMatchMarker(
1948 marker_range.EndPosition(), 1927 marker_range, DocumentMarker::MatchStatus::kInactive);
1949 DocumentMarker::kTextMatch);
1950 1928
1951 marker_range = PlainTextRange(5, 15).CreateRange(*div); 1929 marker_range = PlainTextRange(5, 15).CreateRange(*div);
1952 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1930 GetDocument().Markers().AddTextMatchMarker(
1953 marker_range.EndPosition(), 1931 marker_range, DocumentMarker::MatchStatus::kInactive);
1954 DocumentMarker::kTextMatch);
1955 1932
1956 marker_range = PlainTextRange(15, 20).CreateRange(*div); 1933 marker_range = PlainTextRange(15, 20).CreateRange(*div);
1957 GetDocument().Markers().AddMarker(marker_range.StartPosition(), 1934 GetDocument().Markers().AddTextMatchMarker(
1958 marker_range.EndPosition(), 1935 marker_range, DocumentMarker::MatchStatus::kInactive);
1959 DocumentMarker::kTextMatch);
1960 1936
1961 EXPECT_EQ(3u, GetDocument().Markers().Markers().size()); 1937 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
1962 1938
1963 Vector<CompositionUnderline> empty_underlines; 1939 Vector<CompositionUnderline> empty_underlines;
1964 Controller().SetComposition("", empty_underlines, 5, 5); 1940 Controller().SetComposition("", empty_underlines, 5, 5);
1965 Controller().CommitText(String("77777"), empty_underlines, 0); 1941 Controller().CommitText(String("77777"), empty_underlines, 0);
1966 1942
1967 EXPECT_EQ(3u, GetDocument().Markers().Markers().size()); 1943 EXPECT_EQ(3u, GetDocument().Markers().Markers().size());
1968 1944
1969 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset()); 1945 EXPECT_EQ(0u, GetDocument().Markers().Markers()[0]->StartOffset());
(...skipping 14 matching lines...) Expand all
1984 // Set selection before BODY(editable). 1960 // Set selection before BODY(editable).
1985 GetFrame().Selection().SetSelection( 1961 GetFrame().Selection().SetSelection(
1986 SelectionInDOMTree::Builder() 1962 SelectionInDOMTree::Builder()
1987 .Collapse(Position(GetDocument().documentElement(), 0)) 1963 .Collapse(Position(GetDocument().documentElement(), 0))
1988 .Build()); 1964 .Build());
1989 1965
1990 EXPECT_EQ(kWebTextInputTypeContentEditable, Controller().TextInputType()); 1966 EXPECT_EQ(kWebTextInputTypeContentEditable, Controller().TextInputType());
1991 } 1967 }
1992 1968
1993 } // namespace blink 1969 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698