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

Side by Side Diff: Source/core/editing/htmlediting.h

Issue 24278008: [oilpan] Handlify Nodes in htmlediting (Closed) Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2008 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 47
48 // This file contains a set of helper functions used by the editing commands 48 // This file contains a set of helper functions used by the editing commands
49 49
50 // ------------------------------------------------------------------------- 50 // -------------------------------------------------------------------------
51 // Node 51 // Node
52 // ------------------------------------------------------------------------- 52 // -------------------------------------------------------------------------
53 53
54 // Functions returning Node 54 // Functions returning Node
55 55
56 Result<Node> highestAncestor(const Handle<Node>&); 56 Result<Node> highestAncestor(const Handle<Node>&);
57 Node* highestEditableRoot(const Position&, EditableType = ContentIsEditable); 57 Result<Node> highestEditableRoot(const Position&, EditableType = ContentIsEditab le);
58 58
59 Node* highestEnclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Nod e*), 59 Result<Node> highestEnclosingNodeOfType(const Position&, bool (*nodeIsOfType)(co nst Handle<const Node>&),
60 EditingBoundaryCrossingRule = CannotCrossEditingBoundary, Node* stayWithin = 0); 60 EditingBoundaryCrossingRule = CannotCrossEditingBoundary, const Handle<Node> & stayWithin = nullptr);
61 Node* highestNodeToRemoveInPruning(Node*); 61 Result<Node> highestNodeToRemoveInPruning(const Handle<Node>&);
62 Node* lowestEditableAncestor(Node*); 62 Result<Node> lowestEditableAncestor(const Handle<Node>&);
63 63
64 Result<Element> enclosingBlock(Node*, EditingBoundaryCrossingRule = CannotCrossE ditingBoundary); 64 Result<Element> enclosingBlock(const Handle<Node>&, EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
65 Node* enclosingTableCell(const Position&); 65 Result<Node> enclosingTableCell(const Position&);
66 Node* enclosingEmptyListItem(const VisiblePosition&); 66 Result<Node> enclosingEmptyListItem(const VisiblePosition&);
67 Node* enclosingAnchorElement(const Position&); 67 Result<Node> enclosingAnchorElement(const Position&);
68 Node* enclosingNodeWithTag(const Position&, const QualifiedName&); 68 Result<Node> enclosingNodeWithTag(const Position&, const QualifiedName&);
69 Node* enclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Node*), Ed itingBoundaryCrossingRule = CannotCrossEditingBoundary); 69 Result<Node> enclosingNodeOfType(const Position&, bool (*nodeIsOfType)(const Han dle<const Node>&), EditingBoundaryCrossingRule = CannotCrossEditingBoundary);
70 70
71 Node* tabSpanNode(const Node*); 71 Result<Node> tabSpanNode(const Handle<const Node>&);
72 Node* isLastPositionBeforeTable(const VisiblePosition&); 72 Result<Node> isLastPositionBeforeTable(const VisiblePosition&);
73 Node* isFirstPositionAfterTable(const VisiblePosition&); 73 Result<Node> isFirstPositionAfterTable(const VisiblePosition&);
74 74
75 // offset functions on Node 75 // offset functions on Node
76 76
77 int lastOffsetForEditing(const Node*); 77 int lastOffsetForEditing(const Handle<const Node>&);
78 int caretMinOffset(const Node*); 78 int caretMinOffset(const Handle<const Node>&);
79 int caretMaxOffset(const Node*); 79 int caretMaxOffset(const Handle<const Node>&);
80 80
81 // boolean functions on Node 81 // boolean functions on Node
82 82
83 // FIXME: editingIgnoresContent, canHaveChildrenForEditing, and isAtomicNode 83 // FIXME: editingIgnoresContent, canHaveChildrenForEditing, and isAtomicNode
84 // should be renamed to reflect its usage. 84 // should be renamed to reflect its usage.
85 85
86 // Returns true for nodes that either have no content, or have content that is i gnored (skipped over) while editing. 86 // Returns true for nodes that either have no content, or have content that is i gnored (skipped over) while editing.
87 // There are no VisiblePositions inside these nodes. 87 // There are no VisiblePositions inside these nodes.
88 inline bool editingIgnoresContent(const Node* node) 88 inline bool editingIgnoresContent(const Handle<const Node>& node)
89 { 89 {
90 return !node->canContainRangeEndPoint(); 90 return !node->canContainRangeEndPoint();
91 } 91 }
92 92
93 inline bool canHaveChildrenForEditing(const Node* node) 93 inline bool canHaveChildrenForEditing(const Handle<const Node>& node)
94 { 94 {
95 return !node->isTextNode() && node->canContainRangeEndPoint(); 95 return !node->isTextNode() && node->canContainRangeEndPoint();
96 } 96 }
97 97
98 bool isAtomicNode(const Node*); 98 bool isAtomicNode(const Handle<const Node>&);
99 bool isBlock(const Node*); 99 bool isBlock(const Handle<const Node>&);
100 bool isInline(const Node*); 100 bool isInline(const Handle<const Node>&);
101 bool isSpecialElement(const Node*); 101 bool isSpecialElement(const Handle<const Node>&);
102 bool isTabSpanNode(const Node*); 102 bool isTabSpanNode(const Handle<const Node>&);
103 bool isTabSpanTextNode(const Node*); 103 bool isTabSpanTextNode(const Handle<const Node>&);
104 bool isMailBlockquote(const Node*); 104 bool isMailBlockquote(const Handle<const Node>&);
105 bool isTableElement(Node*); 105 bool isTableElement(const Handle<Node>&);
106 bool isTableCell(const Node*); 106 bool isTableCell(const Handle<const Node>&);
107 bool isEmptyTableCell(const Node*); 107 bool isEmptyTableCell(const Handle<const Node>&);
108 bool isTableStructureNode(const Node*); 108 bool isTableStructureNode(const Handle<const Node>&);
109 bool isListElement(Node*); 109 bool isListElement(const Handle<Node>&);
110 bool isListItem(const Node*); 110 bool isListItem(const Handle<const Node>&);
111 bool isNodeRendered(const Node*); 111 bool isNodeRendered(const Handle<const Node>&);
112 bool isNodeVisiblyContainedWithin(Node*, const Handle<const Range>&); 112 bool isNodeVisiblyContainedWithin(const Handle<Node>&, const Handle<const Range> &);
113 bool isRenderedAsNonInlineTableImageOrHR(const Node*); 113 bool isRenderedAsNonInlineTableImageOrHR(const Handle<const Node>&);
114 bool areIdenticalElements(const Node*, const Node*); 114 bool areIdenticalElements(const Handle<const Node>&, const Handle<const Node>&);
115 bool isNonTableCellHTMLBlockElement(const Node*); 115 bool isNonTableCellHTMLBlockElement(const Handle<const Node>&);
116 TextDirection directionOfEnclosingBlock(const Position&); 116 TextDirection directionOfEnclosingBlock(const Position&);
117 117
118 // ------------------------------------------------------------------------- 118 // -------------------------------------------------------------------------
119 // Position 119 // Position
120 // ------------------------------------------------------------------------- 120 // -------------------------------------------------------------------------
121 121
122 // Functions returning Position 122 // Functions returning Position
123 123
124 Position nextCandidate(const Position&); 124 Position nextCandidate(const Position&);
125 Position previousCandidate(const Position&); 125 Position previousCandidate(const Position&);
126 126
127 Position nextVisuallyDistinctCandidate(const Position&); 127 Position nextVisuallyDistinctCandidate(const Position&);
128 Position previousVisuallyDistinctCandidate(const Position&); 128 Position previousVisuallyDistinctCandidate(const Position&);
129 129
130 Position positionOutsideTabSpan(const Position&); 130 Position positionOutsideTabSpan(const Position&);
131 Position positionBeforeContainingSpecialElement(const Position&, Node** containi ngSpecialElement = 0); 131 Position positionBeforeContainingSpecialElement(const Position&, Handle<Node>* c ontainingSpecialElement = 0);
132 Position positionAfterContainingSpecialElement(const Position&, Node** containin gSpecialElement = 0); 132 Position positionAfterContainingSpecialElement(const Position&, Handle<Node>* co ntainingSpecialElement = 0);
133 Position positionOutsideContainingSpecialElement(const Position&, Node** contain ingSpecialElement = 0); 133 Position positionOutsideContainingSpecialElement(const Position&, Handle<Node>* containingSpecialElement = 0);
134 134
135 inline Position firstPositionInOrBeforeNode(Node* node) 135 inline Position firstPositionInOrBeforeNode(const Handle<Node>& node)
136 { 136 {
137 HandleScope scope; 137 HandleScope scope;
138 if (!node) 138 if (!node)
139 return Position(); 139 return Position();
140 return editingIgnoresContent(node) ? positionBeforeNode(adoptRawResult(node) ) : firstPositionInNode(adoptRawResult(node)); 140 return editingIgnoresContent(node) ? positionBeforeNode(node) : firstPositio nInNode(node);
141 } 141 }
142 142
143 inline Position lastPositionInOrAfterNode(Node* node) 143 inline Position lastPositionInOrAfterNode(const Handle<Node>& node)
144 { 144 {
145 HandleScope scope; 145 HandleScope scope;
146 if (!node) 146 if (!node)
147 return Position(); 147 return Position();
148 return editingIgnoresContent(node) ? positionAfterNode(adoptRawResult(node)) : lastPositionInNode(adoptRawResult(node)); 148 return editingIgnoresContent(node) ? positionAfterNode(node) : lastPositionI nNode(node);
149 } 149 }
150 150
151 // comparision functions on Position 151 // comparision functions on Position
152 152
153 int comparePositions(const Position&, const Position&); 153 int comparePositions(const Position&, const Position&);
154 154
155 // boolean functions on Position 155 // boolean functions on Position
156 156
157 enum EUpdateStyle { UpdateStyle, DoNotUpdateStyle }; 157 enum EUpdateStyle { UpdateStyle, DoNotUpdateStyle };
158 bool isEditablePosition(const Position&, EditableType = ContentIsEditable, EUpda teStyle = UpdateStyle); 158 bool isEditablePosition(const Position&, EditableType = ContentIsEditable, EUpda teStyle = UpdateStyle);
159 bool isRichlyEditablePosition(const Position&, EditableType = ContentIsEditable) ; 159 bool isRichlyEditablePosition(const Position&, EditableType = ContentIsEditable) ;
160 bool isFirstVisiblePositionInSpecialElement(const Position&); 160 bool isFirstVisiblePositionInSpecialElement(const Position&);
161 bool isLastVisiblePositionInSpecialElement(const Position&); 161 bool isLastVisiblePositionInSpecialElement(const Position&);
162 bool lineBreakExistsAtPosition(const Position&); 162 bool lineBreakExistsAtPosition(const Position&);
163 bool isVisiblyAdjacent(const Position& first, const Position& second); 163 bool isVisiblyAdjacent(const Position& first, const Position& second);
164 bool isAtUnsplittableElement(const Position&); 164 bool isAtUnsplittableElement(const Position&);
165 165
166 // miscellaneous functions on Position 166 // miscellaneous functions on Position
167 167
168 unsigned numEnclosingMailBlockquotes(const Position&); 168 unsigned numEnclosingMailBlockquotes(const Position&);
169 void updatePositionForNodeRemoval(Position&, Node*); 169 void updatePositionForNodeRemoval(Position&, const Handle<Node>&);
170 170
171 // ------------------------------------------------------------------------- 171 // -------------------------------------------------------------------------
172 // VisiblePosition 172 // VisiblePosition
173 // ------------------------------------------------------------------------- 173 // -------------------------------------------------------------------------
174 174
175 // Functions returning VisiblePosition 175 // Functions returning VisiblePosition
176 176
177 VisiblePosition firstEditablePositionAfterPositionInRoot(const Position&, Node*) ; 177 VisiblePosition firstEditablePositionAfterPositionInRoot(const Position&, const Handle<Node>&);
178 VisiblePosition lastEditablePositionBeforePositionInRoot(const Position&, Node*) ; 178 VisiblePosition lastEditablePositionBeforePositionInRoot(const Position&, const Handle<Node>&);
179 VisiblePosition visiblePositionBeforeNode(Node*); 179 VisiblePosition visiblePositionBeforeNode(const Handle<Node>&);
180 VisiblePosition visiblePositionAfterNode(Node*); 180 VisiblePosition visiblePositionAfterNode(const Handle<Node>&);
181 181
182 bool lineBreakExistsAtVisiblePosition(const VisiblePosition&); 182 bool lineBreakExistsAtVisiblePosition(const VisiblePosition&);
183 183
184 int comparePositions(const VisiblePosition&, const VisiblePosition&); 184 int comparePositions(const VisiblePosition&, const VisiblePosition&);
185 185
186 int indexForVisiblePosition(const VisiblePosition&, Handle<ContainerNode>& scope ); 186 int indexForVisiblePosition(const VisiblePosition&, Handle<ContainerNode>& scope );
187 VisiblePosition visiblePositionForIndex(int index, const Handle<ContainerNode>& scope); 187 VisiblePosition visiblePositionForIndex(int index, const Handle<ContainerNode>& scope);
188 188
189 // ------------------------------------------------------------------------- 189 // -------------------------------------------------------------------------
190 // Range 190 // Range
191 // ------------------------------------------------------------------------- 191 // -------------------------------------------------------------------------
192 192
193 // Functions returning Range 193 // Functions returning Range
194 194
195 Result<Range> createRange(const Handle<Document>&, const VisiblePosition& start, const VisiblePosition& end, ExceptionCode&); 195 Result<Range> createRange(const Handle<Document>&, const VisiblePosition& start, const VisiblePosition& end, ExceptionCode&);
196 Result<Range> extendRangeToWrappingNodes(const Handle<Range>& rangeToExtend, con st Handle<const Range>& maximumRange, const Node* rootNode); 196 Result<Range> extendRangeToWrappingNodes(const Handle<Range>& rangeToExtend, con st Handle<const Range>& maximumRange, const Handle<const Node>& rootNode);
197 197
198 // ------------------------------------------------------------------------- 198 // -------------------------------------------------------------------------
199 // HTMLElement 199 // HTMLElement
200 // ------------------------------------------------------------------------- 200 // -------------------------------------------------------------------------
201 201
202 // Functions returning HTMLElement 202 // Functions returning HTMLElement
203 203
204 Result<HTMLElement> createDefaultParagraphElement(const Handle<Document>&); 204 Result<HTMLElement> createDefaultParagraphElement(const Handle<Document>&);
205 Result<HTMLElement> createBreakElement(const Handle<Document>&); 205 Result<HTMLElement> createBreakElement(const Handle<Document>&);
206 Result<HTMLElement> createOrderedListElement(const Handle<Document>&); 206 Result<HTMLElement> createOrderedListElement(const Handle<Document>&);
207 Result<HTMLElement> createUnorderedListElement(const Handle<Document>&); 207 Result<HTMLElement> createUnorderedListElement(const Handle<Document>&);
208 Result<HTMLElement> createListItemElement(const Handle<Document>&); 208 Result<HTMLElement> createListItemElement(const Handle<Document>&);
209 Result<HTMLElement> createHTMLElement(const Handle<Document>&, const QualifiedNa me&); 209 Result<HTMLElement> createHTMLElement(const Handle<Document>&, const QualifiedNa me&);
210 Result<HTMLElement> createHTMLElement(const Handle<Document>&, const AtomicStrin g&); 210 Result<HTMLElement> createHTMLElement(const Handle<Document>&, const AtomicStrin g&);
211 211
212 Result<HTMLElement> enclosingList(Node*); 212 Result<HTMLElement> enclosingList(const Handle<Node>&);
213 Result<HTMLElement> outermostEnclosingList(Node*, Node* rootList = 0); 213 Result<HTMLElement> outermostEnclosingList(const Handle<Node>&, const Handle<Nod e>& rootList = nullptr);
214 Node* enclosingListChild(Node*); 214 Result<Node> enclosingListChild(const Handle<Node>&);
215 215
216 // ------------------------------------------------------------------------- 216 // -------------------------------------------------------------------------
217 // Element 217 // Element
218 // ------------------------------------------------------------------------- 218 // -------------------------------------------------------------------------
219 219
220 // Functions returning Element 220 // Functions returning Element
221 221
222 Result<Element> createTabSpanElement(const Handle<Document>&); 222 Result<Element> createTabSpanElement(const Handle<Document>&);
223 Result<Element> createTabSpanElement(const Handle<Document>&, PassRefPtr<Node> t abTextNode); 223 Result<Element> createTabSpanElement(const Handle<Document>&, PassRefPtr<Node> t abTextNode);
224 Result<Element> createTabSpanElement(const Handle<Document>&, const String& tabT ext); 224 Result<Element> createTabSpanElement(const Handle<Document>&, const String& tabT ext);
(...skipping 29 matching lines...) Expand all
254 // FIXME: this is required until 6853027 is fixed and text checking can do t his for us. 254 // FIXME: this is required until 6853027 is fixed and text checking can do t his for us.
255 return character == '\'' || character == rightSingleQuotationMark || charact er == hebrewPunctuationGershayim; 255 return character == '\'' || character == rightSingleQuotationMark || charact er == hebrewPunctuationGershayim;
256 } 256 }
257 257
258 String stringWithRebalancedWhitespace(const String&, bool startIsStartOfParagrap h, bool endIsEndOfParagraph); 258 String stringWithRebalancedWhitespace(const String&, bool startIsStartOfParagrap h, bool endIsEndOfParagraph);
259 const String& nonBreakingSpaceString(); 259 const String& nonBreakingSpaceString();
260 260
261 } 261 }
262 262
263 #endif 263 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698