Title: [210761] trunk/Source/WebKit2
Revision
210761
Author
beid...@apple.com
Date
2017-01-13 20:04:59 -0800 (Fri, 13 Jan 2017)

Log Message

Crash when visiting a webpage that uses Gamepads in a new WebProcess after a previous page has used gamepads..
https://bugs.webkit.org/show_bug.cgi?id=167033

Reviewed by Alex Christensen.

* UIProcess/Gamepad/UIGamepadProvider.cpp:
(WebKit::UIGamepadProvider::processPoolStartedUsingGamepads): Don't schedule a state update here.
(WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads): Ditto.
* UIProcess/Gamepad/UIGamepadProvider.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::startedUsingGamepads): Populate the WebProcess with initial gamepads.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (210760 => 210761)


--- trunk/Source/WebKit2/ChangeLog	2017-01-14 03:42:32 UTC (rev 210760)
+++ trunk/Source/WebKit2/ChangeLog	2017-01-14 04:04:59 UTC (rev 210761)
@@ -1,3 +1,18 @@
+2017-01-13  Brady Eidson  <beid...@apple.com>
+
+        Crash when visiting a webpage that uses Gamepads in a new WebProcess after a previous page has used gamepads..
+        https://bugs.webkit.org/show_bug.cgi?id=167033
+
+        Reviewed by Alex Christensen.
+
+        * UIProcess/Gamepad/UIGamepadProvider.cpp:
+        (WebKit::UIGamepadProvider::processPoolStartedUsingGamepads): Don't schedule a state update here.
+        (WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads): Ditto.
+        * UIProcess/Gamepad/UIGamepadProvider.h:
+        
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::startedUsingGamepads): Populate the WebProcess with initial gamepads.
+
 2017-01-11  Darin Adler  <da...@apple.com>
 
         Remove PassRefPtr from more of "platform"

Modified: trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp (210760 => 210761)


--- trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp	2017-01-14 03:42:32 UTC (rev 210760)
+++ trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp	2017-01-14 04:04:59 UTC (rev 210761)
@@ -151,8 +151,6 @@
 
     if (!m_isMonitoringGamepads && platformWebPageProxyForGamepadInput())
         startMonitoringGamepads();
-
-    scheduleGamepadStateSync();
 }
 
 void UIGamepadProvider::processPoolStoppedUsingGamepads(WebProcessPool& pool)
@@ -162,8 +160,6 @@
 
     if (m_isMonitoringGamepads && !platformWebPageProxyForGamepadInput())
         platformStopMonitoringInput();
-
-    scheduleGamepadStateSync();
 }
 
 void UIGamepadProvider::viewBecameActive(WebPageProxy& page)

Modified: trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h (210760 => 210761)


--- trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h	2017-01-14 03:42:32 UTC (rev 210760)
+++ trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h	2017-01-14 04:04:59 UTC (rev 210761)
@@ -56,6 +56,8 @@
     static void setUsesGameControllerFramework();
 #endif
 
+    Vector<GamepadData> snapshotGamepads();
+
 private:
     friend NeverDestroyed<UIGamepadProvider>;
     UIGamepadProvider();
@@ -77,8 +79,6 @@
     void scheduleGamepadStateSync();
     void gamepadSyncTimerFired();
 
-    Vector<GamepadData> snapshotGamepads();
-
     HashSet<WebProcessPool*> m_processPoolsUsingGamepads;
 
     Vector<std::unique_ptr<UIGamepad>> m_gamepads;

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (210760 => 210761)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2017-01-14 03:42:32 UTC (rev 210760)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2017-01-14 04:04:59 UTC (rev 210761)
@@ -1273,6 +1273,8 @@
 
     if (!wereAnyProcessesUsingGamepads)
         UIGamepadProvider::singleton().processPoolStartedUsingGamepads(*this);
+
+    proxy->send(Messages::WebProcess::SetInitialGamepads(UIGamepadProvider::singleton().snapshotGamepads()), 0);
 }
 
 void WebProcessPool::stoppedUsingGamepads(IPC::Connection& connection)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to