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

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

Issue 2952983002: Make Position::FirstPositionInNode() to take const Node& instead of Node* (Closed)
Patch Set: 2017-06-23T10:37:43 Created 3 years, 5 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) 2005, 2006, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2008, 2009 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 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 visible_end.IsNull() || visible_end.IsOrphan()) 256 visible_end.IsNull() || visible_end.IsOrphan())
257 return; 257 return;
258 258
259 // Save and restore the selection endpoints using their indices in the 259 // Save and restore the selection endpoints using their indices in the
260 // document, since addBlockStyleIfNeeded may moveParagraphs, which can remove 260 // document, since addBlockStyleIfNeeded may moveParagraphs, which can remove
261 // these endpoints. Calculate start and end indices from the start of the tree 261 // these endpoints. Calculate start and end indices from the start of the tree
262 // that they're in. 262 // that they're in.
263 Node& scope = NodeTraversal::HighestAncestorOrSelf( 263 Node& scope = NodeTraversal::HighestAncestorOrSelf(
264 *visible_start.DeepEquivalent().AnchorNode()); 264 *visible_start.DeepEquivalent().AnchorNode());
265 Range* start_range = 265 Range* start_range =
266 Range::Create(GetDocument(), Position::FirstPositionInNode(&scope), 266 Range::Create(GetDocument(), Position::FirstPositionInNode(scope),
267 visible_start.DeepEquivalent().ParentAnchoredEquivalent()); 267 visible_start.DeepEquivalent().ParentAnchoredEquivalent());
268 Range* end_range = 268 Range* end_range =
269 Range::Create(GetDocument(), Position::FirstPositionInNode(&scope), 269 Range::Create(GetDocument(), Position::FirstPositionInNode(scope),
270 visible_end.DeepEquivalent().ParentAnchoredEquivalent()); 270 visible_end.DeepEquivalent().ParentAnchoredEquivalent());
271 271
272 const TextIteratorBehavior behavior = 272 const TextIteratorBehavior behavior =
273 TextIteratorBehavior::AllVisiblePositionsRangeLengthBehavior(); 273 TextIteratorBehavior::AllVisiblePositionsRangeLengthBehavior();
274 274
275 int start_index = TextIterator::RangeLength( 275 int start_index = TextIterator::RangeLength(
276 start_range->StartPosition(), start_range->EndPosition(), behavior); 276 start_range->StartPosition(), start_range->EndPosition(), behavior);
277 int end_index = TextIterator::RangeLength(end_range->StartPosition(), 277 int end_index = TextIterator::RangeLength(end_range->StartPosition(),
278 end_range->EndPosition(), behavior); 278 end_range->EndPosition(), behavior);
279 279
(...skipping 16 matching lines...) Expand all
296 paragraph_start.DeepEquivalent(); 296 paragraph_start.DeepEquivalent();
297 if (!remove_only_ && IsEditablePosition(paragraph_start_to_move)) { 297 if (!remove_only_ && IsEditablePosition(paragraph_start_to_move)) {
298 HTMLElement* new_block = MoveParagraphContentsToNewBlockIfNecessary( 298 HTMLElement* new_block = MoveParagraphContentsToNewBlockIfNecessary(
299 paragraph_start_to_move, editing_state); 299 paragraph_start_to_move, editing_state);
300 if (editing_state->IsAborted()) 300 if (editing_state->IsAborted())
301 return; 301 return;
302 if (new_block) { 302 if (new_block) {
303 block = new_block; 303 block = new_block;
304 if (paragraph_start.IsOrphan()) { 304 if (paragraph_start.IsOrphan()) {
305 GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); 305 GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
306 paragraph_start = 306 paragraph_start = CreateVisiblePosition(
307 CreateVisiblePosition(Position::FirstPositionInNode(new_block)); 307 Position::FirstPositionInNode(*new_block));
308 } 308 }
309 } 309 }
310 DCHECK(!paragraph_start.IsOrphan()) << paragraph_start; 310 DCHECK(!paragraph_start.IsOrphan()) << paragraph_start;
311 } 311 }
312 if (block && block->IsHTMLElement()) { 312 if (block && block->IsHTMLElement()) {
313 RemoveCSSStyle(style, ToHTMLElement(block), editing_state); 313 RemoveCSSStyle(style, ToHTMLElement(block), editing_state);
314 if (editing_state->IsAborted()) 314 if (editing_state->IsAborted())
315 return; 315 return;
316 DCHECK(!paragraph_start.IsOrphan()) << paragraph_start; 316 DCHECK(!paragraph_start.IsOrphan()) << paragraph_start;
317 if (!remove_only_) { 317 if (!remove_only_) {
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 if (end.IsOffsetInAnchor() && 1545 if (end.IsOffsetInAnchor() &&
1546 start.ComputeContainerNode() == end.ComputeContainerNode()) 1546 start.ComputeContainerNode() == end.ComputeContainerNode())
1547 new_end = 1547 new_end =
1548 Position(end.ComputeContainerNode(), 1548 Position(end.ComputeContainerNode(),
1549 end.OffsetInContainerNode() - start.OffsetInContainerNode()); 1549 end.OffsetInContainerNode() - start.OffsetInContainerNode());
1550 else 1550 else
1551 new_end = end; 1551 new_end = end;
1552 1552
1553 Text* text = ToText(start.ComputeContainerNode()); 1553 Text* text = ToText(start.ComputeContainerNode());
1554 SplitTextNode(text, start.OffsetInContainerNode()); 1554 SplitTextNode(text, start.OffsetInContainerNode());
1555 UpdateStartEnd(Position::FirstPositionInNode(text), new_end); 1555 UpdateStartEnd(Position::FirstPositionInNode(*text), new_end);
1556 } 1556 }
1557 1557
1558 void ApplyStyleCommand::SplitTextAtEnd(const Position& start, 1558 void ApplyStyleCommand::SplitTextAtEnd(const Position& start,
1559 const Position& end) { 1559 const Position& end) {
1560 DCHECK(end.ComputeContainerNode()->IsTextNode()) << end; 1560 DCHECK(end.ComputeContainerNode()->IsTextNode()) << end;
1561 1561
1562 bool should_update_start = 1562 bool should_update_start =
1563 start.IsOffsetInAnchor() && 1563 start.IsOffsetInAnchor() &&
1564 start.ComputeContainerNode() == end.ComputeContainerNode(); 1564 start.ComputeContainerNode() == end.ComputeContainerNode();
1565 Text* text = ToText(end.AnchorNode()); 1565 Text* text = ToText(end.AnchorNode());
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
2046 2046
2047 DEFINE_TRACE(ApplyStyleCommand) { 2047 DEFINE_TRACE(ApplyStyleCommand) {
2048 visitor->Trace(style_); 2048 visitor->Trace(style_);
2049 visitor->Trace(start_); 2049 visitor->Trace(start_);
2050 visitor->Trace(end_); 2050 visitor->Trace(end_);
2051 visitor->Trace(styled_inline_element_); 2051 visitor->Trace(styled_inline_element_);
2052 CompositeEditCommand::Trace(visitor); 2052 CompositeEditCommand::Trace(visitor);
2053 } 2053 }
2054 2054
2055 } // namespace blink 2055 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698