Chromium Code Reviews| Index: Source/core/frame/FrameProtector.h |
| diff --git a/Source/core/frame/FrameProtector.h b/Source/core/frame/FrameProtector.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b4be8c64032147856446dbb26bf51ff8e3cca481 |
| --- /dev/null |
| +++ b/Source/core/frame/FrameProtector.h |
| @@ -0,0 +1,55 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef FrameProtector_h |
| +#define FrameProtector_h |
| + |
| +#include "platform/heap/Handle.h" |
| + |
| +namespace blink { |
| + |
| +class Frame; |
| +class FrameView; |
| + |
| +class FrameProtector { |
|
Mads Ager (chromium)
2014/09/03 10:07:54
Let's add a comment to FrameProtector stating that
|
| + DISALLOW_ALLOCATION(); |
| +public: |
| + explicit FrameProtector(PassRefPtrWillBeRawPtr<Frame>); |
| + ~FrameProtector(); |
| + |
| + bool willDispose() const; |
| + |
| + void trace(Visitor*); |
|
Mads Ager (chromium)
2014/09/03 10:07:54
Trace is unimplemented? It is not used because Fra
zerny-chromium
2014/09/03 12:35:08
A stack allocated object may have parts that are a
sof
2014/09/03 14:28:28
It was an oversight not to add a trace() implement
|
| + |
| +private: |
| + RefPtrWillBeMember<Frame> m_frame; |
| +#if ENABLE(OILPAN) |
| + bool m_isActive; |
| +#endif |
| +}; |
| + |
| +class FrameViewProtector { |
| + STACK_ALLOCATED(); |
| +public: |
| + explicit FrameViewProtector(PassRefPtr<FrameView>); |
| + ~FrameViewProtector(); |
| + |
| + bool willDelete() const; |
| + |
| +private: |
| + RefPtr<FrameView> m_frameView; |
| +#if ENABLE(OILPAN) |
| + // With Oilpan, keep a protector for the FrameView' LocalFrame. |
| + // This is to trigger any disposing of that frame which should |
| + // happen when the FrameViewProtector goes out of scope. |
| + // |
| + // The RefPtr<LocalFrame> achieves this as it is non-Oilpan, |
| + // so no need to keep an additional protector. |
| + FrameProtector m_frameProtector; |
| +#endif |
| +}; |
| + |
| +} // namespace blink |
| + |
| +#endif // FrameProtector_h |