1 /* 2 * Copyright (C) 2008 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. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #if USE(PLUGIN_HOST_PROCESS) 27 28 #ifndef NetscapePluginHostProxy_h 29 #define NetscapePluginHostProxy_h 30 31 #include <dispatch/dispatch.h> 32 #include <wtf/HashMap.h> 33 #include <wtf/RetainPtr.h> 34 #include <wtf/PassRefPtr.h> 35 36 @class WebPlaceholderModalWindow; 37 38 namespace WebKit { 39 40 class NetscapePluginInstanceProxy; 41 42 class NetscapePluginHostProxy { 43 public: 44 NetscapePluginHostProxy(mach_port_t clientPort, mach_port_t pluginHostPort, const ProcessSerialNumber& pluginHostPSN, bool shouldCacheMissingPropertiesAndMethods); 45 port()46 mach_port_t port() const { return m_pluginHostPort; } clientPort()47 mach_port_t clientPort() const { return m_clientPort; } 48 49 void addPluginInstance(NetscapePluginInstanceProxy*); 50 void removePluginInstance(NetscapePluginInstanceProxy*); 51 52 NetscapePluginInstanceProxy* pluginInstance(uint32_t pluginID); 53 isMenuBarVisible()54 bool isMenuBarVisible() const { return m_menuBarIsVisible; } 55 void setMenuBarVisible(bool); 56 57 void setModal(bool); 58 59 void applicationDidBecomeActive(); 60 61 bool processRequests(); isProcessingRequests()62 bool isProcessingRequests() const { return m_processingRequests; } 63 shouldCacheMissingPropertiesAndMethods()64 bool shouldCacheMissingPropertiesAndMethods() const { return m_shouldCacheMissingPropertiesAndMethods; } 65 66 private: 67 ~NetscapePluginHostProxy(); 68 void pluginHostDied(); 69 70 void beginModal(); 71 void endModal(); 72 73 static void deadNameNotificationCallback(CFMachPortRef port, void *msg, CFIndex size, void *info); 74 75 typedef HashMap<uint32_t, RefPtr<NetscapePluginInstanceProxy> > PluginInstanceMap; 76 PluginInstanceMap m_instances; 77 78 mach_port_t m_clientPort; 79 mach_port_t m_portSet; 80 81 #ifdef USE_LIBDISPATCH 82 dispatch_source_t m_clientPortSource; 83 #else 84 RetainPtr<CFRunLoopSourceRef> m_clientPortSource; 85 #endif 86 mach_port_t m_pluginHostPort; 87 RetainPtr<CFMachPortRef> m_deadNameNotificationPort; 88 89 RetainPtr<id> m_activationObserver; 90 RetainPtr<WebPlaceholderModalWindow *> m_placeholderWindow; 91 unsigned m_isModal; 92 bool m_menuBarIsVisible; 93 const ProcessSerialNumber m_pluginHostPSN; 94 95 unsigned m_processingRequests; 96 97 bool m_shouldCacheMissingPropertiesAndMethods; 98 }; 99 100 } // namespace WebKit 101 102 #endif // NetscapePluginHostProxy_h 103 #endif // USE(PLUGIN_HOST_PROCESS) 104