OLD | NEW |
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, 2013 Apple Inc. All rights
reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights
reserved. |
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 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 // Exclude this node when looking for removed focusedElement since only | 640 // Exclude this node when looking for removed focusedElement since only |
641 // children will be removed. | 641 // children will be removed. |
642 // This must be later than willRemoveChildren, which might change focus | 642 // This must be later than willRemoveChildren, which might change focus |
643 // state of a child. | 643 // state of a child. |
644 document().removeFocusedElementOfSubtree(this, true); | 644 document().removeFocusedElementOfSubtree(this, true); |
645 | 645 |
646 // Removing a node from a selection can cause widget updates. | 646 // Removing a node from a selection can cause widget updates. |
647 document().nodeChildrenWillBeRemoved(*this); | 647 document().nodeChildrenWillBeRemoved(*this); |
648 } | 648 } |
649 | 649 |
| 650 #if !ENABLE(OILPAN) |
650 // FIXME: Remove this NodeVector. Right now WebPluginContainerImpl::m_elemen
t is a | 651 // FIXME: Remove this NodeVector. Right now WebPluginContainerImpl::m_elemen
t is a |
651 // raw ptr which means the code below can drop the last ref to a plugin elem
ent and | 652 // raw ptr which means the code below can drop the last ref to a plugin elem
ent and |
652 // then the code in UpdateSuspendScope::performDeferredWidgetTreeOperations
will | 653 // then the code in UpdateSuspendScope::performDeferredWidgetTreeOperations
will |
653 // try to destroy the plugin which will be a use-after-free. We should use a
RefPtr | 654 // try to destroy the plugin which will be a use-after-free. We should use a
RefPtr |
654 // in the WebPluginContainerImpl instead. | 655 // in the WebPluginContainerImpl instead. |
655 NodeVector removedChildren; | 656 NodeVector removedChildren; |
| 657 #endif |
656 { | 658 { |
657 HTMLFrameOwnerElement::UpdateSuspendScope suspendWidgetHierarchyUpdates; | 659 HTMLFrameOwnerElement::UpdateSuspendScope suspendWidgetHierarchyUpdates; |
658 | 660 |
659 { | 661 { |
660 EventDispatchForbiddenScope assertNoEventDispatch; | 662 EventDispatchForbiddenScope assertNoEventDispatch; |
661 ScriptForbiddenScope forbidScript; | 663 ScriptForbiddenScope forbidScript; |
662 | 664 |
| 665 #if !ENABLE(OILPAN) |
663 removedChildren.reserveInitialCapacity(countChildren()); | 666 removedChildren.reserveInitialCapacity(countChildren()); |
664 | 667 #endif |
665 while (RefPtrWillBeRawPtr<Node> child = m_firstChild) { | 668 while (RefPtrWillBeRawPtr<Node> child = m_firstChild) { |
666 removeBetween(0, child->nextSibling(), *child); | 669 removeBetween(0, child->nextSibling(), *child); |
| 670 #if !ENABLE(OILPAN) |
667 removedChildren.append(child.get()); | 671 removedChildren.append(child.get()); |
| 672 #endif |
668 notifyNodeRemoved(*child); | 673 notifyNodeRemoved(*child); |
669 } | 674 } |
670 } | 675 } |
671 | 676 |
672 ChildrenChange change = {AllChildrenRemoved, nullptr, nullptr, ChildrenC
hangeSourceAPI}; | 677 ChildrenChange change = {AllChildrenRemoved, nullptr, nullptr, ChildrenC
hangeSourceAPI}; |
673 childrenChanged(change); | 678 childrenChanged(change); |
674 } | 679 } |
675 | 680 |
676 if (action == DispatchSubtreeModifiedEvent) | 681 if (action == DispatchSubtreeModifiedEvent) |
677 dispatchSubtreeModifiedEvent(); | 682 dispatchSubtreeModifiedEvent(); |
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1472 return true; | 1477 return true; |
1473 | 1478 |
1474 if (node->isElementNode() && toElement(node)->shadow()) | 1479 if (node->isElementNode() && toElement(node)->shadow()) |
1475 return true; | 1480 return true; |
1476 | 1481 |
1477 return false; | 1482 return false; |
1478 } | 1483 } |
1479 #endif | 1484 #endif |
1480 | 1485 |
1481 } // namespace blink | 1486 } // namespace blink |
OLD | NEW |