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 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
600 selectedRange->startContainer(), | 600 selectedRange->startContainer(), |
601 selectedRange->startOffset(), ASSERT_NO_EXCEPTION); | 601 selectedRange->startOffset(), ASSERT_NO_EXCEPTION); |
602 } | 602 } |
603 | 603 |
604 bool DOMSelection::containsNode(const Node* n, bool allowPartial) const { | 604 bool DOMSelection::containsNode(const Node* n, bool allowPartial) const { |
605 DCHECK(n); | 605 DCHECK(n); |
606 | 606 |
607 if (!isAvailable()) | 607 if (!isAvailable()) |
608 return false; | 608 return false; |
609 | 609 |
610 FrameSelection& selection = frame()->selection(); | 610 if (frame()->document() != n->document()) |
611 | |
612 if (frame()->document() != n->document() || selection.isNone()) | |
yosin_UTC9
2017/02/16 09:50:26
FrameSeleciton::isNone() requires clean layout tre
| |
613 return false; | 611 return false; |
614 | 612 |
615 unsigned nodeIndex = n->nodeIndex(); | 613 unsigned nodeIndex = n->nodeIndex(); |
616 | 614 |
617 // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets | 615 // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets |
618 // needs to be audited. See http://crbug.com/590369 for more details. | 616 // needs to be audited. See http://crbug.com/590369 for more details. |
619 // |VisibleSelection::toNormalizedEphemeralRange| requires clean layout. | 617 // |VisibleSelection::toNormalizedEphemeralRange| requires clean layout. |
620 frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets(); | 618 frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
621 | 619 |
620 FrameSelection& selection = frame()->selection(); | |
622 const EphemeralRange selectedRange = | 621 const EphemeralRange selectedRange = |
623 selection.selection().toNormalizedEphemeralRange(); | 622 selection.selection().toNormalizedEphemeralRange(); |
623 if (selectedRange.isNull()) | |
624 return false; | |
624 | 625 |
625 ContainerNode* parentNode = n->parentNode(); | 626 ContainerNode* parentNode = n->parentNode(); |
626 if (!parentNode) | 627 if (!parentNode) |
627 return false; | 628 return false; |
628 | 629 |
629 const Position startPosition = | 630 const Position startPosition = |
630 selectedRange.startPosition().toOffsetInAnchor(); | 631 selectedRange.startPosition().toOffsetInAnchor(); |
631 const Position endPosition = selectedRange.endPosition().toOffsetInAnchor(); | 632 const Position endPosition = selectedRange.endPosition().toOffsetInAnchor(); |
632 DummyExceptionStateForTesting exceptionState; | 633 DummyExceptionStateForTesting exceptionState; |
633 bool nodeFullySelected = | 634 bool nodeFullySelected = |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
730 m_treeScope->document().addConsoleMessage( | 731 m_treeScope->document().addConsoleMessage( |
731 ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message)); | 732 ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message)); |
732 } | 733 } |
733 | 734 |
734 DEFINE_TRACE(DOMSelection) { | 735 DEFINE_TRACE(DOMSelection) { |
735 visitor->trace(m_treeScope); | 736 visitor->trace(m_treeScope); |
736 ContextClient::trace(visitor); | 737 ContextClient::trace(visitor); |
737 } | 738 } |
738 | 739 |
739 } // namespace blink | 740 } // namespace blink |
OLD | NEW |