initial import
[vuplus_webkit] / Source / WebCore / platform / PlatformStrategies.h
1 /*
2  * Copyright (C) 2010 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  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef PlatformStrategies_h
27 #define PlatformStrategies_h
28
29 #if USE(PLATFORM_STRATEGIES)
30
31 namespace WebCore {
32
33 class CookiesStrategy;
34 class PluginStrategy;
35 class LocalizationStrategy;
36 class VisitedLinkStrategy;
37
38 class PlatformStrategies {
39 public:
40     CookiesStrategy* cookiesStrategy()
41     {
42         if (!m_cookiesStrategy)
43             m_cookiesStrategy = createCookiesStrategy();
44         return m_cookiesStrategy;
45     }
46
47     PluginStrategy* pluginStrategy()
48     {
49         if (!m_pluginStrategy)
50             m_pluginStrategy = createPluginStrategy();
51         return m_pluginStrategy;
52     }
53
54     LocalizationStrategy* localizationStrategy()
55     {
56         if (!m_localizationStrategy)
57             m_localizationStrategy = createLocalizationStrategy();
58         return m_localizationStrategy;
59     }
60
61     VisitedLinkStrategy* visitedLinkStrategy()
62     {
63         if (!m_visitedLinkStrategy)
64             m_visitedLinkStrategy = createVisitedLinkStrategy();
65         return m_visitedLinkStrategy;
66     }
67
68 protected:
69     PlatformStrategies()
70         : m_cookiesStrategy(0)
71         , m_pluginStrategy(0)
72         , m_localizationStrategy(0)
73         , m_visitedLinkStrategy(0)
74     {
75     }
76
77     virtual ~PlatformStrategies()
78     {
79     }
80
81 private:
82     virtual CookiesStrategy* createCookiesStrategy() = 0;
83     virtual PluginStrategy* createPluginStrategy() = 0;
84     virtual LocalizationStrategy* createLocalizationStrategy();
85     virtual VisitedLinkStrategy* createVisitedLinkStrategy() = 0;
86
87     CookiesStrategy* m_cookiesStrategy;
88     PluginStrategy* m_pluginStrategy;
89     LocalizationStrategy* m_localizationStrategy;
90     VisitedLinkStrategy* m_visitedLinkStrategy;
91 };
92
93 PlatformStrategies* platformStrategies();
94 void setPlatformStrategies(PlatformStrategies*);
95 bool hasPlatformStrategies();
96     
97 } // namespace WebCore
98
99 #endif // USE(PLATFORM_STRATEGIES)
100
101 #endif // PlatformStrategies_h