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

Side by Side Diff: Source/WebCore/editing/ApplyStyleCommand.cpp

Issue 11418269: Merge 135193 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1271/
Patch Set: Created 8 years 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
« no previous file with comments | « LayoutTests/editing/style/apply-style-crash-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 for (Node* n = startNode; n && n != enclosingNode; n = n->parentNode()) { 532 for (Node* n = startNode; n && n != enclosingNode; n = n->parentNode()) {
533 if (n->isHTMLElement() && getIdentifierValue(CSSComputedStyleDeclaration ::create(n).get(), CSSPropertyUnicodeBidi) == CSSValueEmbed) 533 if (n->isHTMLElement() && getIdentifierValue(CSSComputedStyleDeclaration ::create(n).get(), CSSPropertyUnicodeBidi) == CSSValueEmbed)
534 return n; 534 return n;
535 } 535 }
536 536
537 return 0; 537 return 0;
538 } 538 }
539 539
540 void ApplyStyleCommand::applyInlineStyle(EditingStyle* style) 540 void ApplyStyleCommand::applyInlineStyle(EditingStyle* style)
541 { 541 {
542 Node* startDummySpanAncestor = 0; 542 RefPtr<Node> startDummySpanAncestor = 0;
543 Node* endDummySpanAncestor = 0; 543 RefPtr<Node> endDummySpanAncestor = 0;
544 544
545 // update document layout once before removing styles 545 // update document layout once before removing styles
546 // so that we avoid the expense of updating before each and every call 546 // so that we avoid the expense of updating before each and every call
547 // to check a computed style 547 // to check a computed style
548 document()->updateLayoutIgnorePendingStylesheets(); 548 document()->updateLayoutIgnorePendingStylesheets();
549 549
550 // adjust to the positions we want to use for applying style 550 // adjust to the positions we want to use for applying style
551 Position start = startPosition(); 551 Position start = startPosition();
552 Position end = endPosition(); 552 Position end = endPosition();
553 553
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 } 658 }
659 fixRangeAndApplyInlineStyle(embeddingStyle.get(), embeddingApplyStar t, embeddingApplyEnd); 659 fixRangeAndApplyInlineStyle(embeddingStyle.get(), embeddingApplyStar t, embeddingApplyEnd);
660 660
661 styleToApply = styleWithoutEmbedding; 661 styleToApply = styleWithoutEmbedding;
662 } 662 }
663 } 663 }
664 664
665 fixRangeAndApplyInlineStyle(styleToApply.get(), start, end); 665 fixRangeAndApplyInlineStyle(styleToApply.get(), start, end);
666 666
667 // Remove dummy style spans created by splitting text elements. 667 // Remove dummy style spans created by splitting text elements.
668 cleanupUnstyledAppleStyleSpans(startDummySpanAncestor); 668 cleanupUnstyledAppleStyleSpans(startDummySpanAncestor.get());
669 if (endDummySpanAncestor != startDummySpanAncestor) 669 if (endDummySpanAncestor != startDummySpanAncestor)
670 cleanupUnstyledAppleStyleSpans(endDummySpanAncestor); 670 cleanupUnstyledAppleStyleSpans(endDummySpanAncestor.get());
671 } 671 }
672 672
673 void ApplyStyleCommand::fixRangeAndApplyInlineStyle(EditingStyle* style, const P osition& start, const Position& end) 673 void ApplyStyleCommand::fixRangeAndApplyInlineStyle(EditingStyle* style, const P osition& start, const Position& end)
674 { 674 {
675 Node* startNode = start.deprecatedNode(); 675 Node* startNode = start.deprecatedNode();
676 676
677 if (start.deprecatedEditingOffset() >= caretMaxOffset(start.deprecatedNode() )) { 677 if (start.deprecatedEditingOffset() >= caretMaxOffset(start.deprecatedNode() )) {
678 startNode = startNode->traverseNextNode(); 678 startNode = startNode->traverseNextNode();
679 if (!startNode || comparePositions(end, firstPositionInOrBeforeNode(star tNode)) < 0) 679 if (!startNode || comparePositions(end, firstPositionInOrBeforeNode(star tNode)) < 0)
680 return; 680 return;
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after
1478 String textToMove = nextText->data(); 1478 String textToMove = nextText->data();
1479 insertTextIntoNode(childText, childText->length(), textToMove); 1479 insertTextIntoNode(childText, childText->length(), textToMove);
1480 removeNode(next); 1480 removeNode(next);
1481 // don't move child node pointer. it may want to merge with more text no des. 1481 // don't move child node pointer. it may want to merge with more text no des.
1482 } 1482 }
1483 1483
1484 updateStartEnd(newStart, newEnd); 1484 updateStartEnd(newStart, newEnd);
1485 } 1485 }
1486 1486
1487 } 1487 }
OLDNEW
« no previous file with comments | « LayoutTests/editing/style/apply-style-crash-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698