| 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 * Portions Copyright (c) 2011 Motorola Mobility, Inc. All rights reserved. | 3 * Portions Copyright (c) 2011 Motorola Mobility, Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include <stdio.h> | 45 #include <stdio.h> |
| 46 #endif | 46 #endif |
| 47 | 47 |
| 48 namespace blink { | 48 namespace blink { |
| 49 | 49 |
| 50 using namespace HTMLNames; | 50 using namespace HTMLNames; |
| 51 | 51 |
| 52 VisiblePosition::VisiblePosition(const Position& position, TextAffinity affinity
) | 52 VisiblePosition::VisiblePosition(const Position& position, TextAffinity affinity
) |
| 53 { | 53 { |
| 54 // TODO(yosin) We should make |VisiblePosition| private and make this | 54 // TODO(yosin) We should make |VisiblePosition| private and make this |
| 55 // constructor to populate member variables by using |visiblePositionOf()|. | 55 // constructor to populate member variables by using |createVisiblePosition(
)|. |
| 56 *this = visiblePositionOf(position, affinity); | 56 *this = createVisiblePosition(position, affinity); |
| 57 } | 57 } |
| 58 | 58 |
| 59 VisiblePosition VisiblePosition::createWithoutCanonicalization(const PositionWit
hAffinity& canonicalized) | 59 VisiblePosition VisiblePosition::createWithoutCanonicalization(const PositionWit
hAffinity& canonicalized) |
| 60 { | 60 { |
| 61 VisiblePosition visiblePosition; | 61 VisiblePosition visiblePosition; |
| 62 visiblePosition.m_deepPosition = canonicalized.position(); | 62 visiblePosition.m_deepPosition = canonicalized.position(); |
| 63 visiblePosition.m_affinity = canonicalized.affinity(); | 63 visiblePosition.m_affinity = canonicalized.affinity(); |
| 64 return visiblePosition; | 64 return visiblePosition; |
| 65 } | 65 } |
| 66 | 66 |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 return honorEditingBoundaryAtOrBeforeAlgorithm(pos, anchor); | 427 return honorEditingBoundaryAtOrBeforeAlgorithm(pos, anchor); |
| 428 } | 428 } |
| 429 | 429 |
| 430 PositionInComposedTreeWithAffinity honorEditingBoundaryAtOrBeforeOf(const Positi
onInComposedTreeWithAffinity& pos, const PositionInComposedTree& anchor) | 430 PositionInComposedTreeWithAffinity honorEditingBoundaryAtOrBeforeOf(const Positi
onInComposedTreeWithAffinity& pos, const PositionInComposedTree& anchor) |
| 431 { | 431 { |
| 432 return honorEditingBoundaryAtOrBeforeAlgorithm(pos, anchor); | 432 return honorEditingBoundaryAtOrBeforeAlgorithm(pos, anchor); |
| 433 } | 433 } |
| 434 | 434 |
| 435 VisiblePosition honorEditingBoundaryAtOrBefore(const VisiblePosition& pos, const
Position& anchor) | 435 VisiblePosition honorEditingBoundaryAtOrBefore(const VisiblePosition& pos, const
Position& anchor) |
| 436 { | 436 { |
| 437 return visiblePositionOf(honorEditingBoundaryAtOrBeforeOf(pos.toPositionWith
Affinity(), anchor)); | 437 return createVisiblePosition(honorEditingBoundaryAtOrBeforeOf(pos.toPosition
WithAffinity(), anchor)); |
| 438 } | 438 } |
| 439 | 439 |
| 440 VisiblePosition honorEditingBoundaryAtOrAfter(const VisiblePosition& pos, const
Position& anchor) | 440 VisiblePosition honorEditingBoundaryAtOrAfter(const VisiblePosition& pos, const
Position& anchor) |
| 441 { | 441 { |
| 442 if (pos.isNull()) | 442 if (pos.isNull()) |
| 443 return pos; | 443 return pos; |
| 444 | 444 |
| 445 ContainerNode* highestRoot = highestEditableRoot(anchor); | 445 ContainerNode* highestRoot = highestEditableRoot(anchor); |
| 446 | 446 |
| 447 // Return empty position if pos is not somewhere inside the editable region
containing this position | 447 // Return empty position if pos is not somewhere inside the editable region
containing this position |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 { | 552 { |
| 553 return canonicalPosition(position); | 553 return canonicalPosition(position); |
| 554 } | 554 } |
| 555 | 555 |
| 556 PositionInComposedTree canonicalPositionOf(const PositionInComposedTree& positio
n) | 556 PositionInComposedTree canonicalPositionOf(const PositionInComposedTree& positio
n) |
| 557 { | 557 { |
| 558 return canonicalPosition(position); | 558 return canonicalPosition(position); |
| 559 } | 559 } |
| 560 | 560 |
| 561 template<typename Strategy> | 561 template<typename Strategy> |
| 562 static PositionWithAffinityTemplate<Strategy> visiblePositionOfAlgorithm(const P
ositionAlgorithm<Strategy>& position, TextAffinity affinity) | 562 static PositionWithAffinityTemplate<Strategy> createVisiblePositionAlgorithm(con
st PositionAlgorithm<Strategy>& position, TextAffinity affinity) |
| 563 { | 563 { |
| 564 const PositionAlgorithm<Strategy> deepPosition = canonicalPosition(position)
; | 564 const PositionAlgorithm<Strategy> deepPosition = canonicalPosition(position)
; |
| 565 if (deepPosition.isNull()) | 565 if (deepPosition.isNull()) |
| 566 return PositionWithAffinityTemplate<Strategy>(); | 566 return PositionWithAffinityTemplate<Strategy>(); |
| 567 if (affinity == TextAffinity::Downstream) | 567 if (affinity == TextAffinity::Downstream) |
| 568 return PositionWithAffinityTemplate<Strategy>(deepPosition); | 568 return PositionWithAffinityTemplate<Strategy>(deepPosition); |
| 569 | 569 |
| 570 // When not at a line wrap, make sure to end up with | 570 // When not at a line wrap, make sure to end up with |
| 571 // |TextAffinity::Downstream| affinity. | 571 // |TextAffinity::Downstream| affinity. |
| 572 if (inSameLine(PositionWithAffinityTemplate<Strategy>(deepPosition), Positio
nWithAffinityTemplate<Strategy>(deepPosition, TextAffinity::Upstream))) | 572 if (inSameLine(PositionWithAffinityTemplate<Strategy>(deepPosition), Positio
nWithAffinityTemplate<Strategy>(deepPosition, TextAffinity::Upstream))) |
| 573 return PositionWithAffinityTemplate<Strategy>(deepPosition); | 573 return PositionWithAffinityTemplate<Strategy>(deepPosition); |
| 574 return PositionWithAffinityTemplate<Strategy>(deepPosition, TextAffinity::Up
stream); | 574 return PositionWithAffinityTemplate<Strategy>(deepPosition, TextAffinity::Up
stream); |
| 575 } | 575 } |
| 576 | 576 |
| 577 VisiblePosition visiblePositionOf(const Position& position, TextAffinity affinit
y) | 577 VisiblePosition createVisiblePosition(const Position& position, TextAffinity aff
inity) |
| 578 { | 578 { |
| 579 return VisiblePosition::createWithoutCanonicalization(visiblePositionOfAlgor
ithm<EditingStrategy>(position, affinity)); | 579 return VisiblePosition::createWithoutCanonicalization(createVisiblePositionA
lgorithm<EditingStrategy>(position, affinity)); |
| 580 } | 580 } |
| 581 | 581 |
| 582 VisiblePosition visiblePositionOf(const PositionWithAffinity& positionWithAffini
ty) | 582 VisiblePosition createVisiblePosition(const PositionWithAffinity& positionWithAf
finity) |
| 583 { | 583 { |
| 584 return visiblePositionOf(positionWithAffinity.position(), positionWithAffini
ty.affinity()); | 584 return createVisiblePosition(positionWithAffinity.position(), positionWithAf
finity.affinity()); |
| 585 } | 585 } |
| 586 | 586 |
| 587 VisiblePosition visiblePositionOf(const PositionInComposedTree& position, TextAf
finity affinity) | 587 VisiblePosition createVisiblePosition(const PositionInComposedTree& position, Te
xtAffinity affinity) |
| 588 { | 588 { |
| 589 PositionInComposedTreeWithAffinity canonicalized = visiblePositionOfAlgorith
m<EditingInComposedTreeStrategy>(position, affinity); | 589 PositionInComposedTreeWithAffinity canonicalized = createVisiblePositionAlgo
rithm<EditingInComposedTreeStrategy>(position, affinity); |
| 590 return VisiblePosition::createWithoutCanonicalization(PositionWithAffinity(t
oPositionInDOMTree(canonicalized.position()), canonicalized.affinity())); | 590 return VisiblePosition::createWithoutCanonicalization(PositionWithAffinity(t
oPositionInDOMTree(canonicalized.position()), canonicalized.affinity())); |
| 591 } | 591 } |
| 592 | 592 |
| 593 IntRect absoluteCaretBoundsOf(const VisiblePosition& visiblePosition) | 593 IntRect absoluteCaretBoundsOf(const VisiblePosition& visiblePosition) |
| 594 { | 594 { |
| 595 LayoutObject* layoutObject; | 595 LayoutObject* layoutObject; |
| 596 LayoutRect localRect = localCaretRectOfPosition(visiblePosition.toPositionWi
thAffinity(), layoutObject); | 596 LayoutRect localRect = localCaretRectOfPosition(visiblePosition.toPositionWi
thAffinity(), layoutObject); |
| 597 if (localRect.isEmpty() || !layoutObject) | 597 if (localRect.isEmpty() || !layoutObject) |
| 598 return IntRect(); | 598 return IntRect(); |
| 599 | 599 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 else | 662 else |
| 663 fprintf(stderr, "Cannot showTree for (nil) VisiblePosition.\n"); | 663 fprintf(stderr, "Cannot showTree for (nil) VisiblePosition.\n"); |
| 664 } | 664 } |
| 665 | 665 |
| 666 void showTree(const blink::VisiblePosition& vpos) | 666 void showTree(const blink::VisiblePosition& vpos) |
| 667 { | 667 { |
| 668 vpos.showTreeForThis(); | 668 vpos.showTreeForThis(); |
| 669 } | 669 } |
| 670 | 670 |
| 671 #endif | 671 #endif |
| OLD | NEW |