OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 return VisiblePosition(); | 1562 return VisiblePosition(); |
1563 | 1563 |
1564 return createVisiblePosition(firstPositionInNode(node->document().documentEl
ement())); | 1564 return createVisiblePosition(firstPositionInNode(node->document().documentEl
ement())); |
1565 } | 1565 } |
1566 | 1566 |
1567 VisiblePosition startOfDocument(const VisiblePosition& c) | 1567 VisiblePosition startOfDocument(const VisiblePosition& c) |
1568 { | 1568 { |
1569 return startOfDocument(c.deepEquivalent().anchorNode()); | 1569 return startOfDocument(c.deepEquivalent().anchorNode()); |
1570 } | 1570 } |
1571 | 1571 |
1572 VisiblePosition endOfDocument(const Node* node) | 1572 template <typename Strategy> |
| 1573 static VisiblePositionTemplate<Strategy> endOfDocumentAlgorithm(const VisiblePos
itionTemplate<Strategy>& visiblePosition) |
1573 { | 1574 { |
| 1575 Node* node = visiblePosition.deepEquivalent().anchorNode(); |
1574 if (!node || !node->document().documentElement()) | 1576 if (!node || !node->document().documentElement()) |
1575 return VisiblePosition(); | 1577 return VisiblePositionTemplate<Strategy>(); |
1576 | 1578 |
1577 Element* doc = node->document().documentElement(); | 1579 Element* doc = node->document().documentElement(); |
1578 return createVisiblePosition(lastPositionInNode(doc)); | 1580 return createVisiblePosition(PositionAlgorithm<Strategy>::lastPositionInNode
(doc)); |
1579 } | 1581 } |
1580 | 1582 |
1581 VisiblePosition endOfDocument(const VisiblePosition& c) | 1583 VisiblePosition endOfDocument(const VisiblePosition& c) |
1582 { | 1584 { |
1583 return endOfDocument(c.deepEquivalent().anchorNode()); | 1585 return endOfDocumentAlgorithm<EditingStrategy>(c); |
| 1586 } |
| 1587 |
| 1588 VisiblePositionInComposedTree endOfDocument(const VisiblePositionInComposedTree&
c) |
| 1589 { |
| 1590 return endOfDocumentAlgorithm<EditingInComposedTreeStrategy>(c); |
1584 } | 1591 } |
1585 | 1592 |
1586 bool isStartOfDocument(const VisiblePosition& p) | 1593 bool isStartOfDocument(const VisiblePosition& p) |
1587 { | 1594 { |
1588 return p.isNotNull() && previousPositionOf(p, CanCrossEditingBoundary).isNul
l(); | 1595 return p.isNotNull() && previousPositionOf(p, CanCrossEditingBoundary).isNul
l(); |
1589 } | 1596 } |
1590 | 1597 |
1591 bool isEndOfDocument(const VisiblePosition& p) | 1598 bool isEndOfDocument(const VisiblePosition& p) |
1592 { | 1599 { |
1593 return p.isNotNull() && nextPositionOf(p, CanCrossEditingBoundary).isNull(); | 1600 return p.isNotNull() && nextPositionOf(p, CanCrossEditingBoundary).isNull(); |
(...skipping 1414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3008 return honorEditingBoundaryAtOrBefore(prev, visiblePosition.deepEquivale
nt()); | 3015 return honorEditingBoundaryAtOrBefore(prev, visiblePosition.deepEquivale
nt()); |
3009 case CanSkipOverEditingBoundary: | 3016 case CanSkipOverEditingBoundary: |
3010 return skipToStartOfEditingBoundary(prev, visiblePosition.deepEquivalent
()); | 3017 return skipToStartOfEditingBoundary(prev, visiblePosition.deepEquivalent
()); |
3011 } | 3018 } |
3012 | 3019 |
3013 ASSERT_NOT_REACHED(); | 3020 ASSERT_NOT_REACHED(); |
3014 return honorEditingBoundaryAtOrBefore(prev, visiblePosition.deepEquivalent()
); | 3021 return honorEditingBoundaryAtOrBefore(prev, visiblePosition.deepEquivalent()
); |
3015 } | 3022 } |
3016 | 3023 |
3017 } // namespace blink | 3024 } // namespace blink |
OLD | NEW |