| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
| 3 * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved. |
| 4 * Copyright (C) 2011 Igalia S.L. | 4 * Copyright (C) 2011 Igalia S.L. |
| 5 * Copyright (C) 2011 Motorola Mobility. All rights reserved. | 5 * Copyright (C) 2011 Motorola Mobility. All rights reserved. |
| 6 * | 6 * |
| 7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
| 8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
| 9 * are met: | 9 * are met: |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 break; | 356 break; |
| 357 | 357 |
| 358 next = NodeTraversal::next(*n); | 358 next = NodeTraversal::next(*n); |
| 359 bool openedTag = false; | 359 bool openedTag = false; |
| 360 | 360 |
| 361 if (isBlock(n) && canHaveChildrenForEditing(n) && next == pastEnd) | 361 if (isBlock(n) && canHaveChildrenForEditing(n) && next == pastEnd) |
| 362 // Don't write out empty block containers that aren't fully selected
. | 362 // Don't write out empty block containers that aren't fully selected
. |
| 363 continue; | 363 continue; |
| 364 | 364 |
| 365 if (!n->renderer() && !enclosingNodeWithTag(firstPositionInOrBeforeNode(
n), selectTag)) { | 365 if (!n->renderer() && !enclosingNodeWithTag(firstPositionInOrBeforeNode(
n), selectTag)) { |
| 366 next = NodeTraversal::nextSkippingChildren(n); | 366 next = NodeTraversal::nextSkippingChildren(*n); |
| 367 // Don't skip over pastEnd. | 367 // Don't skip over pastEnd. |
| 368 if (pastEnd && pastEnd->isDescendantOf(n)) | 368 if (pastEnd && pastEnd->isDescendantOf(n)) |
| 369 next = pastEnd; | 369 next = pastEnd; |
| 370 } else { | 370 } else { |
| 371 // Add the node to the markup if we're not skipping the descendants | 371 // Add the node to the markup if we're not skipping the descendants |
| 372 if (shouldEmit) | 372 if (shouldEmit) |
| 373 appendStartTag(n); | 373 appendStartTag(n); |
| 374 | 374 |
| 375 // If node has no children, close the tag now. | 375 // If node has no children, close the tag now. |
| 376 if (!n->childNodeCount()) { | 376 if (!n->childNodeCount()) { |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 } | 671 } |
| 672 | 672 |
| 673 static void trimFragment(DocumentFragment* fragment, Node* nodeBeforeContext, No
de* nodeAfterContext) | 673 static void trimFragment(DocumentFragment* fragment, Node* nodeBeforeContext, No
de* nodeAfterContext) |
| 674 { | 674 { |
| 675 RefPtr<Node> next; | 675 RefPtr<Node> next; |
| 676 for (RefPtr<Node> node = fragment->firstChild(); node; node = next) { | 676 for (RefPtr<Node> node = fragment->firstChild(); node; node = next) { |
| 677 if (nodeBeforeContext->isDescendantOf(node.get())) { | 677 if (nodeBeforeContext->isDescendantOf(node.get())) { |
| 678 next = NodeTraversal::next(*node); | 678 next = NodeTraversal::next(*node); |
| 679 continue; | 679 continue; |
| 680 } | 680 } |
| 681 next = NodeTraversal::nextSkippingChildren(node.get()); | 681 next = NodeTraversal::nextSkippingChildren(*node); |
| 682 ASSERT(!node->contains(nodeAfterContext)); | 682 ASSERT(!node->contains(nodeAfterContext)); |
| 683 node->parentNode()->removeChild(node.get(), ASSERT_NO_EXCEPTION); | 683 node->parentNode()->removeChild(node.get(), ASSERT_NO_EXCEPTION); |
| 684 if (nodeBeforeContext == node) | 684 if (nodeBeforeContext == node) |
| 685 break; | 685 break; |
| 686 } | 686 } |
| 687 | 687 |
| 688 ASSERT(nodeAfterContext->parentNode()); | 688 ASSERT(nodeAfterContext->parentNode()); |
| 689 for (RefPtr<Node> node = nodeAfterContext; node; node = next) { | 689 for (RefPtr<Node> node = nodeAfterContext; node; node = next) { |
| 690 next = NodeTraversal::nextSkippingChildren(node.get()); | 690 next = NodeTraversal::nextSkippingChildren(*node); |
| 691 node->parentNode()->removeChild(node.get(), ASSERT_NO_EXCEPTION); | 691 node->parentNode()->removeChild(node.get(), ASSERT_NO_EXCEPTION); |
| 692 } | 692 } |
| 693 } | 693 } |
| 694 | 694 |
| 695 PassRefPtr<DocumentFragment> createFragmentFromMarkupWithContext(Document& docum
ent, const String& markup, unsigned fragmentStart, unsigned fragmentEnd, | 695 PassRefPtr<DocumentFragment> createFragmentFromMarkupWithContext(Document& docum
ent, const String& markup, unsigned fragmentStart, unsigned fragmentEnd, |
| 696 const String& baseURL, ParserContentPolicy parserContentPolicy) | 696 const String& baseURL, ParserContentPolicy parserContentPolicy) |
| 697 { | 697 { |
| 698 // FIXME: Need to handle the case where the markup already contains these ma
rkers. | 698 // FIXME: Need to handle the case where the markup already contains these ma
rkers. |
| 699 | 699 |
| 700 StringBuilder taggedMarkup; | 700 StringBuilder taggedMarkup; |
| (...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1083 return; | 1083 return; |
| 1084 | 1084 |
| 1085 RefPtr<Text> textNode = toText(node.get()); | 1085 RefPtr<Text> textNode = toText(node.get()); |
| 1086 RefPtr<Text> textNext = toText(next); | 1086 RefPtr<Text> textNext = toText(next); |
| 1087 textNode->appendData(textNext->data()); | 1087 textNode->appendData(textNext->data()); |
| 1088 if (textNext->parentNode()) // Might have been removed by mutation event. | 1088 if (textNext->parentNode()) // Might have been removed by mutation event. |
| 1089 textNext->remove(es); | 1089 textNext->remove(es); |
| 1090 } | 1090 } |
| 1091 | 1091 |
| 1092 } | 1092 } |
| OLD | NEW |