106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen/*
206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Copyright (C) 2010 Apple Inc. All rights reserved.
306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *
406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * Redistribution and use in source and binary forms, with or without
506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * modification, are permitted provided that the following conditions
606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * are met:
706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 1. Redistributions of source code must retain the above copyright
806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *    notice, this list of conditions and the following disclaimer.
906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * 2. Redistributions in binary form must reproduce the above copyright
1006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *    notice, this list of conditions and the following disclaimer in the
1106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *    documentation and/or other materials provided with the distribution.
1206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen *
1306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THE POSSIBILITY OF SUCH DAMAGE.
2406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen */
2506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
2606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#import "WebPlatformStrategies.h"
2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#import "WebPluginDatabase.h"
2906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#import "WebPluginPackage.h"
3006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#import <WebCore/BlockExceptions.h>
31db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#import <WebCore/Page.h>
32db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#import <WebCore/PageGroup.h>
3306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
3406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenusing namespace WebCore;
3506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
3606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebPlatformStrategies::initialize()
3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
3806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    DEFINE_STATIC_LOCAL(WebPlatformStrategies, platformStrategies, ());
3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    setPlatformStrategies(&platformStrategies);
4006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenWebPlatformStrategies::WebPlatformStrategies()
4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
4406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
4506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochCookiesStrategy* WebPlatformStrategies::createCookiesStrategy()
4781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{
4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    return this;
4981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch}
5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenPluginStrategy* WebPlatformStrategies::createPluginStrategy()
5206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
5306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return this;
5406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
5506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
56db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockVisitedLinkStrategy* WebPlatformStrategies::createVisitedLinkStrategy()
57db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
58db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return this;
59db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
60db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
6181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebPlatformStrategies::notifyCookiesChanged()
6281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{
6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch}
6481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
6506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebPlatformStrategies::refreshPlugins()
6606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
6706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    [[WebPluginDatabase sharedDatabase] refresh];
6806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
6906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
70bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenvoid WebPlatformStrategies::getPluginInfo(const WebCore::Page*, Vector<WebCore::PluginInfo>& plugins)
7106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
7206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    BEGIN_BLOCK_OBJC_EXCEPTIONS;
7306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
7406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    NSArray* pluginsArray = [[WebPluginDatabase sharedDatabase] plugins];
7506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    for (unsigned int i = 0; i < [pluginsArray count]; ++i) {
7606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        WebPluginPackage *plugin = [pluginsArray objectAtIndex:i];
7706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
7806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen        plugins.append([plugin pluginInfo]);
7906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    }
8006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
8106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    END_BLOCK_OBJC_EXCEPTIONS;
8206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
8306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
84db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockbool WebPlatformStrategies::isLinkVisited(Page* page, LinkHash hash)
85db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
86db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return page->group().isLinkVisited(hash);
87db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
88db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
89db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid WebPlatformStrategies::addVisitedLink(Page* page, LinkHash hash)
90db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
91db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return page->group().addVisitedLinkHash(hash);
92db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
93