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

Side by Side Diff: Source/WebCore/dom/ContainerNode.cpp

Issue 10878069: Merge 124914 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1229/
Patch Set: Created 8 years, 4 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
« no previous file with comments | « LayoutTests/fast/dom/clone-node-load-event-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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 void ContainerNode::childrenChanged(bool changedByParser, Node*, Node*, int chil dCountDelta) 683 void ContainerNode::childrenChanged(bool changedByParser, Node*, Node*, int chil dCountDelta)
684 { 684 {
685 document()->incDOMTreeVersion(); 685 document()->incDOMTreeVersion();
686 if (!changedByParser && childCountDelta) 686 if (!changedByParser && childCountDelta)
687 document()->updateRangesAfterChildrenChanged(this); 687 document()->updateRangesAfterChildrenChanged(this);
688 invalidateNodeListCachesInAncestors(); 688 invalidateNodeListCachesInAncestors();
689 } 689 }
690 690
691 void ContainerNode::cloneChildNodes(ContainerNode *clone) 691 void ContainerNode::cloneChildNodes(ContainerNode *clone)
692 { 692 {
693 // disable the delete button so it's elements are not serialized into the ma rkup 693 HTMLElement* deleteButtonContainerElement = 0;
694 bool isEditorEnabled = false; 694 if (Frame* frame = document()->frame())
695 if (document()->frame() && document()->frame()->editor()->canEdit()) { 695 deleteButtonContainerElement = frame->editor()->deleteButtonController() ->containerElement();
696 FrameSelection* selection = document()->frame()->selection();
697 Element* root = selection ? selection->rootEditableElement() : 0;
698 isEditorEnabled = root && isDescendantOf(root);
699 696
700 if (isEditorEnabled) 697 ExceptionCode ec = 0;
701 document()->frame()->editor()->deleteButtonController()->disable(); 698 for (Node* n = firstChild(); n && !ec; n = n->nextSibling()) {
699 if (n == deleteButtonContainerElement)
700 continue;
701 clone->appendChild(n->cloneNode(true), ec);
702 } 702 }
703
704 ExceptionCode ec = 0;
705 for (Node* n = firstChild(); n && !ec; n = n->nextSibling())
706 clone->appendChild(n->cloneNode(true), ec);
707 if (isEditorEnabled && document()->frame())
708 document()->frame()->editor()->deleteButtonController()->enable();
709 } 703 }
710 704
711 bool ContainerNode::getUpperLeftCorner(FloatPoint& point) const 705 bool ContainerNode::getUpperLeftCorner(FloatPoint& point) const
712 { 706 {
713 if (!renderer()) 707 if (!renderer())
714 return false; 708 return false;
715 // What is this code really trying to do? 709 // What is this code really trying to do?
716 RenderObject *o = renderer(); 710 RenderObject *o = renderer();
717 RenderObject *p = o; 711 RenderObject *p = o;
718 712
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 if (shouldLazyAttach) 982 if (shouldLazyAttach)
989 child->lazyAttach(); 983 child->lazyAttach();
990 else 984 else
991 child->attach(); 985 child->attach();
992 } 986 }
993 987
994 dispatchChildInsertionEvents(child); 988 dispatchChildInsertionEvents(child);
995 } 989 }
996 990
997 } // namespace WebCore 991 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/fast/dom/clone-node-load-event-crash-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698