1 /* 2 * Copyright (C) 2008 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14 * its contributors may be used to endorse or promote products derived 15 * from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #include "config.h" 30 #include "DocumentLoader.h" 31 #include "MainResourceLoader.h" 32 #include "ResourceHandle.h" 33 #include "ResourceLoader.h" 34 #include <wtf/UnusedParam.h> 35 36 namespace WebCore { 37 38 #ifndef BUILDING_ON_TIGER 39 static void scheduleAll(const ResourceLoaderSet& loaders, SchedulePair* pair) 40 { 41 const ResourceLoaderSet copy = loaders; 42 ResourceLoaderSet::const_iterator end = copy.end(); 43 for (ResourceLoaderSet::const_iterator it = copy.begin(); it != end; ++it) 44 if (ResourceHandle* handle = (*it)->handle()) 45 handle->schedule(pair); 46 } 47 48 static void unscheduleAll(const ResourceLoaderSet& loaders, SchedulePair* pair) 49 { 50 const ResourceLoaderSet copy = loaders; 51 ResourceLoaderSet::const_iterator end = copy.end(); 52 for (ResourceLoaderSet::const_iterator it = copy.begin(); it != end; ++it) 53 if (ResourceHandle* handle = (*it)->handle()) 54 handle->unschedule(pair); 55 } 56 #endif 57 58 void DocumentLoader::schedule(SchedulePair* pair) 59 { 60 #ifndef BUILDING_ON_TIGER 61 if (m_mainResourceLoader && m_mainResourceLoader->handle()) 62 m_mainResourceLoader->handle()->schedule(pair); 63 scheduleAll(m_subresourceLoaders, pair); 64 scheduleAll(m_plugInStreamLoaders, pair); 65 scheduleAll(m_multipartSubresourceLoaders, pair); 66 #else 67 UNUSED_PARAM(pair); 68 #endif 69 } 70 71 void DocumentLoader::unschedule(SchedulePair* pair) 72 { 73 #ifndef BUILDING_ON_TIGER 74 if (m_mainResourceLoader && m_mainResourceLoader->handle()) 75 m_mainResourceLoader->handle()->unschedule(pair); 76 unscheduleAll(m_subresourceLoaders, pair); 77 unscheduleAll(m_plugInStreamLoaders, pair); 78 unscheduleAll(m_multipartSubresourceLoaders, pair); 79 #else 80 UNUSED_PARAM(pair); 81 #endif 82 } 83 84 } // namespace 85