1dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. 3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Redistribution and use in source and binary forms, with or without 5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modification, are permitted provided that the following conditions 6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * are met: 7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 1. Redistributions of source code must retain the above copyright 8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * notice, this list of conditions and the following disclaimer. 9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * notice, this list of conditions and the following disclaimer in the 11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * documentation and/or other materials provided with the distribution. 12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * THE POSSIBILITY OF SUCH DAMAGE. 24dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */ 25dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 26dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "config.h" 27dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebPlatformStrategies.h" 28dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 29dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <WebCore/Page.h> 30dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <WebCore/PageGroup.h> 31dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <WebCore/PluginDatabase.h> 32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 33dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochusing namespace WebCore; 34dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 35dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid WebPlatformStrategies::initialize() 36dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 37dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch DEFINE_STATIC_LOCAL(WebPlatformStrategies, platformStrategies, ()); 38dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 39dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 40dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochWebPlatformStrategies::WebPlatformStrategies() 41dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 42dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch setPlatformStrategies(this); 43dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 44dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 4581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochCookiesStrategy* WebPlatformStrategies::createCookiesStrategy() 4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 4781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return this; 4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 49dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 50dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochPluginStrategy* WebPlatformStrategies::createPluginStrategy() 51dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 52dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return this; 53dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 54dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 55dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochVisitedLinkStrategy* WebPlatformStrategies::createVisitedLinkStrategy() 56dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 57dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return this; 58dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 59dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 6081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPlatformStrategies::notifyCookiesChanged() 6181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 6281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 64dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid WebPlatformStrategies::refreshPlugins() 65dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 66dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch PluginDatabase::installedPlugins()->refresh(); 67dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 68dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 69bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenvoid WebPlatformStrategies::getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>& outPlugins) 70dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 71dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const Vector<PluginPackage*>& plugins = PluginDatabase::installedPlugins()->plugins(); 72dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 73dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch outPlugins.resize(plugins.size()); 74dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 75dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch for (size_t i = 0; i < plugins.size(); ++i) { 76dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch PluginPackage* package = plugins[i]; 77dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 78dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch PluginInfo info; 79dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch info.name = package->name(); 80dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch info.file = package->fileName(); 81dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch info.desc = package->description(); 82dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 83dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch const MIMEToDescriptionsMap& mimeToDescriptions = package->mimeToDescriptions(); 84dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 85dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch info.mimes.reserveCapacity(mimeToDescriptions.size()); 86dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 87dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end(); 88dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) { 89dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch MimeClassInfo mime; 90dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 91dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch mime.type = it->first; 92dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch mime.desc = it->second; 93dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch mime.extensions = package->mimeToExtensions().get(mime.type); 94dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 95dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch info.mimes.append(mime); 96dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch } 97dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 98dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch outPlugins[i] = info; 99dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch } 100dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 101dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 102dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochbool WebPlatformStrategies::isLinkVisited(Page* page, LinkHash hash) 103dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 104dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return page->group().isLinkVisited(hash); 105dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 106dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 107dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid WebPlatformStrategies::addVisitedLink(Page* page, LinkHash hash) 108dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 109dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch page->group().addVisitedLinkHash(hash); 110dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 111