Chromium Code Reviews| Index: Source/core/frame/Frame.h |
| diff --git a/Source/core/frame/Frame.h b/Source/core/frame/Frame.h |
| index 498cb77c81bfd740d26d1fdc0c02b6131f656796..1e62050c71fa286adfe5c7fad0ed50cbed0283fc 100644 |
| --- a/Source/core/frame/Frame.h |
| +++ b/Source/core/frame/Frame.h |
| @@ -34,10 +34,6 @@ |
| #include "wtf/RefCounted.h" |
| namespace blink { |
| -class WebLayer; |
| -} |
| - |
| -namespace blink { |
| class ChromeClient; |
| class FrameClient; |
| @@ -48,13 +44,15 @@ class LocalDOMWindow; |
| class Page; |
| class RenderPart; |
| class Settings; |
| +class WebLayer; |
| -class Frame : public RefCounted<Frame> { |
| +class Frame : public RefCountedWillBeGarbageCollectedFinalized<Frame> { |
| public: |
| virtual bool isLocalFrame() const { return false; } |
| virtual bool isRemoteFrame() const { return false; } |
| virtual ~Frame(); |
| + virtual void trace(Visitor*); |
| virtual void detach() = 0; |
| void detachChildren(); |
| @@ -87,8 +85,8 @@ public: |
| RenderPart* ownerRenderer() const; // Renderer for the element that contains this frame. |
| // FIXME: These should move to RemoteFrame when that is instantiated. |
| - void setRemotePlatformLayer(blink::WebLayer*); |
| - blink::WebLayer* remotePlatformLayer() const { return m_remotePlatformLayer; } |
| + void setRemotePlatformLayer(WebLayer*); |
|
dcheng
2014/09/07 22:26:34
Nit: it would be better to move pure cleanups like
|
| + WebLayer* remotePlatformLayer() const { return m_remotePlatformLayer; } |
| Settings* settings() const; // can be null |
| @@ -98,19 +96,36 @@ public: |
| // method. |
| bool isRemoteFrameTemporary() const { return m_remotePlatformLayer; } |
| +#if ENABLE(OILPAN) |
| + bool hasBeenClosed() const { return m_hasBeenClosed; } |
| + void setHasBeenClosed() { ASSERT(!m_hasBeenClosed); m_hasBeenClosed = true; } |
| +#endif |
| + |
| protected: |
| Frame(FrameClient*, FrameHost*, FrameOwner*); |
| mutable FrameTree m_treeNode; |
| FrameHost* m_host; |
|
haraken
2014/09/08 07:25:58
This should be Member<FrameHost>.
sof
2014/09/08 21:17:45
Yes, now a traced RawPtrWillBeMember<>.
|
| - FrameOwner* m_owner; |
| + RawPtrWillBeMember<FrameOwner> m_owner; |
| - RefPtrWillBePersistent<LocalDOMWindow> m_domWindow; |
| + RefPtrWillBeMember<LocalDOMWindow> m_domWindow; |
| private: |
| FrameClient* m_client; |
| - blink::WebLayer* m_remotePlatformLayer; |
| + WebLayer* m_remotePlatformLayer; |
| + |
| + void dispose(); |
| + |
| +#if ENABLE(OILPAN) |
| + // With Oilpan, the closing of a frame from the embedder doesn't |
| + // trigger the immediate release of this Frame object (or, to be |
| + // precise, when the ref-count drops to zero -- there might be |
| + // other references to the Frame. Further up the stack, for |
| + // instance.) Hence, a separate closed flag is kept -- consulted |
| + // by window.closed. |
| + bool m_hasBeenClosed; |
| +#endif |
| }; |
| inline FrameClient* Frame::client() const |