OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. |
3 * Copyright (C) 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2012 Google 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 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 Range* range = createRangeFromSelectionEditor(); | 533 Range* range = createRangeFromSelectionEditor(); |
534 cacheRangeIfSelectionOfDocument(range); | 534 cacheRangeIfSelectionOfDocument(range); |
535 return range; | 535 return range; |
536 } | 536 } |
537 | 537 |
538 Range* DOMSelection::primaryRangeOrNull() const { | 538 Range* DOMSelection::primaryRangeOrNull() const { |
539 return rangeCount() > 0 ? getRangeAt(0, ASSERT_NO_EXCEPTION) : nullptr; | 539 return rangeCount() > 0 ? getRangeAt(0, ASSERT_NO_EXCEPTION) : nullptr; |
540 } | 540 } |
541 | 541 |
542 Range* DOMSelection::createRangeFromSelectionEditor() const { | 542 Range* DOMSelection::createRangeFromSelectionEditor() const { |
543 Position anchor = blink::anchorPosition(visibleSelection()); | 543 const VisibleSelection& selection = visibleSelection(); |
| 544 const Position& anchor = blink::anchorPosition(selection); |
544 if (isSelectionOfDocument() && !anchor.anchorNode()->isInShadowTree()) | 545 if (isSelectionOfDocument() && !anchor.anchorNode()->isInShadowTree()) |
545 return frame()->selection().firstRange(); | 546 return createRange(firstEphemeralRangeOf(selection)); |
546 | 547 |
547 Node* node = shadowAdjustedNode(anchor); | 548 Node* const node = shadowAdjustedNode(anchor); |
548 if (!node) // crbug.com/595100 | 549 if (!node) // crbug.com/595100 |
549 return nullptr; | 550 return nullptr; |
550 Position focus = focusPosition(visibleSelection()); | 551 const Position& focus = focusPosition(selection); |
551 if (!visibleSelection().isBaseFirst()) { | 552 if (!selection.isBaseFirst()) { |
552 return Range::create(*anchor.document(), shadowAdjustedNode(focus), | 553 return Range::create(*anchor.document(), shadowAdjustedNode(focus), |
553 shadowAdjustedOffset(focus), node, | 554 shadowAdjustedOffset(focus), node, |
554 shadowAdjustedOffset(anchor)); | 555 shadowAdjustedOffset(anchor)); |
555 } | 556 } |
556 return Range::create(*anchor.document(), node, shadowAdjustedOffset(anchor), | 557 return Range::create(*anchor.document(), node, shadowAdjustedOffset(anchor), |
557 shadowAdjustedNode(focus), shadowAdjustedOffset(focus)); | 558 shadowAdjustedNode(focus), shadowAdjustedOffset(focus)); |
558 } | 559 } |
559 | 560 |
560 bool DOMSelection::isSelectionOfDocument() const { | 561 bool DOMSelection::isSelectionOfDocument() const { |
561 return m_treeScope == m_treeScope->document(); | 562 return m_treeScope == m_treeScope->document(); |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 m_treeScope->document().addConsoleMessage( | 819 m_treeScope->document().addConsoleMessage( |
819 ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message)); | 820 ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message)); |
820 } | 821 } |
821 | 822 |
822 DEFINE_TRACE(DOMSelection) { | 823 DEFINE_TRACE(DOMSelection) { |
823 visitor->trace(m_treeScope); | 824 visitor->trace(m_treeScope); |
824 ContextClient::trace(visitor); | 825 ContextClient::trace(visitor); |
825 } | 826 } |
826 | 827 |
827 } // namespace blink | 828 } // namespace blink |
OLD | NEW |