1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef ChildFrameDisconnector_h 6 #define ChildFrameDisconnector_h 7 8 #include "platform/heap/Handle.h" 9 10 namespace WebCore { 11 12 class ElementShadow; 13 class HTMLFrameOwnerElement; 14 class Node; 15 16 class ChildFrameDisconnector { 17 STACK_ALLOCATED(); 18 public: 19 enum DisconnectPolicy { 20 RootAndDescendants, 21 DescendantsOnly 22 }; 23 24 explicit ChildFrameDisconnector(Node& root) 25 : m_root(root) 26 { 27 } 28 29 void disconnect(DisconnectPolicy = RootAndDescendants); 30 31 private: 32 void collectFrameOwners(Node&); 33 void collectFrameOwners(ElementShadow&); 34 void disconnectCollectedFrameOwners(); 35 36 WillBeHeapVector<RefPtrWillBeMember<HTMLFrameOwnerElement>, 10> m_frameOwners; 37 Node& m_root; 38 }; 39 40 } // namespace WebCore 41 42 #endif // ChildFrameDisconnector_h 43