Changeset 170423 in webkit
- Timestamp:
- Jun 25, 2014 3:38:28 AM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r170409 r170423 1 2014-06-24 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Windowed plugins visibility doesn't work 4 https://bugs.webkit.org/show_bug.cgi?id=131487 5 6 Reviewed by Anders Carlsson. 7 8 Implement plugins visibility changes and add a new message to 9 notify the UI process when a windowed plugin is shown/hidden to 10 show/hide the plugin widget. 11 12 * PluginProcess/PluginControllerProxy.cpp: 13 (WebKit::PluginControllerProxy::visibilityDidChange): Add 14 implementation to notify the plugin about visibility change. 15 (WebKit::PluginControllerProxy::windowedPluginVisibilityDidChange): 16 Send WindowedPluginVisibilityDidChange to the plugin proxy. 17 * PluginProcess/PluginControllerProxy.h: 18 * PluginProcess/PluginControllerProxy.messages.in: Add VisibilityDidChange message. 19 * UIProcess/WebPageProxy.h: Add windowedPluginVisibilityDidChange 20 to handle WindowedPluginVisibilityDidChange message. 21 * UIProcess/WebPageProxy.messages.in: Add WindowedPluginVisibilityDidChange message. 22 * UIProcess/efl/WebPageProxyEfl.cpp: 23 (WebKit::WebPageProxy::windowedPluginVisibilityDidChange): 24 * UIProcess/gtk/WebPageProxyGtk.cpp: 25 (WebKit::WebPageProxy::createPluginContainer): Do not show the 26 plugins by default. 27 (WebKit::WebPageProxy::windowedPluginVisibilityDidChange): Show or hide the plugin widget. 28 * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: 29 (WebKit::NetscapePlugin::NetscapePlugin): Initialize m_isVisible. 30 (WebKit::NetscapePlugin::visibilityDidChange): Add visible parameter and save it in m_isVisible 31 member, calling platformVisibilityDidChange() only when it has actually changed. 32 * WebProcess/Plugins/Netscape/NetscapePlugin.h: 33 * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: 34 (WebKit::NetscapePlugin::platformVisibilityDidChange): Notify the controller about visibility change. 35 * WebProcess/Plugins/PDF/PDFPlugin.h: 36 * WebProcess/Plugins/Plugin.h: 37 * WebProcess/Plugins/PluginController.h: 38 * WebProcess/Plugins/PluginProxy.cpp: 39 (WebKit::PluginProxy::visibilityDidChange): Send VisibilityDidChange message to the plugin controller proxy. 40 (WebKit::PluginProxy::windowedPluginVisibilityDidChange): Notify the controller about visibility change. 41 * WebProcess/Plugins/PluginProxy.h: 42 * WebProcess/Plugins/PluginProxy.messages.in: Add WindowedPluginVisibilityDidChange message. 43 * WebProcess/Plugins/PluginView.cpp: 44 (WebKit::PluginView::didInitializePlugin): Also call viewVisibilityDidChange() when the plugin is initialized. 45 (WebKit::PluginView::setParentVisible): Override this Widget method to update the plugin visibility when parent 46 widget is shown/hidden. 47 (WebKit::PluginView::viewVisibilityDidChange): Pass visible parameter to visibilityDidChange(). 48 (WebKit::PluginView::windowedPluginVisibilityDidChange): Send WindowedPluginVisibilityDidChange message to the UI process. 49 * WebProcess/Plugins/PluginView.h: 50 1 51 2014-06-24 Benjamin Poulain <bpoulain@apple.com> 2 52 -
trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp
r169757 r170423 428 428 } 429 429 430 void PluginControllerProxy::visibilityDidChange(bool isVisible) 431 { 432 ASSERT(m_plugin); 433 m_plugin->visibilityDidChange(isVisible); 434 } 435 430 436 void PluginControllerProxy::didEvaluateJavaScript(uint64_t requestID, const String& result) 431 437 { … … 612 618 m_connection->connection()->send(Messages::PluginProxy::WindowedPluginGeometryDidChange(frameRect, clipRect, windowID), m_pluginInstanceID); 613 619 } 620 621 void PluginControllerProxy::windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) 622 { 623 m_connection->connection()->send(Messages::PluginProxy::WindowedPluginVisibilityDidChange(isVisible, windowID), m_pluginInstanceID); 624 } 614 625 #endif 615 626 -
trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.h
r170025 r170423 117 117 virtual uint64_t createPluginContainer() override; 118 118 virtual void windowedPluginGeometryDidChange(const WebCore::IntRect& frameRect, const WebCore::IntRect& clipRect, uint64_t windowID) override; 119 virtual void windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) override; 119 120 #endif 120 121 … … 123 124 void frameDidFail(uint64_t requestID, bool wasCancelled); 124 125 void geometryDidChange(const WebCore::IntSize& pluginSize, const WebCore::IntRect& clipRect, const WebCore::AffineTransform& pluginToRootViewTransform, float contentsScaleFactor, const ShareableBitmap::Handle& backingStoreHandle); 126 void visibilityDidChange(bool isVisible); 125 127 void didEvaluateJavaScript(uint64_t requestID, const String& result); 126 128 void streamDidReceiveResponse(uint64_t streamID, const String& responseURLString, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers); -
trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.messages.in
r164112 r170423 26 26 # Sent when the plug-in geometry changes. 27 27 GeometryDidChange(WebCore::IntSize pluginSize, WebCore::IntRect clipRect, WebCore::AffineTransform pluginToRootViewTransform, float scaleFactor, WebKit::ShareableBitmap::Handle backingStoreHandle) 28 29 # Sent when the plug-in visibility changes. 30 VisibilityDidChange(bool isVisible) 28 31 29 32 # Sent when a frame has finished loading. -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r170406 r170423 1233 1233 void createPluginContainer(uint64_t& windowID); 1234 1234 void windowedPluginGeometryDidChange(const WebCore::IntRect& frameRect, const WebCore::IntRect& clipRect, uint64_t windowID); 1235 void windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID); 1235 1236 #endif 1236 1237 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r170406 r170423 329 329 CreatePluginContainer() -> (uint64_t windowID) 330 330 WindowedPluginGeometryDidChange(WebCore::IntRect frameRect, WebCore::IntRect clipRect, uint64_t windowID) 331 WindowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) 331 332 #endif 332 333 -
trunk/Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp
r160075 r170423 98 98 } 99 99 100 void WebPageProxy::windowedPluginVisibilityDidChange(bool, uint64_t) 101 { 102 notImplemented(); 103 } 104 100 105 void WebPageProxy::handleInputMethodKeydown(bool& handled) 101 106 { -
trunk/Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp
r163433 r170423 97 97 g_signal_connect(socket, "plug-removed", G_CALLBACK(pluginContainerPlugRemoved), 0); 98 98 gtk_container_add(GTK_CONTAINER(viewWidget()), socket); 99 gtk_widget_show(socket);100 99 101 100 windowID = static_cast<uint64_t>(gtk_socket_get_id(GTK_SOCKET(socket))); … … 118 117 webkitWebViewBaseChildMoveResize(WEBKIT_WEB_VIEW_BASE(viewWidget()), plugin, frameRect); 119 118 } 119 120 void WebPageProxy::windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) 121 { 122 GtkWidget* plugin = pluginWindowMap().get(windowID); 123 if (!plugin) 124 return; 125 126 if (isVisible) 127 gtk_widget_show(plugin); 128 else 129 gtk_widget_hide(plugin); 130 } 120 131 #endif // PLUGIN_ARCHITECTURE(X11) 121 132 -
trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
r170269 r170423 72 72 , m_shouldUseManualLoader(false) 73 73 , m_hasCalledSetWindow(false) 74 , m_isVisible(false) 74 75 , m_nextTimerID(0) 75 76 #if PLATFORM(COCOA) … … 761 762 } 762 763 763 void NetscapePlugin::visibilityDidChange() 764 { 765 ASSERT(m_isStarted); 766 764 void NetscapePlugin::visibilityDidChange(bool isVisible) 765 { 766 ASSERT(m_isStarted); 767 768 if (m_isVisible == isVisible) 769 return; 770 771 m_isVisible = isVisible; 767 772 platformVisibilityDidChange(); 768 773 } -
trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
r170269 r170423 184 184 virtual bool wantsWheelEvents() override; 185 185 virtual void geometryDidChange(const WebCore::IntSize& pluginSize, const WebCore::IntRect& clipRect, const WebCore::AffineTransform& pluginToRootViewTransform); 186 virtual void visibilityDidChange( );186 virtual void visibilityDidChange(bool isVisible); 187 187 virtual void frameDidFinishLoading(uint64_t requestID); 188 188 virtual void frameDidFail(uint64_t requestID, bool wasCancelled); … … 301 301 bool m_shouldUseManualLoader; 302 302 bool m_hasCalledSetWindow; 303 bool m_isVisible; 303 304 304 305 RefPtr<NetscapePluginStream> m_manualStream; -
trunk/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp
r167795 r170423 298 298 void NetscapePlugin::platformVisibilityDidChange() 299 299 { 300 notImplemented(); 300 if (!m_isWindowed) 301 return; 302 303 uint64_t windowID = 0; 304 #if PLATFORM(GTK) 305 windowID = static_cast<uint64_t>(GDK_WINDOW_XID(gtk_plug_get_socket_window(GTK_PLUG(m_platformPluginWidget)))); 306 #endif 307 controller()->windowedPluginVisibilityDidChange(m_isVisible, windowID); 308 controller()->windowedPluginGeometryDidChange(m_frameRectInWindowCoordinates, m_clipRect, windowID); 301 309 } 302 310 -
trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h
r162883 r170423 119 119 virtual void geometryDidChange(const WebCore::IntSize& pluginSize, const WebCore::IntRect& clipRect, const WebCore::AffineTransform& pluginToRootViewTransform) override; 120 120 virtual void contentsScaleFactorChanged(float) override; 121 virtual void visibilityDidChange( ) override { }121 virtual void visibilityDidChange(bool) override { } 122 122 virtual void frameDidFinishLoading(uint64_t requestID) override; 123 123 virtual void frameDidFail(uint64_t requestID, bool wasCancelled) override; -
trunk/Source/WebKit2/WebProcess/Plugins/Plugin.h
r166443 r170423 143 143 144 144 // Tells the plug-in that it has been explicitly hidden or shown. (Note that this is not called when the plug-in becomes obscured from view on screen.) 145 virtual void visibilityDidChange( ) = 0;145 virtual void visibilityDidChange(bool isVisible) = 0; 146 146 147 147 // Tells the plug-in that a frame load request that the plug-in made by calling PluginController::loadURL has finished. -
trunk/Source/WebKit2/WebProcess/Plugins/PluginController.h
r164192 r170423 147 147 virtual uint64_t createPluginContainer() = 0; 148 148 virtual void windowedPluginGeometryDidChange(const WebCore::IntRect& frameRect, const WebCore::IntRect& clipRect, uint64_t windowID) = 0; 149 virtual void windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) = 0; 149 150 #endif 150 151 -
trunk/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp
r167854 r170423 301 301 } 302 302 303 void PluginProxy::visibilityDidChange( )303 void PluginProxy::visibilityDidChange(bool isVisible) 304 304 { 305 305 ASSERT(m_isStarted); 306 notImplemented();306 m_connection->connection()->send(Messages::PluginControllerProxy::VisibilityDidChange(isVisible), m_pluginInstanceID); 307 307 } 308 308 … … 680 680 { 681 681 controller()->windowedPluginGeometryDidChange(frameRect, clipRect, windowID); 682 } 683 684 void PluginProxy::windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) 685 { 686 controller()->windowedPluginVisibilityDidChange(isVisible, windowID); 682 687 } 683 688 #endif -
trunk/Source/WebKit2/WebProcess/Plugins/PluginProxy.h
r167854 r170423 86 86 virtual bool wantsWheelEvents() override; 87 87 virtual void geometryDidChange(const WebCore::IntSize& pluginSize, const WebCore::IntRect& clipRect, const WebCore::AffineTransform& pluginToRootViewTransform); 88 virtual void visibilityDidChange( );88 virtual void visibilityDidChange(bool isVisible); 89 89 virtual void frameDidFinishLoading(uint64_t requestID); 90 90 virtual void frameDidFail(uint64_t requestID, bool wasCancelled); … … 173 173 void createPluginContainer(uint64_t& windowID); 174 174 void windowedPluginGeometryDidChange(const WebCore::IntRect& frameRect, const WebCore::IntRect& clipRect, uint64_t windowID); 175 void windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID); 175 176 #endif 176 177 -
trunk/Source/WebKit2/WebProcess/Plugins/PluginProxy.messages.in
r164192 r170423 74 74 # Update geometry of windowed plugin widget 75 75 WindowedPluginGeometryDidChange(WebCore::IntRect frameRect, WebCore::IntRect clipRect, uint64_t windowID) 76 77 # Update visibility of windowed plugin widget 78 WindowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) 76 79 #endif 77 80 -
trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp
r170205 r170423 616 616 #endif 617 617 618 viewVisibilityDidChange(); 618 619 viewGeometryDidChange(); 619 620 … … 1022 1023 } 1023 1024 1025 void PluginView::setParentVisible(bool isVisible) 1026 { 1027 if (isParentVisible() == isVisible) 1028 return; 1029 1030 Widget::setParentVisible(isVisible); 1031 viewVisibilityDidChange(); 1032 } 1033 1024 1034 bool PluginView::transformsAffectFrameRect() 1025 1035 { … … 1064 1074 return; 1065 1075 1066 m_plugin->visibilityDidChange( );1076 m_plugin->visibilityDidChange(isVisible()); 1067 1077 } 1068 1078 … … 1625 1635 { 1626 1636 m_webPage->send(Messages::WebPageProxy::WindowedPluginGeometryDidChange(frameRect, clipRect, windowID)); 1637 } 1638 1639 void PluginView::windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) 1640 { 1641 m_webPage->send(Messages::WebPageProxy::WindowedPluginVisibilityDidChange(isVisible, windowID)); 1627 1642 } 1628 1643 #endif -
trunk/Source/WebKit2/WebProcess/Plugins/PluginView.h
r170025 r170423 174 174 virtual void show() override; 175 175 virtual void hide() override; 176 virtual void setParentVisible(bool) override; 176 177 virtual bool transformsAffectFrameRect() override; 177 178 virtual void clipRectChanged() override; … … 216 217 virtual uint64_t createPluginContainer() override; 217 218 virtual void windowedPluginGeometryDidChange(const WebCore::IntRect& frameRect, const WebCore::IntRect& clipRect, uint64_t windowID) override; 219 virtual void windowedPluginVisibilityDidChange(bool isVisible, uint64_t windowID) override; 218 220 #endif 219 221
Note: See TracChangeset
for help on using the changeset viewer.