[Qt][WK2] Set up plugin process on Unix
[WebKit-https.git] / Source / WebKit2 / Shared / Plugins / Netscape / NetscapePluginModule.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 NetscapePluginModule_h
27 #define NetscapePluginModule_h
28
29 #include "Module.h"
30 #include "PluginModuleInfo.h"
31 #include "PluginQuirks.h"
32 #include <WebCore/npruntime_internal.h>
33 #include <wtf/RefCounted.h>
34 #include <wtf/text/WTFString.h>
35
36 namespace WebKit {
37
38 class RawPluginMetaData;
39
40 class NetscapePluginModule : public RefCounted<NetscapePluginModule> {
41 public:
42     static PassRefPtr<NetscapePluginModule> getOrCreate(const String& pluginPath);
43     ~NetscapePluginModule();
44
45     const NPPluginFuncs& pluginFuncs() const { return m_pluginFuncs; }
46  
47     void incrementLoadCount();
48     void decrementLoadCount();
49
50     static bool getPluginInfo(const String& pluginPath, PluginModuleInfo&);
51
52     const PluginQuirks& pluginQuirks() const { return m_pluginQuirks; }
53
54     // Return a list of domains for which the plug-in has data stored.
55     Vector<String> sitesWithData();
56
57     // Request that the plug-in clear the site data.
58     bool clearSiteData(const String& site, uint64_t flags, uint64_t maxAge);
59
60     Module* module() const { return m_module.get(); }
61
62 #if PLUGIN_ARCHITECTURE(MAC)
63     static bool createPluginMIMETypesPreferences(const String& pluginPath);
64 #endif
65
66 #if PLUGIN_ARCHITECTURE(X11)
67     static bool scanPlugin(const String& pluginPath);
68 #endif
69
70 private:
71     explicit NetscapePluginModule(const String& pluginPath);
72
73     void determineQuirks();
74
75 #if PLUGIN_ARCHITECTURE(X11)
76     bool getPluginInfoForLoadedPlugin(RawPluginMetaData&);
77 #endif
78
79     bool tryGetSitesWithData(Vector<String>&);
80     bool tryClearSiteData(const String& site, uint64_t flags, uint64_t maxAge);
81
82     bool tryLoad();
83     bool load();
84     void unload();
85
86     void shutdown();
87
88     String m_pluginPath;
89     bool m_isInitialized;
90     unsigned m_loadCount;
91
92     PluginQuirks m_pluginQuirks;
93
94     NPP_ShutdownProcPtr m_shutdownProcPtr;
95     NPPluginFuncs m_pluginFuncs;
96
97     OwnPtr<Module> m_module;
98 };
99     
100 } // namespace WebKit
101
102 #endif // NetscapePluginModule_h