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

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

Issue 2772203002: Move EditingUtilities::isNodeVisiblyContainedWithin() to CompositeEditCommand (Closed)
Patch Set: Created 3 years, 8 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) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 case InputType::DeleteContentBackward: 97 case InputType::DeleteContentBackward:
98 case InputType::DeleteContentForward: 98 case InputType::DeleteContentForward:
99 return InputEvent::EventCancelable::NotCancelable; 99 return InputEvent::EventCancelable::NotCancelable;
100 default: 100 default:
101 return InputEvent::EventCancelable::IsCancelable; 101 return InputEvent::EventCancelable::IsCancelable;
102 } 102 }
103 } 103 }
104 104
105 } // namespace 105 } // namespace
106 106
107 static bool needsLayoutTreeUpdate(const Node& node) { 107 bool needsLayoutTreeUpdate(const Node& node) {
108 const Document& document = node.document(); 108 const Document& document = node.document();
109 if (document.needsLayoutTreeUpdate()) 109 if (document.needsLayoutTreeUpdate())
110 return true; 110 return true;
111 // TODO(yosin): We should make |document::needsLayoutTreeUpdate()| to 111 // TODO(yosin): We should make |document::needsLayoutTreeUpdate()| to
112 // check |LayoutView::needsLayout()|. 112 // check |LayoutView::needsLayout()|.
113 return document.view() && document.view()->needsLayout(); 113 return document.view() && document.view()->needsLayout();
114 } 114 }
115 115
116 template <typename PositionType> 116 template <typename PositionType>
117 static bool needsLayoutTreeUpdateAlgorithm(const PositionType& position) { 117 static bool needsLayoutTreeUpdateAlgorithm(const PositionType& position) {
(...skipping 1845 matching lines...) Expand 10 before | Expand all | Expand 10 after
1963 1963
1964 EphemeralRange range = PlainTextRange(index).createRangeForSelection(*scope); 1964 EphemeralRange range = PlainTextRange(index).createRangeForSelection(*scope);
1965 // Check for an invalid index. Certain editing operations invalidate indices 1965 // Check for an invalid index. Certain editing operations invalidate indices
1966 // because of problems with 1966 // because of problems with
1967 // TextIteratorEmitsCharactersBetweenAllVisiblePositions. 1967 // TextIteratorEmitsCharactersBetweenAllVisiblePositions.
1968 if (range.isNull()) 1968 if (range.isNull())
1969 return VisiblePosition(); 1969 return VisiblePosition();
1970 return createVisiblePosition(range.startPosition()); 1970 return createVisiblePosition(range.startPosition());
1971 } 1971 }
1972 1972
1973 // Determines whether a node is inside a range or visibly starts and ends at the
1974 // boundaries of the range. Call this function to determine whether a node is
1975 // visibly fit inside selectedRange
1976 bool isNodeVisiblyContainedWithin(Node& node, const Range& selectedRange) {
1977 DCHECK(!needsLayoutTreeUpdate(node));
1978 DocumentLifecycle::DisallowTransitionScope disallowTransition(
1979 node.document().lifecycle());
1980
1981 if (selectedRange.isNodeFullyContained(node))
1982 return true;
1983
1984 bool startIsVisuallySame =
1985 visiblePositionBeforeNode(node).deepEquivalent() ==
1986 createVisiblePosition(selectedRange.startPosition()).deepEquivalent();
1987 if (startIsVisuallySame &&
1988 comparePositions(Position::inParentAfterNode(node),
1989 selectedRange.endPosition()) < 0)
1990 return true;
1991
1992 bool endIsVisuallySame =
1993 visiblePositionAfterNode(node).deepEquivalent() ==
1994 createVisiblePosition(selectedRange.endPosition()).deepEquivalent();
1995 if (endIsVisuallySame &&
1996 comparePositions(selectedRange.startPosition(),
1997 Position::inParentBeforeNode(node)) < 0)
1998 return true;
1999
2000 return startIsVisuallySame && endIsVisuallySame;
2001 }
2002
2003 bool isRenderedAsNonInlineTableImageOrHR(const Node* node) { 1973 bool isRenderedAsNonInlineTableImageOrHR(const Node* node) {
2004 if (!node) 1974 if (!node)
2005 return false; 1975 return false;
2006 LayoutObject* layoutObject = node->layoutObject(); 1976 LayoutObject* layoutObject = node->layoutObject();
2007 return layoutObject && 1977 return layoutObject &&
2008 ((layoutObject->isTable() && !layoutObject->isInline()) || 1978 ((layoutObject->isTable() && !layoutObject->isInline()) ||
2009 (layoutObject->isImage() && !layoutObject->isInline()) || 1979 (layoutObject->isImage() && !layoutObject->isInline()) ||
2010 layoutObject->isHR()); 1980 layoutObject->isHR());
2011 } 1981 }
2012 1982
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2173 return InputType::DeleteWordBackward; 2143 return InputType::DeleteWordBackward;
2174 if (granularity == LineBoundary) 2144 if (granularity == LineBoundary)
2175 return InputType::DeleteLineBackward; 2145 return InputType::DeleteLineBackward;
2176 return InputType::DeleteContentBackward; 2146 return InputType::DeleteContentBackward;
2177 default: 2147 default:
2178 return InputType::None; 2148 return InputType::None;
2179 } 2149 }
2180 } 2150 }
2181 2151
2182 } // namespace blink 2152 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698