| Index: Source/core/frame/FrameView.h
|
| diff --git a/Source/core/frame/FrameView.h b/Source/core/frame/FrameView.h
|
| index d77e627d05dbcc9b16705b2a5620bbc95849d59f..4777757f5bfb7be657b5ef89b1a87bd0f413026d 100644
|
| --- a/Source/core/frame/FrameView.h
|
| +++ b/Source/core/frame/FrameView.h
|
| @@ -57,6 +57,7 @@ class RenderWidget;
|
|
|
| typedef unsigned long long DOMTimeStamp;
|
|
|
| +// FIXME: Oilpan: move Widget (and thereby FrameView) to the heap.
|
| class FrameView FINAL : public ScrollView {
|
| public:
|
| friend class RenderView;
|
| @@ -418,7 +419,13 @@ private:
|
| // FIXME: These are just "children" of the FrameView and should be RefPtr<Widget> instead.
|
| WillBePersistentHeapHashSet<RefPtrWillBeMember<RenderWidget> > m_widgets;
|
|
|
| - RefPtr<LocalFrame> m_frame;
|
| + // Oilpan: the use of a persistent back reference 'emulates' the
|
| + // RefPtr-cycle that is kept between the two objects non-Oilpan.
|
| + //
|
| + // That cycle is broken when a LocalFrame is detached by
|
| + // FrameLoader::detachFromParent(), it then clears its
|
| + // FrameView's m_frame reference by calling setView(nullptr).
|
| + RefPtrWillBePersistent<LocalFrame> m_frame;
|
|
|
| bool m_doFullPaintInvalidation;
|
|
|
|
|