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/PageLifecycleNotifier.h"
290019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
300019e4eead4d990e4304c54a9028aca9122fb256Ben Murdochnamespace WebCore {
310019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
320019e4eead4d990e4304c54a9028aca9122fb256Ben MurdochPageLifecycleNotifier::PageLifecycleNotifier(LifecycleContext* context)
330019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch    : LifecycleNotifier(context)
340019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{
350019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch}
360019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
37ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)void PageLifecycleNotifier::addObserver(LifecycleObserver* observer)
380019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{
39ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)    if (observer->observerType() == LifecycleObserver::PageLifecycleObserverType) {
400019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch        RELEASE_ASSERT(m_iterating != IteratingOverPageObservers);
410019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch        m_pageObservers.add(static_cast<PageLifecycleObserver*>(observer));
420019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch    }
430019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
44ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)    LifecycleNotifier::addObserver(observer);
450019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch}
460019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
47ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)void PageLifecycleNotifier::removeObserver(LifecycleObserver* observer)
480019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{
49ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)    if (observer->observerType() == LifecycleObserver::PageLifecycleObserverType) {
500019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch        RELEASE_ASSERT(m_iterating != IteratingOverPageObservers);
510019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch        m_pageObservers.remove(static_cast<PageLifecycleObserver*>(observer));
520019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch    }
530019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
54ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)    LifecycleNotifier::removeObserver(observer);
550019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch}
560019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch
570019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} // namespace WebCore
58