Title: [172645] trunk/Source/WebKit2
Revision
172645
Author
barraclo...@apple.com
Date
2014-08-15 13:32:14 -0700 (Fri, 15 Aug 2014)

Log Message

Fix plugin visibility check.
https://bugs.webkit.org/show_bug.cgi?id=135991

Reviewed by Andreas Kling.

We should only take a UserActivity if the plugin is in a visible window,
and also is itself visible.

* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::PluginControllerProxy):
    - initialize member state.
(WebKit::PluginControllerProxy::visibilityDidChange):
(WebKit::PluginControllerProxy::windowVisibilityChanged):
    - update member state & call updateVisiblityActivity.
(WebKit::PluginControllerProxy::updateVisiblityActivity):
    - enable the UserActivity only if both visibilities are true.
* PluginProcess/PluginControllerProxy.h:
    - added m_isVisible, m_isWindowVisible, updateVisibilityActivity.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (172644 => 172645)


--- trunk/Source/WebKit2/ChangeLog	2014-08-15 20:12:32 UTC (rev 172644)
+++ trunk/Source/WebKit2/ChangeLog	2014-08-15 20:32:14 UTC (rev 172645)
@@ -1,3 +1,24 @@
+2014-08-15  Gavin Barraclough  <barraclo...@apple.com>
+
+        Fix plugin visibility check.
+        https://bugs.webkit.org/show_bug.cgi?id=135991
+
+        Reviewed by Andreas Kling.
+
+        We should only take a UserActivity if the plugin is in a visible window,
+        and also is itself visible.
+
+        * PluginProcess/PluginControllerProxy.cpp:
+        (WebKit::PluginControllerProxy::PluginControllerProxy):
+            - initialize member state.
+        (WebKit::PluginControllerProxy::visibilityDidChange):
+        (WebKit::PluginControllerProxy::windowVisibilityChanged):
+            - update member state & call updateVisiblityActivity.
+        (WebKit::PluginControllerProxy::updateVisiblityActivity):
+            - enable the UserActivity only if both visibilities are true.
+        * PluginProcess/PluginControllerProxy.h:
+            - added m_isVisible, m_isWindowVisible, updateVisibilityActivity.
+
 2014-08-15  Enrica Casucci  <enr...@apple.com>
 
         [Services with UI] Selections are incorrect when selecting three lines.

Modified: trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp (172644 => 172645)


--- trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp	2014-08-15 20:12:32 UTC (rev 172644)
+++ trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.cpp	2014-08-15 20:32:14 UTC (rev 172645)
@@ -61,6 +61,8 @@
     , m_isPrivateBrowsingEnabled(creationParameters.isPrivateBrowsingEnabled)
     , m_isAcceleratedCompositingEnabled(creationParameters.isAcceleratedCompositingEnabled)
     , m_isInitializing(false)
+    , m_isVisibile(false)
+    , m_isWindowVisibile(false)
     , m_paintTimer(RunLoop::main(), this, &PluginControllerProxy::paint)
     , m_pluginDestructionProtectCount(0)
     , m_pluginDestroyTimer(RunLoop::main(), this, &PluginControllerProxy::destroy)
@@ -430,8 +432,12 @@
 
 void PluginControllerProxy::visibilityDidChange(bool isVisible)
 {
+    m_isVisibile = isVisible;
+    
     ASSERT(m_plugin);
     m_plugin->visibilityDidChange(isVisible);
+
+    updateVisiblityActivity();
 }
 
 void PluginControllerProxy::windowFocusChanged(bool hasFocus)
@@ -442,10 +448,17 @@
 
 void PluginControllerProxy::windowVisibilityChanged(bool isVisible)
 {
+    m_isWindowVisibile = isVisible;
+
     ASSERT(m_plugin);
     m_plugin->windowVisibilityChanged(isVisible);
 
-    if (isVisible)
+    updateVisiblityActivity();
+}
+
+void PluginControllerProxy::updateVisiblityActivity()
+{
+    if (m_isVisibile && m_isWindowVisibile)
         m_visiblityActivity.start();
     else
         m_visiblityActivity.stop();

Modified: trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.h (172644 => 172645)


--- trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.h	2014-08-15 20:12:32 UTC (rev 172644)
+++ trunk/Source/WebKit2/PluginProcess/PluginControllerProxy.h	2014-08-15 20:32:14 UTC (rev 172645)
@@ -151,6 +151,7 @@
 
     void windowFocusChanged(bool);
     void windowVisibilityChanged(bool);
+    void updateVisiblityActivity();
 
 #if PLATFORM(COCOA)
     void windowAndViewFramesChanged(const WebCore::IntRect& windowFrameInScreenCoordinates, const WebCore::IntRect& viewFrameInWindowCoordinates);
@@ -176,6 +177,8 @@
     bool m_isPrivateBrowsingEnabled;
     bool m_isAcceleratedCompositingEnabled;
     bool m_isInitializing;
+    bool m_isVisibile;
+    bool m_isWindowVisibile;
 
     RefPtr<Messages::WebProcessConnection::CreatePlugin::DelayedReply> m_initializationReply;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to