10019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch/*
20019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * Copyright (C) 2013 Google Inc. All Rights Reserved.
30019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch *
40019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * Redistribution and use in source and binary forms, with or without
50019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * modification, are permitted provided that the following conditions
60019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * are met:
70019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * 1. Redistributions of source code must retain the above copyright
80019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch *    notice, this list of conditions and the following disclaimer.
90019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
100019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
110019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch *    documentation and/or other materials provided with the distribution.
120019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch *
130019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
140019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
150019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
160019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
170019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
180019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
190019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
200019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
210019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
220019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
230019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
240019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch */
250019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
260019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
270019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "config.h"
280019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "core/page/PageLifecycleObserver.h"
290019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
300019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "core/page/Page.h"
310019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
330019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
34f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)template<> void observerContext(Page* context, LifecycleObserver<Page>* observer)
35f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles){
36f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    context->wasObservedBy(observer);
37f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)}
38f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)
39f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)template<> void unobserverContext(Page* context, LifecycleObserver<Page>* observer)
40f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles){
41f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    context->wasUnobservedBy(observer);
42f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)}
43f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)
440019e4eead4d990e4304c54a9028aca9122fb256Ben MurdochPageLifecycleObserver::PageLifecycleObserver(Page* page)
4551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    : LifecycleObserver<Page>(page, PageLifecycleObserverType)
460019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{
470019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch}
480019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
490019e4eead4d990e4304c54a9028aca9122fb256Ben MurdochPageLifecycleObserver::~PageLifecycleObserver()
500019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{
510019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch}
520019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
530019e4eead4d990e4304c54a9028aca9122fb256Ben MurdochPage* PageLifecycleObserver::page() const
540019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{
550019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch    return static_cast<Page*>(lifecycleContext());
560019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch}
570019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
58c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
59