Index: Source/core/frame/FrameDestructionObserver.h |
diff --git a/Source/core/frame/FrameDestructionObserver.h b/Source/core/frame/FrameDestructionObserver.h |
index fd3b11a06ebb8ec1fc2769bc6ff0e219cdc999fb..13e77dfd046e178cc1b8abbd1d4bc3845f8b5443 100644 |
--- a/Source/core/frame/FrameDestructionObserver.h |
+++ b/Source/core/frame/FrameDestructionObserver.h |
@@ -26,24 +26,38 @@ |
#ifndef FrameDestructionObserver_h |
#define FrameDestructionObserver_h |
+#include "platform/heap/Handle.h" |
+ |
namespace blink { |
class LocalFrame; |
-class FrameDestructionObserver { |
+class FrameDestructionObserver : public WillBeGarbageCollectedMixin { |
public: |
explicit FrameDestructionObserver(LocalFrame*); |
+#if !ENABLE(OILPAN) |
+ // Oilpan: there is no known need for directly observing |
+ // frameDestroyed() with Oilpan enabled, as its clearing is |
+ // handled by keeping a weak reference. |
+ // |
+ // A weak callback version of frameDestroyed() can be reintroduced |
+ // later, should the need arise. |
virtual void frameDestroyed(); |
+#endif |
virtual void willDetachFrameHost(); |
LocalFrame* frame() const { return m_frame; } |
+ virtual void trace(Visitor*); |
+ |
protected: |
+#if !ENABLE(OILPAN) |
virtual ~FrameDestructionObserver(); |
+#endif |
void observeFrame(LocalFrame*); |
- LocalFrame* m_frame; |
+ RawPtrWillBeWeakMember<LocalFrame> m_frame; |
}; |
} |