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