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

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

Issue 2698793003: Get rid of redundant layout tree update related to selection (Closed)
Patch Set: 2017-02-17T00:37:54 FrameSelection::selectFrameElementInParentIfFullySelected() to use FS::isRange() Created 3 years, 10 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 /* 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 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 selectedRange->startContainer(), 623 selectedRange->startContainer(),
624 selectedRange->startOffset(), ASSERT_NO_EXCEPTION); 624 selectedRange->startOffset(), ASSERT_NO_EXCEPTION);
625 } 625 }
626 626
627 bool DOMSelection::containsNode(const Node* n, bool allowPartial) const { 627 bool DOMSelection::containsNode(const Node* n, bool allowPartial) const {
628 DCHECK(n); 628 DCHECK(n);
629 629
630 if (!isAvailable()) 630 if (!isAvailable())
631 return false; 631 return false;
632 632
633 FrameSelection& selection = frame()->selection(); 633 if (frame()->document() != n->document())
634
635 if (frame()->document() != n->document() || selection.isNone())
636 return false; 634 return false;
637 635
638 unsigned nodeIndex = n->nodeIndex(); 636 unsigned nodeIndex = n->nodeIndex();
639 637
640 // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets 638 // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets
641 // needs to be audited. See http://crbug.com/590369 for more details. 639 // needs to be audited. See http://crbug.com/590369 for more details.
642 // |VisibleSelection::toNormalizedEphemeralRange| requires clean layout. 640 // |VisibleSelection::toNormalizedEphemeralRange| requires clean layout.
643 frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets(); 641 frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets();
644 642
643 FrameSelection& selection = frame()->selection();
645 const EphemeralRange selectedRange = 644 const EphemeralRange selectedRange =
646 selection.selection().toNormalizedEphemeralRange(); 645 selection.selection().toNormalizedEphemeralRange();
646 if (selectedRange.isNull())
647 return false;
647 648
648 ContainerNode* parentNode = n->parentNode(); 649 ContainerNode* parentNode = n->parentNode();
649 if (!parentNode) 650 if (!parentNode)
650 return false; 651 return false;
651 652
652 const Position startPosition = 653 const Position startPosition =
653 selectedRange.startPosition().toOffsetInAnchor(); 654 selectedRange.startPosition().toOffsetInAnchor();
654 const Position endPosition = selectedRange.endPosition().toOffsetInAnchor(); 655 const Position endPosition = selectedRange.endPosition().toOffsetInAnchor();
655 DummyExceptionStateForTesting exceptionState; 656 DummyExceptionStateForTesting exceptionState;
656 bool nodeFullySelected = 657 bool nodeFullySelected =
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 m_treeScope->document().addConsoleMessage( 754 m_treeScope->document().addConsoleMessage(
754 ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message)); 755 ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message));
755 } 756 }
756 757
757 DEFINE_TRACE(DOMSelection) { 758 DEFINE_TRACE(DOMSelection) {
758 visitor->trace(m_treeScope); 759 visitor->trace(m_treeScope);
759 ContextClient::trace(visitor); 760 ContextClient::trace(visitor);
760 } 761 }
761 762
762 } // namespace blink 763 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/editing/Editor.cpp » ('j') | third_party/WebKit/Source/core/editing/Editor.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698