10019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch/* 20019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch * Copyright (C) 2008 Apple 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 COMPUTER, 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 COMPUTER, 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/platform/LifecycleObserver.h" 290019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 300019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "core/platform/LifecycleContext.h" 310019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 320019e4eead4d990e4304c54a9028aca9122fb256Ben Murdochnamespace WebCore { 330019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 340019e4eead4d990e4304c54a9028aca9122fb256Ben MurdochLifecycleObserver::LifecycleObserver(LifecycleContext* lifecycleContext, Type type) 350019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch : m_lifecycleContext(0) 36ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles) , m_observerType(type) 370019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{ 38ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles) observeContext(lifecycleContext); 390019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} 400019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 410019e4eead4d990e4304c54a9028aca9122fb256Ben MurdochLifecycleObserver::~LifecycleObserver() 420019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{ 43ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles) observeContext(0); 440019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} 450019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 46ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles)void LifecycleObserver::observeContext(LifecycleContext* context) 470019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{ 480019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch if (m_lifecycleContext) { 490019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch ASSERT(m_lifecycleContext->isContextThread()); 50ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles) m_lifecycleContext->wasUnobservedBy(this); 510019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch } 520019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 530019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch m_lifecycleContext = context; 540019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 550019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch if (m_lifecycleContext) { 560019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch ASSERT(m_lifecycleContext->isContextThread()); 57ede7d0ec43b4c8737d917f2c5ad872a7b36ca9a8Torne (Richard Coles) m_lifecycleContext->wasObservedBy(this); 580019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch } 590019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} 600019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 610019e4eead4d990e4304c54a9028aca9122fb256Ben Murdochvoid LifecycleObserver::contextDestroyed() 620019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{ 630019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch m_lifecycleContext = 0; 640019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} 650019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 660019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} // namespace WebCore 67