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