| Index: Source/core/page/PageLifecycleNotifier.h
|
| diff --git a/Source/core/platform/PurgeableBuffer.h b/Source/core/page/PageLifecycleNotifier.h
|
| similarity index 52%
|
| copy from Source/core/platform/PurgeableBuffer.h
|
| copy to Source/core/page/PageLifecycleNotifier.h
|
| index 3ad0992e229b2623f6abee13794187735b90425e..8ad03ee6bc9b8d62755d591eaf76426c9d749099 100644
|
| --- a/Source/core/platform/PurgeableBuffer.h
|
| +++ b/Source/core/page/PageLifecycleNotifier.h
|
| @@ -1,5 +1,5 @@
|
| +
|
| /*
|
| - * Copyright (C) 2008, 2010 Apple Inc. All Rights Reserved.
|
| * Copyright (C) 2013 Google Inc. All Rights Reserved.
|
| *
|
| * Redistribution and use in source and binary forms, with or without
|
| @@ -21,51 +21,49 @@
|
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
|
|
| -#ifndef PurgeableBuffer_h
|
| -#define PurgeableBuffer_h
|
| +#ifndef PageLifecycleNotifier_h
|
| +#define PageLifecycleNotifier_h
|
|
|
| -#include "wtf/OwnPtr.h"
|
| +#include "core/dom/SimpleLifecycleNotifier.h"
|
| +#include "core/page/PageLifecycleObserver.h"
|
| #include "wtf/PassOwnPtr.h"
|
| -
|
| -namespace WebKit {
|
| -class WebDiscardableMemory;
|
| -}
|
| +#include "wtf/TemporaryChange.h"
|
|
|
| namespace WebCore {
|
|
|
| -class PurgeableBuffer {
|
| - WTF_MAKE_NONCOPYABLE(PurgeableBuffer);
|
| -public:
|
| - static PassOwnPtr<PurgeableBuffer> create(const char* data, size_t);
|
| - ~PurgeableBuffer();
|
| +class Page;
|
|
|
| - // Call lock and check the return value before accessing the data.
|
| - const char* data() const;
|
| - size_t size() const { return m_size; }
|
| +class PageLifecycleNotifier : public SimpleLifecycleNotifier {
|
| +public:
|
| + static PassOwnPtr<PageLifecycleNotifier> create(SimpleLifecycleContext*);
|
|
|
| - bool isPurgeable() const { return m_state != Locked; }
|
| - bool wasPurged() const;
|
| + void notifyPageVisibilityChanged();
|
|
|
| - bool lock();
|
| - void unlock();
|
| + virtual void addObserver(SimpleLifecycleObserver*, SimpleLifecycleObserver::Type) OVERRIDE;
|
| + virtual void removeObserver(SimpleLifecycleObserver*, SimpleLifecycleObserver::Type) OVERRIDE;
|
|
|
| private:
|
| - enum State {
|
| - Locked,
|
| - Unlocked,
|
| - Purged
|
| - };
|
| + explicit PageLifecycleNotifier(SimpleLifecycleContext*);
|
|
|
| - PurgeableBuffer(PassOwnPtr<WebKit::WebDiscardableMemory>, const char* data, size_t);
|
| -
|
| - OwnPtr<WebKit::WebDiscardableMemory> m_memory;
|
| - size_t m_size;
|
| - State m_state;
|
| + typedef HashSet<PageLifecycleObserver*> PageObserverSet;
|
| + PageObserverSet m_pageObservers;
|
| };
|
|
|
| +inline PassOwnPtr<PageLifecycleNotifier> PageLifecycleNotifier::create(SimpleLifecycleContext* context)
|
| +{
|
| + return adoptPtr(new PageLifecycleNotifier(context));
|
| +}
|
| +
|
| +inline void PageLifecycleNotifier::notifyPageVisibilityChanged()
|
| +{
|
| + TemporaryChange<IterationType> scope(this->m_iterating, IteratingOverPageObservers);
|
| + for (PageObserverSet::iterator it = m_pageObservers.begin(); it != m_pageObservers.end(); ++it)
|
| + (*it)->pageVisibilityChanged();
|
| }
|
|
|
| -#endif
|
| +} // namespace WebCore
|
| +
|
| +#endif // PageLifecycleNotifier_h
|
|
|