OSDN Git Service

Merge WebKit at r78450: Initial merge by git.
[android-x86/external-webkit.git] / Source / WebKit2 / PluginProcess / PluginProcess.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 PluginProcess_h
27 #define PluginProcess_h
28
29 #if ENABLE(PLUGIN_PROCESS)
30
31 #include "ChildProcess.h"
32 #include "RunLoop.h"
33 #include <wtf/Forward.h>
34 #include <wtf/text/WTFString.h>
35
36 namespace WebKit {
37
38 class NetscapePluginModule;
39 class WebProcessConnection;
40 struct PluginProcessCreationParameters;
41         
42 class PluginProcess : ChildProcess {
43     WTF_MAKE_NONCOPYABLE(PluginProcess);
44 public:
45     static PluginProcess& shared();
46
47     void initialize(CoreIPC::Connection::Identifier, RunLoop*);
48     void removeWebProcessConnection(WebProcessConnection* webProcessConnection);
49
50     NetscapePluginModule* netscapePluginModule();
51
52 #if PLATFORM(MAC)
53     void initializeShim();
54
55 #if USE(ACCELERATED_COMPOSITING)
56     mach_port_t compositingRenderServerPort() const { return m_compositingRenderServerPort; }
57 #endif
58 #endif
59
60 private:
61     PluginProcess();
62     ~PluginProcess();
63
64     // CoreIPC::Connection::Client
65     virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
66     virtual void didClose(CoreIPC::Connection*);
67     virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::MessageID);
68     virtual void didFailToSendSyncMessage(CoreIPC::Connection*);
69
70     // Message handlers.
71     void didReceivePluginProcessMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
72     void initializePluginProcess(const PluginProcessCreationParameters&);
73     void createWebProcessConnection();
74     
75     void shutdownTimerFired();
76
77     void platformInitialize(const PluginProcessCreationParameters&);
78
79     // The connection to the UI process.
80     RefPtr<CoreIPC::Connection> m_connection;
81
82     // Our web process connections.
83     Vector<RefPtr<WebProcessConnection> > m_webProcessConnections;
84
85     // The plug-in path.
86     String m_pluginPath;
87
88     // The plug-in module.
89     RefPtr<NetscapePluginModule> m_pluginModule;
90     
91     // A timer used for the shutdown timeout.
92     RunLoop::Timer<PluginProcess> m_shutdownTimer;
93
94 #if USE(ACCELERATED_COMPOSITING) && PLATFORM(MAC)
95     // The Mach port used for accelerated compositing.
96     mach_port_t m_compositingRenderServerPort;
97 #endif
98     
99 };
100
101 } // namespace WebKit
102
103 #endif // ENABLE(PLUGIN_PROCESS)
104
105 #endif // PluginProcess_h