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