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..0648d6771a5bad260070ae83fb25b8076fe47813 100644 |
| --- a/Source/core/frame/Frame.h |
| +++ b/Source/core/frame/Frame.h |
| @@ -98,6 +98,9 @@ public: |
| // method. |
| bool isRemoteFrameTemporary() const { return m_remotePlatformLayer; } |
| + bool hasBeenClosed() const { return m_hasBeenClosed; } |
| + void setHasBeenClosed() { ASSERT(!m_hasBeenClosed); m_hasBeenClosed = true; } |
| + |
| protected: |
| Frame(FrameClient*, FrameHost*, FrameOwner*); |
| @@ -111,6 +114,15 @@ protected: |
| private: |
| FrameClient* m_client; |
| blink::WebLayer* m_remotePlatformLayer; |
| + |
| + // The closing of a frame by the embedder may not trigger the |
| + // immediate release of this Frame object -- there might be |
| + // other RefPtrs to the Frame, up the stack or elsewhere. For Oilpan, |
|
Mads Ager (chromium)
2014/09/17 07:47:39
Remove the Oilpan reference in this patch since Fr
sof
2014/09/17 08:08:28
Thanks, that would premature to mention. Removed.
|
| + // any release will only happen at the next GC (at the earliest.) |
| + // |
| + // Hence, keep a separate flag that's set when the frame is |
| + // closed. It is consulted by window.closed. |
| + bool m_hasBeenClosed; |
| }; |
| inline FrameClient* Frame::client() const |