<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[170500] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/170500">170500</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2014-06-26 15:37:01 -0700 (Thu, 26 Jun 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove use of PlatformStrategies for Gamepad API.
https://bugs.webkit.org/show_bug.cgi?id=134348
Source/WebCore:
Reviewed by Dean Jackson.
No new tests (Not yet a tested config)
Introduce a virtual GamepadProvider with a process-global shared provider.
The base implementation of the GamepadProvider does nothing.
* platform/GamepadProvider.cpp: Renamed from Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h.
(WebCore::GamepadProvider::shared):
(WebCore::GamepadProvider::setSharedProvider):
(WebCore::GamepadProvider::startMonitoringGamepads):
(WebCore::GamepadProvider::stopMonitoringGamepads):
(WebCore::GamepadProvider::platformGamepads):
* platform/GamepadProvider.h: Renamed from Source/WebCore/platform/GamepadStrategy.h.
(WebCore::GamepadProvider::~GamepadProvider):
* platform/GamepadProviderClient.h: Renamed from Source/WebCore/platform/GamepadStrategyClient.h.
(WebCore::GamepadProviderClient::~GamepadProviderClient):
GamepadManager is now a GamepadProviderClient:
* Modules/gamepad/GamepadManager.cpp:
(WebCore::GamepadManager::GamepadManager):
(WebCore::GamepadManager::registerNavigator):
(WebCore::GamepadManager::unregisterNavigator):
* Modules/gamepad/GamepadManager.h:
Remove the GamepadStrategy altogether:
* platform/PlatformStrategies.h:
(WebCore::PlatformStrategies::PlatformStrategies):
(WebCore::PlatformStrategies::gamepadStrategy): Deleted.
Call to the shared GamepadProvider instead of the strategy:
* Modules/gamepad/NavigatorGamepad.cpp:
(WebCore::NavigatorGamepad::gamepads):
(WebCore::NavigatorGamepad::gamepadsBecameVisible):
(WebCore::NavigatorGamepad::gamepadConnected):
HIDGamepadListener is now a subclass of GamepadProvider that implements the HID based management.
LegacyWebKit on Mac will install the shared HIDGamepadProvider instead of the default GamepadProvider:
* platform/mac/HIDGamepadProvider.cpp: Renamed from Source/WebCore/platform/mac/HIDGamepadListener.cpp.
(WebCore::deviceMatchingDictionary):
(WebCore::deviceAddedCallback):
(WebCore::deviceRemovedCallback):
(WebCore::deviceValuesChangedCallback):
(WebCore::HIDGamepadProvider::shared):
(WebCore::HIDGamepadProvider::HIDGamepadProvider):
(WebCore::HIDGamepadProvider::indexForNewlyConnectedDevice):
(WebCore::HIDGamepadProvider::startMonitoringGamepads):
(WebCore::HIDGamepadProvider::stopMonitoringGamepads):
(WebCore::HIDGamepadProvider::deviceAdded):
(WebCore::HIDGamepadProvider::deviceRemoved):
(WebCore::HIDGamepadProvider::valuesChanged):
(WebCore::HIDGamepadProvider::removeGamepadForDevice):
* platform/mac/HIDGamepadProvider.h: Renamed from Source/WebCore/platform/mac/HIDGamepadListener.h.
(WebCore::HIDGamepadProvider::platformGamepads):
(WebCore::HIDGamepadProvider::setShouldDispatchCallbacks):
* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* platform/mac/HIDGamepad.h: Fix incorrect comment
Source/WebKit:
Reviewed by Dean Jackson.
* WebKit.xcodeproj/project.pbxproj:
Source/WebKit/mac:
Reviewed by Dean Jackson.
Remove all the GamepadStrategy gunk:
* WebCoreSupport/WebHIDGamepadController.mm: Removed.
* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::createGamepadStrategy): Deleted.
(WebPlatformStrategies::startMonitoringGamepads): Deleted.
(WebPlatformStrategies::stopMonitoringGamepads): Deleted.
(WebPlatformStrategies::platformGamepads): Deleted.
Instead, install the HIDGamepadProvider as the shared GamepadProvider:
* WebView/WebView.mm:
(WebKitInitializeGamepadProviderIfNecessary):
(-[WebView _commonInitializationWithFrameName:groupName:]):
Source/WebKit/win:
Reviewed by Dean Jackson.
* WebCoreSupport/WebPlatformStrategies.cpp:
(WebPlatformStrategies::createGamepadStrategy): Deleted.
* WebCoreSupport/WebPlatformStrategies.h:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesgamepadGamepadManagercpp">trunk/Source/WebCore/Modules/gamepad/GamepadManager.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesgamepadGamepadManagerh">trunk/Source/WebCore/Modules/gamepad/GamepadManager.h</a></li>
<li><a href="#trunkSourceWebCoreModulesgamepadNavigatorGamepadcpp">trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.cpp</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreplatformPlatformStrategiesh">trunk/Source/WebCore/platform/PlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacHIDGamepadh">trunk/Source/WebCore/platform/mac/HIDGamepad.h</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitWebKitxcodeprojprojectpbxproj">trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebPlatformStrategiesmm">trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebPlatformStrategiescpp">trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkProcessPlatformStrategiescpp">trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcessNetworkProcessPlatformStrategiesh">trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiescpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiesh">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformGamepadProvidercpp">trunk/Source/WebCore/platform/GamepadProvider.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformGamepadProviderh">trunk/Source/WebCore/platform/GamepadProvider.h</a></li>
<li><a href="#trunkSourceWebCoreplatformGamepadProviderClienth">trunk/Source/WebCore/platform/GamepadProviderClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacHIDGamepadProvidercpp">trunk/Source/WebCore/platform/mac/HIDGamepadProvider.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacHIDGamepadProviderh">trunk/Source/WebCore/platform/mac/HIDGamepadProvider.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformGamepadStrategyh">trunk/Source/WebCore/platform/GamepadStrategy.h</a></li>
<li><a href="#trunkSourceWebCoreplatformGamepadStrategyClienth">trunk/Source/WebCore/platform/GamepadStrategyClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacHIDGamepadListenercpp">trunk/Source/WebCore/platform/mac/HIDGamepadListener.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmacHIDGamepadListenerh">trunk/Source/WebCore/platform/mac/HIDGamepadListener.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebHIDGamepadControllerh">trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h</a></li>
<li><a href="#trunkSourceWebKitmacWebCoreSupportWebHIDGamepadControllermm">trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/ChangeLog        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,3 +1,69 @@
</span><ins>+2014-06-26 Brady Eidson <beidson@apple.com>
+
+ Remove use of PlatformStrategies for Gamepad API.
+ https://bugs.webkit.org/show_bug.cgi?id=134348
+
+ Reviewed by Dean Jackson.
+
+ No new tests (Not yet a tested config)
+
+ Introduce a virtual GamepadProvider with a process-global shared provider.
+ The base implementation of the GamepadProvider does nothing.
+ * platform/GamepadProvider.cpp: Renamed from Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h.
+ (WebCore::GamepadProvider::shared):
+ (WebCore::GamepadProvider::setSharedProvider):
+ (WebCore::GamepadProvider::startMonitoringGamepads):
+ (WebCore::GamepadProvider::stopMonitoringGamepads):
+ (WebCore::GamepadProvider::platformGamepads):
+ * platform/GamepadProvider.h: Renamed from Source/WebCore/platform/GamepadStrategy.h.
+ (WebCore::GamepadProvider::~GamepadProvider):
+
+ * platform/GamepadProviderClient.h: Renamed from Source/WebCore/platform/GamepadStrategyClient.h.
+ (WebCore::GamepadProviderClient::~GamepadProviderClient):
+
+ GamepadManager is now a GamepadProviderClient:
+ * Modules/gamepad/GamepadManager.cpp:
+ (WebCore::GamepadManager::GamepadManager):
+ (WebCore::GamepadManager::registerNavigator):
+ (WebCore::GamepadManager::unregisterNavigator):
+ * Modules/gamepad/GamepadManager.h:
+
+ Remove the GamepadStrategy altogether:
+ * platform/PlatformStrategies.h:
+ (WebCore::PlatformStrategies::PlatformStrategies):
+ (WebCore::PlatformStrategies::gamepadStrategy): Deleted.
+
+ Call to the shared GamepadProvider instead of the strategy:
+ * Modules/gamepad/NavigatorGamepad.cpp:
+ (WebCore::NavigatorGamepad::gamepads):
+ (WebCore::NavigatorGamepad::gamepadsBecameVisible):
+ (WebCore::NavigatorGamepad::gamepadConnected):
+
+ HIDGamepadListener is now a subclass of GamepadProvider that implements the HID based management.
+ LegacyWebKit on Mac will install the shared HIDGamepadProvider instead of the default GamepadProvider:
+ * platform/mac/HIDGamepadProvider.cpp: Renamed from Source/WebCore/platform/mac/HIDGamepadListener.cpp.
+ (WebCore::deviceMatchingDictionary):
+ (WebCore::deviceAddedCallback):
+ (WebCore::deviceRemovedCallback):
+ (WebCore::deviceValuesChangedCallback):
+ (WebCore::HIDGamepadProvider::shared):
+ (WebCore::HIDGamepadProvider::HIDGamepadProvider):
+ (WebCore::HIDGamepadProvider::indexForNewlyConnectedDevice):
+ (WebCore::HIDGamepadProvider::startMonitoringGamepads):
+ (WebCore::HIDGamepadProvider::stopMonitoringGamepads):
+ (WebCore::HIDGamepadProvider::deviceAdded):
+ (WebCore::HIDGamepadProvider::deviceRemoved):
+ (WebCore::HIDGamepadProvider::valuesChanged):
+ (WebCore::HIDGamepadProvider::removeGamepadForDevice):
+ * platform/mac/HIDGamepadProvider.h: Renamed from Source/WebCore/platform/mac/HIDGamepadListener.h.
+ (WebCore::HIDGamepadProvider::platformGamepads):
+ (WebCore::HIDGamepadProvider::setShouldDispatchCallbacks):
+
+ * WebCore.exp.in:
+ * WebCore.xcodeproj/project.pbxproj:
+
+ * platform/mac/HIDGamepad.h: Fix incorrect comment
+
</ins><span class="cx"> 2014-06-26 Andreas Kling <akling@apple.com>
</span><span class="cx">
</span><span class="cx"> Skip memcmp()ing fully downloaded resources after they become mmap()able.
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesgamepadGamepadManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/gamepad/GamepadManager.cpp (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/gamepad/GamepadManager.cpp        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/Modules/gamepad/GamepadManager.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -28,10 +28,9 @@
</span><span class="cx"> #if ENABLE(GAMEPAD)
</span><span class="cx">
</span><span class="cx"> #include "Gamepad.h"
</span><del>-#include "GamepadStrategy.h"
</del><ins>+#include "GamepadProvider.h"
</ins><span class="cx"> #include "NavigatorGamepad.h"
</span><span class="cx"> #include "PlatformGamepad.h"
</span><del>-#include "PlatformStrategies.h"
</del><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="lines">@@ -43,7 +42,7 @@
</span><span class="cx">
</span><span class="cx"> GamepadManager::GamepadManager()
</span><span class="cx"> {
</span><del>- platformStrategies()->gamepadStrategy()->stopMonitoringGamepads(this);
</del><ins>+ GamepadProvider::shared().stopMonitoringGamepads(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void GamepadManager::platformGamepadConnected(unsigned index)
</span><span class="lines">@@ -71,7 +70,7 @@
</span><span class="cx"> // connected/disconnected event listeners.
</span><span class="cx"> // Those event listeners will also need to register with the GamepadManager.
</span><span class="cx"> if (m_navigators.size() == 1)
</span><del>- platformStrategies()->gamepadStrategy()->startMonitoringGamepads(this);
</del><ins>+ GamepadProvider::shared().startMonitoringGamepads(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void GamepadManager::unregisterNavigator(NavigatorGamepad* navigator)
</span><span class="lines">@@ -83,7 +82,7 @@
</span><span class="cx"> // connected/disconnected event listeners.
</span><span class="cx"> // Those event listeners will also need to register with the GamepadManager.
</span><span class="cx"> if (m_navigators.isEmpty())
</span><del>- platformStrategies()->gamepadStrategy()->stopMonitoringGamepads(this);
</del><ins>+ GamepadProvider::shared().stopMonitoringGamepads(this);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesgamepadGamepadManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/gamepad/GamepadManager.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/gamepad/GamepadManager.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/Modules/gamepad/GamepadManager.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(GAMEPAD)
</span><span class="cx">
</span><del>-#include "GamepadStrategyClient.h"
</del><ins>+#include "GamepadProviderClient.h"
</ins><span class="cx"> #include <wtf/HashSet.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> class Gamepad;
</span><span class="cx"> class NavigatorGamepad;
</span><span class="cx">
</span><del>-class GamepadManager : public GamepadStrategyClient {
</del><ins>+class GamepadManager : public GamepadProviderClient {
</ins><span class="cx"> WTF_MAKE_NONCOPYABLE(GamepadManager);
</span><span class="cx"> friend class NeverDestroyed<GamepadManager>;
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesgamepadNavigatorGamepadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.cpp (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.cpp        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -32,10 +32,9 @@
</span><span class="cx"> #include "Frame.h"
</span><span class="cx"> #include "Gamepad.h"
</span><span class="cx"> #include "GamepadManager.h"
</span><del>-#include "GamepadStrategy.h"
</del><ins>+#include "GamepadProvider.h"
</ins><span class="cx"> #include "Navigator.h"
</span><span class="cx"> #include "PlatformGamepad.h"
</span><del>-#include "PlatformStrategies.h"
</del><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx"> #include <wtf/RunLoop.h>
</span><span class="cx">
</span><span class="lines">@@ -83,7 +82,7 @@
</span><span class="cx"> if (m_gamepads.isEmpty())
</span><span class="cx"> return m_gamepads;
</span><span class="cx">
</span><del>- const Vector<PlatformGamepad*>& platformGamepads = platformStrategies()->gamepadStrategy()->platformGamepads();
</del><ins>+ const Vector<PlatformGamepad*>& platformGamepads = GamepadProvider::shared().platformGamepads();
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < platformGamepads.size(); ++i) {
</span><span class="cx"> if (!platformGamepads[i]) {
</span><span class="lines">@@ -100,7 +99,7 @@
</span><span class="cx">
</span><span class="cx"> void NavigatorGamepad::gamepadsBecameVisible()
</span><span class="cx"> {
</span><del>- const Vector<PlatformGamepad*>& platformGamepads = platformStrategies()->gamepadStrategy()->platformGamepads();
</del><ins>+ const Vector<PlatformGamepad*>& platformGamepads = GamepadProvider::shared().platformGamepads();
</ins><span class="cx"> m_gamepads.resize(platformGamepads.size());
</span><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < platformGamepads.size(); ++i) {
</span><span class="lines">@@ -122,7 +121,7 @@
</span><span class="cx"> // The new index should already fit in the existing array, or should be exactly one past-the-end of the existing array.
</span><span class="cx"> ASSERT(index <= m_gamepads.size());
</span><span class="cx">
</span><del>- const Vector<PlatformGamepad*>& platformGamepads = platformStrategies()->gamepadStrategy()->platformGamepads();
</del><ins>+ const Vector<PlatformGamepad*>& platformGamepads = GamepadProvider::shared().platformGamepads();
</ins><span class="cx"> ASSERT(index < platformGamepads.size());
</span><span class="cx"> ASSERT(platformGamepads[index]);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -3441,5 +3441,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(GAMEPAD)
</span><del>-__ZN7WebCore18HIDGamepadListener6sharedEv
</del><ins>+__ZN7WebCore15GamepadProvider17setSharedProviderERS0_
+__ZN7WebCore15GamepadProvider6sharedEv
+__ZN7WebCore18HIDGamepadProvider6sharedEv
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1834,7 +1834,6 @@
</span><span class="cx">                 512DD8FD0D91E6AF000F89EE /* ArchiveFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DD8F30D91E6AF000F89EE /* ArchiveFactory.h */; };
</span><span class="cx">                 512EA9BC181F2EE0001D01E0 /* IDBPendingOpenCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 512EA9BB181F2EE0001D01E0 /* IDBPendingOpenCall.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 512EA9BE18202857001D01E0 /* IDBOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 512EA9BD18202857001D01E0 /* IDBOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                5131B512195381200085C896 /* GamepadStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 5131B50F195379C30085C896 /* GamepadStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 51327D6011A33A2B004F9D65 /* SinkDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 51327D5E11A33A2B004F9D65 /* SinkDocument.h */; };
</span><span class="cx">                 51327D6111A33A2B004F9D65 /* SinkDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */; };
</span><span class="cx">                 513F14530AB634C400094DDF /* IconLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 513F14510AB634C400094DDF /* IconLoader.cpp */; };
</span><span class="lines">@@ -1905,6 +1904,11 @@
</span><span class="cx">                 5174E20A10A1F44F00F95E6F /* PopStateEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5174E20810A1F44F00F95E6F /* PopStateEvent.h */; };
</span><span class="cx">                 51771C8E182DB4B7008E781E /* IDBDatabaseBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51771C8C182DB4B7008E781E /* IDBDatabaseBackend.cpp */; };
</span><span class="cx">                 51771C8F182DB4B7008E781E /* IDBDatabaseBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 51771C8D182DB4B7008E781E /* IDBDatabaseBackend.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                5179CE24195C81420019C198 /* GamepadProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5179CE23195C81420019C198 /* GamepadProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                5179CE26195C821D0019C198 /* GamepadProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5179CE25195C821D0019C198 /* GamepadProvider.cpp */; };
+                5179CE2A195C91860019C198 /* GamepadProviderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5179CE29195C91860019C198 /* GamepadProviderClient.h */; };
+                5179CE36195CAC7E0019C198 /* HIDGamepadProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5179CE34195CAC7E0019C198 /* HIDGamepadProvider.cpp */; };
+                5179CE37195CAC7E0019C198 /* HIDGamepadProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5179CE35195CAC7E0019C198 /* HIDGamepadProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 517FBA1E151AB17C00B57959 /* DOMWindowExtension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */; };
</span><span class="cx">                 51889F0B1554AF3D004427F7 /* PDFDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51889F091554AF3D004427F7 /* PDFDocument.cpp */; };
</span><span class="cx">                 51889F0C1554AF3D004427F7 /* PDFDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 51889F0A1554AF3D004427F7 /* PDFDocument.h */; };
</span><span class="lines">@@ -1921,13 +1925,10 @@
</span><span class="cx">                 51A052561058874000CC9E95 /* ProtectionSpaceHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A052551058874000CC9E95 /* ProtectionSpaceHash.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 51A4BB0A1954D61600FA5C2E /* Gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A4BB071954D61600FA5C2E /* Gamepad.cpp */; };
</span><span class="cx">                 51A4BB101954D62700FA5C2E /* NavigatorGamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A4BB0D1954D62700FA5C2E /* NavigatorGamepad.cpp */; };
</span><del>-                51A9D9E6195B8F47001B2B5C /* GamepadStrategyClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A9D9E5195B8F47001B2B5C /* GamepadStrategyClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 51A9D9E9195B931F001B2B5C /* GamepadManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A9D9E7195B931F001B2B5C /* GamepadManager.cpp */; };
</span><span class="cx">                 51A9D9EA195B931F001B2B5C /* GamepadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A9D9E8195B931F001B2B5C /* GamepadManager.h */; };
</span><span class="cx">                 51A9D9F3195B9503001B2B5C /* HIDGamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A9D9EF195B9503001B2B5C /* HIDGamepad.cpp */; };
</span><span class="cx">                 51A9D9F4195B9503001B2B5C /* HIDGamepad.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A9D9F0195B9503001B2B5C /* HIDGamepad.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                51A9D9F5195B9503001B2B5C /* HIDGamepadListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51A9D9F1195B9503001B2B5C /* HIDGamepadListener.cpp */; };
-                51A9D9F6195B9503001B2B5C /* HIDGamepadListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A9D9F2195B9503001B2B5C /* HIDGamepadListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 51AA3F6F0BD5AA9E00892971 /* ResourceLoaderMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */; };
</span><span class="cx">                 51ABAE1B103C18FF008C5260 /* SocketStreamError.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ABAE1A103C18FF008C5260 /* SocketStreamError.h */; };
</span><span class="cx">                 51ABAE1E103C1913008C5260 /* SocketStreamHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */; };
</span><span class="lines">@@ -8904,7 +8905,6 @@
</span><span class="cx">                 512DD8F30D91E6AF000F89EE /* ArchiveFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveFactory.h; sourceTree = "<group>"; };
</span><span class="cx">                 512EA9BB181F2EE0001D01E0 /* IDBPendingOpenCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBPendingOpenCall.h; sourceTree = "<group>"; };
</span><span class="cx">                 512EA9BD18202857001D01E0 /* IDBOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBOperation.h; sourceTree = "<group>"; };
</span><del>-                5131B50F195379C30085C896 /* GamepadStrategy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GamepadStrategy.h; sourceTree = "<group>"; };
</del><span class="cx">                 51327D5E11A33A2B004F9D65 /* SinkDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SinkDocument.h; sourceTree = "<group>"; };
</span><span class="cx">                 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SinkDocument.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 513F14510AB634C400094DDF /* IconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconLoader.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -8979,6 +8979,11 @@
</span><span class="cx">                 5174E20B10A1F49A00F95E6F /* PopStateEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PopStateEvent.idl; sourceTree = "<group>"; };
</span><span class="cx">                 51771C8C182DB4B7008E781E /* IDBDatabaseBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseBackend.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 51771C8D182DB4B7008E781E /* IDBDatabaseBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseBackend.h; sourceTree = "<group>"; };
</span><ins>+                5179CE23195C81420019C198 /* GamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadProvider.h; sourceTree = "<group>"; };
+                5179CE25195C821D0019C198 /* GamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GamepadProvider.cpp; sourceTree = "<group>"; };
+                5179CE29195C91860019C198 /* GamepadProviderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadProviderClient.h; sourceTree = "<group>"; };
+                5179CE34195CAC7E0019C198 /* HIDGamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepadProvider.cpp; sourceTree = "<group>"; };
+                5179CE35195CAC7E0019C198 /* HIDGamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepadProvider.h; sourceTree = "<group>"; };
</ins><span class="cx">                 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtension.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowExtension.h; sourceTree = "<group>"; };
</span><span class="cx">                 51889F091554AF3D004427F7 /* PDFDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PDFDocument.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -9004,13 +9009,10 @@
</span><span class="cx">                 51A4BB0D1954D62700FA5C2E /* NavigatorGamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigatorGamepad.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 51A4BB0E1954D62700FA5C2E /* NavigatorGamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorGamepad.h; sourceTree = "<group>"; };
</span><span class="cx">                 51A4BB0F1954D62700FA5C2E /* NavigatorGamepad.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorGamepad.idl; sourceTree = "<group>"; };
</span><del>-                51A9D9E5195B8F47001B2B5C /* GamepadStrategyClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadStrategyClient.h; sourceTree = "<group>"; };
</del><span class="cx">                 51A9D9E7195B931F001B2B5C /* GamepadManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GamepadManager.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 51A9D9E8195B931F001B2B5C /* GamepadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadManager.h; sourceTree = "<group>"; };
</span><span class="cx">                 51A9D9EF195B9503001B2B5C /* HIDGamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepad.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 51A9D9F0195B9503001B2B5C /* HIDGamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepad.h; sourceTree = "<group>"; };
</span><del>-                51A9D9F1195B9503001B2B5C /* HIDGamepadListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepadListener.cpp; sourceTree = "<group>"; };
-                51A9D9F2195B9503001B2B5C /* HIDGamepadListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepadListener.h; sourceTree = "<group>"; };
</del><span class="cx">                 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceLoaderMac.mm; sourceTree = "<group>"; };
</span><span class="cx">                 51ABAE1A103C18FF008C5260 /* SocketStreamError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamError.h; sourceTree = "<group>"; };
</span><span class="cx">                 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandle.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -16385,8 +16387,8 @@
</span><span class="cx">                                 514B3F750C722055000530DF /* FileSystemMac.mm */,
</span><span class="cx">                                 51A9D9EF195B9503001B2B5C /* HIDGamepad.cpp */,
</span><span class="cx">                                 51A9D9F0195B9503001B2B5C /* HIDGamepad.h */,
</span><del>-                                51A9D9F1195B9503001B2B5C /* HIDGamepadListener.cpp */,
-                                51A9D9F2195B9503001B2B5C /* HIDGamepadListener.h */,
</del><ins>+                                5179CE34195CAC7E0019C198 /* HIDGamepadProvider.cpp */,
+                                5179CE35195CAC7E0019C198 /* HIDGamepadProvider.h */,
</ins><span class="cx">                                 935C476E09AC4D7300A6AAB4 /* KeyEventMac.mm */,
</span><span class="cx">                                 521D46F511AEC98100514613 /* KillRingMac.mm */,
</span><span class="cx">                                 9352084409BD43B900F2038D /* Language.mm */,
</span><span class="lines">@@ -21291,8 +21293,9 @@
</span><span class="cx">                                 C57FEDE01212EE9C0097BE65 /* FileSystem.cpp */,
</span><span class="cx">                                 514B3F720C722047000530DF /* FileSystem.h */,
</span><span class="cx">                                 BC073BA90C399B1F000F5979 /* FloatConversion.h */,
</span><del>-                                5131B50F195379C30085C896 /* GamepadStrategy.h */,
-                                51A9D9E5195B8F47001B2B5C /* GamepadStrategyClient.h */,
</del><ins>+                                5179CE25195C821D0019C198 /* GamepadProvider.cpp */,
+                                5179CE23195C81420019C198 /* GamepadProvider.h */,
+                                5179CE29195C91860019C198 /* GamepadProviderClient.h */,
</ins><span class="cx">                                 A8748BDF12CBF2DC001FBA41 /* HashTools.h */,
</span><span class="cx">                                 BC3BC29B0E91AB0F00835588 /* HostWindow.h */,
</span><span class="cx">                                 862F129F18C1DCE4005C54AF /* HysteresisActivity.h */,
</span><span class="lines">@@ -23638,6 +23641,7 @@
</span><span class="cx">                                 62CD325A1157E57C0063B0A7 /* CustomEvent.h in Headers */,
</span><span class="cx">                                 A8CB413E0E8633FD0032C4F0 /* DashArray.h in Headers */,
</span><span class="cx">                                 A80E6D0B0A1989CA007FB8C5 /* DashboardRegion.h in Headers */,
</span><ins>+                                5179CE2A195C91860019C198 /* GamepadProviderClient.h in Headers */,
</ins><span class="cx">                                 97BC6A211505F081001B74AC /* Database.h in Headers */,
</span><span class="cx">                                 97BC6A241505F081001B74AC /* DatabaseAuthorizer.h in Headers */,
</span><span class="cx">                                 FE16CFD4169D1DED00D3A0C7 /* DatabaseBackend.h in Headers */,
</span><span class="lines">@@ -23915,7 +23919,6 @@
</span><span class="cx">                                 85BA4D150AA688680088052D /* DOMHTMLOListElement.h in Headers */,
</span><span class="cx">                                 85E711BE0AC5D5350053270F /* DOMHTMLOListElementInternal.h in Headers */,
</span><span class="cx">                                 85F32AEE0AA63B8700FF3184 /* DOMHTMLOptGroupElement.h in Headers */,
</span><del>-                                5131B512195381200085C896 /* GamepadStrategy.h in Headers */,
</del><span class="cx">                                 85E711BF0AC5D5350053270F /* DOMHTMLOptGroupElementInternal.h in Headers */,
</span><span class="cx">                                 8540756B0AD6CBF900620C57 /* DOMHTMLOptionElement.h in Headers */,
</span><span class="cx">                                 8540756D0AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h in Headers */,
</span><span class="lines">@@ -24474,7 +24477,6 @@
</span><span class="cx">                                 51D719D9181106E00016DC51 /* IDBIndex.h in Headers */,
</span><span class="cx">                                 51ABB5B8186D0ED1008391A1 /* IDBIndexMetadata.h in Headers */,
</span><span class="cx">                                 510194411836D20800925523 /* IDBIndexWriterLevelDB.h in Headers */,
</span><del>-                                51A9D9E6195B8F47001B2B5C /* GamepadStrategyClient.h in Headers */,
</del><span class="cx">                                 51D719DC181106E00016DC51 /* IDBKey.h in Headers */,
</span><span class="cx">                                 511EC1A6188DACA400BA3EB6 /* IDBKeyData.h in Headers */,
</span><span class="cx">                                 51D719DE181106E00016DC51 /* IDBKeyPath.h in Headers */,
</span><span class="lines">@@ -24830,7 +24832,6 @@
</span><span class="cx">                                 BC3C39B70C0D3D8D005F4D7A /* JSMediaList.h in Headers */,
</span><span class="cx">                                 D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */,
</span><span class="cx">                                 7C5343FD17B74B63004232F0 /* JSMediaQueryListListener.h in Headers */,
</span><del>-                                51A9D9F6195B9503001B2B5C /* HIDGamepadListener.h in Headers */,
</del><span class="cx">                                 CD9DE17517AAC74C00EA386D /* JSMediaSource.h in Headers */,
</span><span class="cx">                                 07C59B7217F79C7C000FBCBB /* JSMediaSourceStates.h in Headers */,
</span><span class="cx">                                 07277E4D17D018CC0015534D /* JSMediaStream.h in Headers */,
</span><span class="lines">@@ -25719,6 +25720,7 @@
</span><span class="cx">                                 514C767B0CE923A1007EF3CD /* ResourceHandleInternal.h in Headers */,
</span><span class="cx">                                 51E4143416A6596300C633C7 /* ResourceHandleTypes.h in Headers */,
</span><span class="cx">                                 656D373F0ADBA5DE00A4554D /* ResourceLoader.h in Headers */,
</span><ins>+                                5179CE24195C81420019C198 /* GamepadProvider.h in Headers */,
</ins><span class="cx">                                 D0A3A7311405A39800FB8ED3 /* ResourceLoaderOptions.h in Headers */,
</span><span class="cx">                                 51AF503616F100F60095B2E8 /* ResourceLoaderTypes.h in Headers */,
</span><span class="cx">                                 973E325710883B7C005BC493 /* ResourceLoadNotifier.h in Headers */,
</span><span class="lines">@@ -26140,6 +26142,7 @@
</span><span class="cx">                                 0854B0211255E4E600B9CDD0 /* SVGInlineTextBox.h in Headers */,
</span><span class="cx">                                 B2227A300D00BF220071B782 /* SVGLangSpace.h in Headers */,
</span><span class="cx">                                 B2227A330D00BF220071B782 /* SVGLength.h in Headers */,
</span><ins>+                                5179CE37195CAC7E0019C198 /* HIDGamepadProvider.h in Headers */,
</ins><span class="cx">                                 7134496E146941B300720312 /* SVGLengthContext.h in Headers */,
</span><span class="cx">                                 B2227A360D00BF220071B782 /* SVGLengthList.h in Headers */,
</span><span class="cx">                                 B2227A390D00BF220071B782 /* SVGLinearGradientElement.h in Headers */,
</span><span class="lines">@@ -28376,6 +28379,7 @@
</span><span class="cx">                                 1A750DD40A90E729000FF215 /* JSNodeIteratorCustom.cpp in Sources */,
</span><span class="cx">                                 BCD9C2C20C17B69E005C90A2 /* JSNodeList.cpp in Sources */,
</span><span class="cx">                                 BCD9C2650C17AA67005C90A2 /* JSNodeListCustom.cpp in Sources */,
</span><ins>+                                5179CE26195C821D0019C198 /* GamepadProvider.cpp in Sources */,
</ins><span class="cx">                                 65DF31FD09D1CC60000BE325 /* JSNotation.cpp in Sources */,
</span><span class="cx">                                 33503CA310179AD7003B47E1 /* JSNotification.cpp in Sources */,
</span><span class="cx">                                 33503CA510179AD7003B47E1 /* JSNotificationCenter.cpp in Sources */,
</span><span class="lines">@@ -28985,6 +28989,7 @@
</span><span class="cx">                                 BC94D1080C274F88006BC617 /* PlatformScreenMac.mm in Sources */,
</span><span class="cx">                                 2934940B16C02C0A00901318 /* PlatformSpeechSynthesisUtterance.cpp in Sources */,
</span><span class="cx">                                 2934940A16C02C0700901318 /* PlatformSpeechSynthesisVoice.cpp in Sources */,
</span><ins>+                                5179CE36195CAC7E0019C198 /* HIDGamepadProvider.cpp in Sources */,
</ins><span class="cx">                                 297BE3DA16C043D8003316BD /* PlatformSpeechSynthesizer.cpp in Sources */,
</span><span class="cx">                                 1AC900C31943C0FC008625B5 /* HTTPHeaderNames.cpp in Sources */,
</span><span class="cx">                                 AA12DF491743DF83004DAFDF /* PlatformSpeechSynthesizerIOS.mm in Sources */,
</span><span class="lines">@@ -29487,7 +29492,6 @@
</span><span class="cx">                                 B25599840D00D8BA00BB825C /* SVGFEImage.cpp in Sources */,
</span><span class="cx">                                 B22279EE0D00BF220071B782 /* SVGFEImageElement.cpp in Sources */,
</span><span class="cx">                                 B22279F10D00BF220071B782 /* SVGFELightElement.cpp in Sources */,
</span><del>-                                51A9D9F5195B9503001B2B5C /* HIDGamepadListener.cpp in Sources */,
</del><span class="cx">                                 B22279F30D00BF220071B782 /* SVGFEMergeElement.cpp in Sources */,
</span><span class="cx">                                 B22279F60D00BF220071B782 /* SVGFEMergeNodeElement.cpp in Sources */,
</span><span class="cx">                                 84224193107E78A700766A87 /* SVGFEMorphologyElement.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformGamepadProvidercppfromrev170499trunkSourceWebKitmacWebCoreSupportWebHIDGamepadControllerh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/GamepadProvider.cpp (from rev 170499, trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h) (0 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/GamepadProvider.cpp         (rev 0)
+++ trunk/Source/WebCore/platform/GamepadProvider.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "config.h"
+#include "GamepadProvider.h"
+
+#if ENABLE(GAMEPAD)
+
+#include <wtf/NeverDestroyed.h>
+
+namespace WebCore {
+
+static GamepadProvider* sharedProvider = nullptr;
+
+GamepadProvider& GamepadProvider::shared()
+{
+ if (!sharedProvider) {
+ static NeverDestroyed<GamepadProvider> defaultProvider;
+ sharedProvider = &defaultProvider.get();
+ }
+
+ return *sharedProvider;
+}
+
+void GamepadProvider::setSharedProvider(GamepadProvider& newProvider)
+{
+ sharedProvider = &newProvider;
+}
+
+void GamepadProvider::startMonitoringGamepads(GamepadProviderClient*)
+{
+}
+
+void GamepadProvider::stopMonitoringGamepads(GamepadProviderClient*)
+{
+}
+
+const Vector<PlatformGamepad*>& GamepadProvider::platformGamepads()
+{
+ static NeverDestroyed<Vector<PlatformGamepad*>> defaultGamepads;
+ return defaultGamepads;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformGamepadProviderhfromrev170499trunkSourceWebCoreplatformGamepadStrategyh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/GamepadProvider.h (from rev 170499, trunk/Source/WebCore/platform/GamepadStrategy.h) (0 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/GamepadProvider.h         (rev 0)
+++ trunk/Source/WebCore/platform/GamepadProvider.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef GamepadProvider_h
+#define GamepadProvider_h
+
+#if ENABLE(GAMEPAD)
+
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+class GamepadProviderClient;
+class PlatformGamepad;
+
+class GamepadProvider {
+public:
+ virtual ~GamepadProvider() { }
+
+ static GamepadProvider& shared();
+ static void setSharedProvider(GamepadProvider&);
+
+ virtual void startMonitoringGamepads(GamepadProviderClient*);
+ virtual void stopMonitoringGamepads(GamepadProviderClient*);
+ virtual const Vector<PlatformGamepad*>& platformGamepads();
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
+#endif // GamepadProvider_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformGamepadProviderClienthfromrev170499trunkSourceWebCoreplatformGamepadStrategyClienth"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/GamepadProviderClient.h (from rev 170499, trunk/Source/WebCore/platform/GamepadStrategyClient.h) (0 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/GamepadProviderClient.h         (rev 0)
+++ trunk/Source/WebCore/platform/GamepadProviderClient.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef GamepadProviderClient_h
+#define GamepadProviderClient_h
+
+#if ENABLE(GAMEPAD)
+
+namespace WebCore {
+
+class GamepadProviderClient {
+public:
+ virtual ~GamepadProviderClient() { }
+
+ virtual void platformGamepadConnected(unsigned index) = 0;
+ virtual void platformGamepadDisconnected(unsigned index) = 0;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
+#endif // GamepadProviderClient_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformGamepadStrategyh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/GamepadStrategy.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/GamepadStrategy.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/platform/GamepadStrategy.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,51 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GamepadStrategy_h
-#define GamepadStrategy_h
-
-#if ENABLE(GAMEPAD)
-
-namespace WebCore {
-
-class PlatformGamepad;
-class GamepadStrategyClient;
-
-class GamepadStrategy {
-public:
- virtual void startMonitoringGamepads(GamepadStrategyClient*) = 0;
- virtual void stopMonitoringGamepads(GamepadStrategyClient*) = 0;
- virtual const Vector<PlatformGamepad*>& platformGamepads() = 0;
-
-protected:
- virtual ~GamepadStrategy()
- {
- }
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(GAMEPAD)
-#endif // GamepadStrategy_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformGamepadStrategyClienth"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/GamepadStrategyClient.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/GamepadStrategyClient.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/platform/GamepadStrategyClient.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,44 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GamepadStrategyClient_h
-#define GamepadStrategyClient_h
-
-#if ENABLE(GAMEPAD)
-
-namespace WebCore {
-
-class GamepadStrategyClient {
-public:
- virtual ~GamepadStrategyClient() { }
-
- virtual void platformGamepadConnected(unsigned index) = 0;
- virtual void platformGamepadDisconnected(unsigned index) = 0;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(GAMEPAD)
-#endif // GamepadStrategyClient_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformPlatformStrategiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/PlatformStrategies.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/PlatformStrategies.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/platform/PlatformStrategies.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -36,10 +36,6 @@
</span><span class="cx"> class SharedWorkerStrategy;
</span><span class="cx"> class StorageStrategy;
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-class GamepadStrategy;
-#endif
-
</del><span class="cx"> class PlatformStrategies {
</span><span class="cx"> public:
</span><span class="cx"> CookiesStrategy* cookiesStrategy()
</span><span class="lines">@@ -91,15 +87,6 @@
</span><span class="cx"> return m_storageStrategy;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
- GamepadStrategy* gamepadStrategy()
- {
- if (!m_gamepadStrategy)
- m_gamepadStrategy = createGamepadStrategy();
- return m_gamepadStrategy;
- }
-#endif
-
</del><span class="cx"> protected:
</span><span class="cx"> PlatformStrategies()
</span><span class="cx"> : m_cookiesStrategy(nullptr)
</span><span class="lines">@@ -109,9 +96,6 @@
</span><span class="cx"> , m_pluginStrategy(nullptr)
</span><span class="cx"> , m_sharedWorkerStrategy(nullptr)
</span><span class="cx"> , m_storageStrategy(nullptr)
</span><del>-#if ENABLE(GAMEPAD)
- , m_gamepadStrategy(nullptr)
-#endif
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -127,9 +111,6 @@
</span><span class="cx"> virtual PluginStrategy* createPluginStrategy() = 0;
</span><span class="cx"> virtual SharedWorkerStrategy* createSharedWorkerStrategy() = 0;
</span><span class="cx"> virtual StorageStrategy* createStorageStrategy() = 0;
</span><del>-#if ENABLE(GAMEPAD)
- virtual GamepadStrategy* createGamepadStrategy() = 0;
-#endif
</del><span class="cx">
</span><span class="cx"> CookiesStrategy* m_cookiesStrategy;
</span><span class="cx"> DatabaseStrategy* m_databaseStrategy;
</span><span class="lines">@@ -138,9 +119,6 @@
</span><span class="cx"> PluginStrategy* m_pluginStrategy;
</span><span class="cx"> SharedWorkerStrategy* m_sharedWorkerStrategy;
</span><span class="cx"> StorageStrategy* m_storageStrategy;
</span><del>-#if ENABLE(GAMEPAD)
- GamepadStrategy* m_gamepadStrategy;
-#endif
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> PlatformStrategies* platformStrategies();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacHIDGamepadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/HIDGamepad.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/HIDGamepad.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/platform/mac/HIDGamepad.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -121,4 +121,4 @@
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(GAMEPAD)
</span><del>-#endif // HIDGamepadListener_h
</del><ins>+#endif // HIDGamepad_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformmacHIDGamepadListenercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/mac/HIDGamepadListener.cpp (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/HIDGamepadListener.cpp        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/platform/mac/HIDGamepadListener.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,174 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "HIDGamepadListener.h"
-
-#if ENABLE(GAMEPAD)
-
-#include "PlatformGamepad.h"
-#include <wtf/MainThread.h>
-
-namespace WebCore {
-
-static RetainPtr<CFDictionaryRef> deviceMatchingDictionary(uint32_t usagePage, uint32_t usage)
-{
- ASSERT(usagePage);
- ASSERT(usage);
-
- RetainPtr<CFNumberRef> pageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usagePage));
- RetainPtr<CFNumberRef> usageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage));
-
- CFStringRef keys[] = { CFSTR(kIOHIDDeviceUsagePageKey), CFSTR(kIOHIDDeviceUsageKey) };
- CFNumberRef values[] = { pageNumber.get(), usageNumber.get() };
-
- return adoptCF(CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
-}
-
-static void deviceAddedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
-{
- HIDGamepadListener* listener = static_cast<HIDGamepadListener*>(context);
- listener->deviceAdded(device);
-}
-
-static void deviceRemovedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
-{
- HIDGamepadListener* listener = static_cast<HIDGamepadListener*>(context);
- listener->deviceRemoved(device);
-}
-
-static void deviceValuesChangedCallback(void* context, IOReturn result, void*, IOHIDValueRef value)
-{
- // A non-zero result value indicates an error that we can do nothing about for input values.
- if (result)
- return;
-
- HIDGamepadListener* listener = static_cast<HIDGamepadListener*>(context);
- listener->valuesChanged(value);
-}
-
-HIDGamepadListener& HIDGamepadListener::shared()
-{
- static NeverDestroyed<HIDGamepadListener> sharedListener;
- return sharedListener;
-}
-
-HIDGamepadListener::HIDGamepadListener()
- : m_client(nullptr)
- , m_shouldDispatchCallbacks(false)
-{
- m_manager = adoptCF(IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone));
-
- RetainPtr<CFDictionaryRef> joystickDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick);
- RetainPtr<CFDictionaryRef> gamepadDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad);
-
- CFDictionaryRef devices[] = { joystickDictionary.get(), gamepadDictionary.get() };
-
- RetainPtr<CFArrayRef> matchingArray = adoptCF(CFArrayCreate(kCFAllocatorDefault, (const void**)devices, 2, &kCFTypeArrayCallBacks));
-
- IOHIDManagerSetDeviceMatchingMultiple(m_manager.get(), matchingArray.get());
- IOHIDManagerRegisterDeviceMatchingCallback(m_manager.get(), deviceAddedCallback, this);
- IOHIDManagerRegisterDeviceRemovalCallback(m_manager.get(), deviceRemovedCallback, this);
- IOHIDManagerScheduleWithRunLoop(m_manager.get(), CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
- IOHIDManagerOpen(m_manager.get(), kIOHIDOptionsTypeNone);
-
- IOHIDManagerRegisterInputValueCallback(m_manager.get(), deviceValuesChangedCallback, this);
-
- // We'll immediately get a series of connection and value callbacks for already-connected gamepads
- // but we don't want to notify WebCore of those events.
- // This callOnMainThread call re-enables those callbacks after the runloop empties out.
- callOnMainThread([]() {
- HIDGamepadListener::shared().setShouldDispatchCallbacks(true);
- });
-}
-
-unsigned HIDGamepadListener::indexForNewlyConnectedDevice()
-{
- unsigned index = 0;
- while (index < m_gamepadVector.size() && m_gamepadVector[index])
- ++index;
-
- return index;
-}
-
-void HIDGamepadListener::deviceAdded(IOHIDDeviceRef device)
-{
- ASSERT(!m_gamepadMap.get(device));
-
- std::unique_ptr<HIDGamepad> gamepad = std::make_unique<HIDGamepad>(device);
- unsigned index = indexForNewlyConnectedDevice();
-
- if (m_gamepadVector.size() <= index)
- m_gamepadVector.resize(index + 1);
-
- m_gamepadVector[index] = gamepad.get();
- m_gamepadMap.set(device, std::move(gamepad));
-
- if (m_client && m_shouldDispatchCallbacks)
- m_client->gamepadConnected(index);
-}
-
-void HIDGamepadListener::deviceRemoved(IOHIDDeviceRef device)
-{
- std::pair<std::unique_ptr<HIDGamepad>, unsigned> removedGamepad = removeGamepadForDevice(device);
- ASSERT(removedGamepad.first);
-
- if (m_client && m_shouldDispatchCallbacks)
- m_client->gamepadDisconnected(removedGamepad.second);
-}
-
-void HIDGamepadListener::valuesChanged(IOHIDValueRef value)
-{
- IOHIDDeviceRef device = IOHIDElementGetDevice(IOHIDValueGetElement(value));
-
- HIDGamepad* gamepad = m_gamepadMap.get(device);
-
- // When starting monitoring we might get a value changed callback before we even know the device is connected.
- if (!gamepad)
- return;
-
- gamepad->valueChanged(value);
-}
-
-std::pair<std::unique_ptr<HIDGamepad>, unsigned> HIDGamepadListener::removeGamepadForDevice(IOHIDDeviceRef device)
-{
- std::pair<std::unique_ptr<HIDGamepad>, unsigned> result;
- result.first = m_gamepadMap.take(device);
- ASSERT(result.first);
-
- for (unsigned i = 0; i < m_gamepadVector.size(); ++i) {
- if (m_gamepadVector[i] == result.first.get()) {
- result.second = i;
- m_gamepadVector[i] = nullptr;
- break;
- }
- }
-
- return result;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(GAMEPAD)
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformmacHIDGamepadListenerh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/mac/HIDGamepadListener.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/HIDGamepadListener.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebCore/platform/mac/HIDGamepadListener.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,83 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef HIDGamepadListener_h
-#define HIDGamepadListener_h
-
-#if ENABLE(GAMEPAD)
-
-#include "HIDGamepad.h"
-#include <IOKit/hid/IOHIDManager.h>
-#include <wtf/Deque.h>
-#include <wtf/HashMap.h>
-#include <wtf/NeverDestroyed.h>
-#include <wtf/RetainPtr.h>
-
-namespace WebCore {
-
-class HIDGamepadListenerClient {
-public:
- virtual ~HIDGamepadListenerClient() { }
-
- virtual void gamepadConnected(unsigned index) = 0;
- virtual void gamepadDisconnected(unsigned index) = 0;
-};
-
-class HIDGamepadListener {
- WTF_MAKE_NONCOPYABLE(HIDGamepadListener);
- friend class NeverDestroyed<HIDGamepadListener>;
-public:
- static HIDGamepadListener& shared();
-
- void setClient(HIDGamepadListenerClient* client) { m_client = client; }
-
- void deviceAdded(IOHIDDeviceRef);
- void deviceRemoved(IOHIDDeviceRef);
- void valuesChanged(IOHIDValueRef);
-
- const Vector<PlatformGamepad*>& platformGamepads() const { return m_gamepadVector; }
-
- void setShouldDispatchCallbacks(bool shouldDispatchCallbacks) { m_shouldDispatchCallbacks = shouldDispatchCallbacks; }
-
-private:
- HIDGamepadListener();
-
- std::pair<std::unique_ptr<HIDGamepad>, unsigned> removeGamepadForDevice(IOHIDDeviceRef);
-
- unsigned indexForNewlyConnectedDevice();
-
- Vector<PlatformGamepad*> m_gamepadVector;
- HashMap<IOHIDDeviceRef, std::unique_ptr<HIDGamepad>> m_gamepadMap;
-
- RetainPtr<IOHIDManagerRef> m_manager;
-
- HIDGamepadListenerClient* m_client;
- bool m_shouldDispatchCallbacks;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(GAMEPAD)
-#endif // HIDGamepadListener_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformmacHIDGamepadProvidercppfromrev170499trunkSourceWebCoreplatformmacHIDGamepadListenercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/mac/HIDGamepadProvider.cpp (from rev 170499, trunk/Source/WebCore/platform/mac/HIDGamepadListener.cpp) (0 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/HIDGamepadProvider.cpp         (rev 0)
+++ trunk/Source/WebCore/platform/mac/HIDGamepadProvider.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -0,0 +1,189 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "HIDGamepadProvider.h"
+
+#if ENABLE(GAMEPAD)
+
+#include "GamepadProviderClient.h"
+#include "PlatformGamepad.h"
+#include <wtf/MainThread.h>
+
+namespace WebCore {
+
+static RetainPtr<CFDictionaryRef> deviceMatchingDictionary(uint32_t usagePage, uint32_t usage)
+{
+ ASSERT(usagePage);
+ ASSERT(usage);
+
+ RetainPtr<CFNumberRef> pageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usagePage));
+ RetainPtr<CFNumberRef> usageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage));
+
+ CFStringRef keys[] = { CFSTR(kIOHIDDeviceUsagePageKey), CFSTR(kIOHIDDeviceUsageKey) };
+ CFNumberRef values[] = { pageNumber.get(), usageNumber.get() };
+
+ return adoptCF(CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
+}
+
+static void deviceAddedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
+{
+ HIDGamepadProvider* listener = static_cast<HIDGamepadProvider*>(context);
+ listener->deviceAdded(device);
+}
+
+static void deviceRemovedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
+{
+ HIDGamepadProvider* listener = static_cast<HIDGamepadProvider*>(context);
+ listener->deviceRemoved(device);
+}
+
+static void deviceValuesChangedCallback(void* context, IOReturn result, void*, IOHIDValueRef value)
+{
+ // A non-zero result value indicates an error that we can do nothing about for input values.
+ if (result)
+ return;
+
+ HIDGamepadProvider* listener = static_cast<HIDGamepadProvider*>(context);
+ listener->valuesChanged(value);
+}
+
+HIDGamepadProvider& HIDGamepadProvider::shared()
+{
+ static NeverDestroyed<HIDGamepadProvider> sharedListener;
+ return sharedListener;
+}
+
+HIDGamepadProvider::HIDGamepadProvider()
+ : m_shouldDispatchCallbacks(false)
+{
+ m_manager = adoptCF(IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone));
+
+ RetainPtr<CFDictionaryRef> joystickDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick);
+ RetainPtr<CFDictionaryRef> gamepadDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad);
+
+ CFDictionaryRef devices[] = { joystickDictionary.get(), gamepadDictionary.get() };
+
+ RetainPtr<CFArrayRef> matchingArray = adoptCF(CFArrayCreate(kCFAllocatorDefault, (const void**)devices, 2, &kCFTypeArrayCallBacks));
+
+ IOHIDManagerSetDeviceMatchingMultiple(m_manager.get(), matchingArray.get());
+ IOHIDManagerRegisterDeviceMatchingCallback(m_manager.get(), deviceAddedCallback, this);
+ IOHIDManagerRegisterDeviceRemovalCallback(m_manager.get(), deviceRemovedCallback, this);
+ IOHIDManagerScheduleWithRunLoop(m_manager.get(), CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
+ IOHIDManagerOpen(m_manager.get(), kIOHIDOptionsTypeNone);
+
+ IOHIDManagerRegisterInputValueCallback(m_manager.get(), deviceValuesChangedCallback, this);
+
+ // We'll immediately get a series of connection and value callbacks for already-connected gamepads
+ // but we don't want to notify WebCore of those events.
+ // This callOnMainThread call re-enables those callbacks after the runloop empties out.
+ callOnMainThread([]() {
+ HIDGamepadProvider::shared().setShouldDispatchCallbacks(true);
+ });
+}
+
+unsigned HIDGamepadProvider::indexForNewlyConnectedDevice()
+{
+ unsigned index = 0;
+ while (index < m_gamepadVector.size() && m_gamepadVector[index])
+ ++index;
+
+ return index;
+}
+
+void HIDGamepadProvider::startMonitoringGamepads(GamepadProviderClient* client)
+{
+ m_clients.add(client);
+}
+void HIDGamepadProvider::stopMonitoringGamepads(GamepadProviderClient* client)
+{
+ m_clients.remove(client);
+}
+
+void HIDGamepadProvider::deviceAdded(IOHIDDeviceRef device)
+{
+ ASSERT(!m_gamepadMap.get(device));
+
+ std::unique_ptr<HIDGamepad> gamepad = std::make_unique<HIDGamepad>(device);
+ unsigned index = indexForNewlyConnectedDevice();
+
+ if (m_gamepadVector.size() <= index)
+ m_gamepadVector.resize(index + 1);
+
+ m_gamepadVector[index] = gamepad.get();
+ m_gamepadMap.set(device, std::move(gamepad));
+
+ if (!m_shouldDispatchCallbacks)
+ return;
+
+ for (auto& client : m_clients)
+ client->platformGamepadConnected(index);
+}
+
+void HIDGamepadProvider::deviceRemoved(IOHIDDeviceRef device)
+{
+ std::pair<std::unique_ptr<HIDGamepad>, unsigned> removedGamepad = removeGamepadForDevice(device);
+ ASSERT(removedGamepad.first);
+
+ if (!m_shouldDispatchCallbacks)
+ return;
+
+ for (auto& client : m_clients)
+ client->platformGamepadDisconnected(removedGamepad.second);
+}
+
+void HIDGamepadProvider::valuesChanged(IOHIDValueRef value)
+{
+ IOHIDDeviceRef device = IOHIDElementGetDevice(IOHIDValueGetElement(value));
+
+ HIDGamepad* gamepad = m_gamepadMap.get(device);
+
+ // When starting monitoring we might get a value changed callback before we even know the device is connected.
+ if (!gamepad)
+ return;
+
+ gamepad->valueChanged(value);
+}
+
+std::pair<std::unique_ptr<HIDGamepad>, unsigned> HIDGamepadProvider::removeGamepadForDevice(IOHIDDeviceRef device)
+{
+ std::pair<std::unique_ptr<HIDGamepad>, unsigned> result;
+ result.first = m_gamepadMap.take(device);
+ ASSERT(result.first);
+
+ for (unsigned i = 0; i < m_gamepadVector.size(); ++i) {
+ if (m_gamepadVector[i] == result.first.get()) {
+ result.second = i;
+ m_gamepadVector[i] = nullptr;
+ break;
+ }
+ }
+
+ return result;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformmacHIDGamepadProviderhfromrev170499trunkSourceWebCoreplatformmacHIDGamepadListenerh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/mac/HIDGamepadProvider.h (from rev 170499, trunk/Source/WebCore/platform/mac/HIDGamepadListener.h) (0 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/HIDGamepadProvider.h         (rev 0)
+++ trunk/Source/WebCore/platform/mac/HIDGamepadProvider.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef HIDGamepadProvider_h
+#define HIDGamepadProvider_h
+
+#if ENABLE(GAMEPAD)
+
+#include "GamepadProvider.h"
+#include "HIDGamepad.h"
+#include <IOKit/hid/IOHIDManager.h>
+#include <wtf/Deque.h>
+#include <wtf/HashMap.h>
+#include <wtf/HashSet.h>
+#include <wtf/NeverDestroyed.h>
+#include <wtf/RetainPtr.h>
+
+namespace WebCore {
+
+class GamepadProviderClient;
+
+class HIDGamepadProvider : public GamepadProvider {
+ WTF_MAKE_NONCOPYABLE(HIDGamepadProvider);
+ friend class NeverDestroyed<HIDGamepadProvider>;
+public:
+ static HIDGamepadProvider& shared();
+
+ virtual void startMonitoringGamepads(GamepadProviderClient*);
+ virtual void stopMonitoringGamepads(GamepadProviderClient*);
+ virtual const Vector<PlatformGamepad*>& platformGamepads() { return m_gamepadVector; }
+
+ void deviceAdded(IOHIDDeviceRef);
+ void deviceRemoved(IOHIDDeviceRef);
+ void valuesChanged(IOHIDValueRef);
+
+ void setShouldDispatchCallbacks(bool shouldDispatchCallbacks) { m_shouldDispatchCallbacks = shouldDispatchCallbacks; }
+
+private:
+ HIDGamepadProvider();
+
+ std::pair<std::unique_ptr<HIDGamepad>, unsigned> removeGamepadForDevice(IOHIDDeviceRef);
+
+ unsigned indexForNewlyConnectedDevice();
+
+ Vector<PlatformGamepad*> m_gamepadVector;
+ HashMap<IOHIDDeviceRef, std::unique_ptr<HIDGamepad>> m_gamepadMap;
+
+ RetainPtr<IOHIDManagerRef> m_manager;
+
+ HashSet<GamepadProviderClient*> m_clients;
+ bool m_shouldDispatchCallbacks;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(GAMEPAD)
+#endif // HIDGamepadProvider_h
</ins></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/ChangeLog        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-06-26 Brady Eidson <beidson@apple.com>
+
+ Remove use of PlatformStrategies for Gamepad API.
+ https://bugs.webkit.org/show_bug.cgi?id=134348
+
+ Reviewed by Dean Jackson.
+
+ * WebKit.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2014-06-25 Brent Fulgham <bfulgham@apple.com>
</span><span class="cx">
</span><span class="cx"> [Win] Expose Cache Information to WinLauncher
</span></span></pre></div>
<a id="trunkSourceWebKitWebKitxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -113,8 +113,6 @@
</span><span class="cx">                 5158F6EF106D862A00AF457C /* WebHistoryDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5158F6EE106D862A00AF457C /* WebHistoryDelegate.h */; };
</span><span class="cx">                 5185F62610712B80007AA393 /* WebNavigationData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5185F62510712B80007AA393 /* WebNavigationData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 5185F62810712B97007AA393 /* WebNavigationData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5185F62710712B97007AA393 /* WebNavigationData.mm */; };
</span><del>-                51A9D9ED195B949F001B2B5C /* WebHIDGamepadController.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A9D9EB195B949F001B2B5C /* WebHIDGamepadController.h */; };
-                51A9D9EE195B949F001B2B5C /* WebHIDGamepadController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51A9D9EC195B949F001B2B5C /* WebHIDGamepadController.mm */; };
</del><span class="cx">                 51AEDEF10CECF45700854328 /* WebDatabaseManagerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51AEDEF00CECF45700854328 /* WebDatabaseManagerInternal.h */; };
</span><span class="cx">                 51B2A1000ADB15D0002A9BEE /* WebIconDatabaseDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B2A0FF0ADB15D0002A9BEE /* WebIconDatabaseDelegate.h */; };
</span><span class="cx">                 51C714FB0B20F79F00E5E33C /* WebBackForwardListInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C714FA0B20F79F00E5E33C /* WebBackForwardListInternal.h */; };
</span><span class="lines">@@ -601,8 +599,6 @@
</span><span class="cx">                 51A8B579042834F700CA2D3A /* WebView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebView.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
</span><span class="cx">                 51A8B57A042834F700CA2D3A /* WebView.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebView.mm; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
</span><span class="cx">                 51A8B57D0428353A00CA2D3A /* WebViewPrivate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebViewPrivate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
</span><del>-                51A9D9EB195B949F001B2B5C /* WebHIDGamepadController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHIDGamepadController.h; sourceTree = "<group>"; };
-                51A9D9EC195B949F001B2B5C /* WebHIDGamepadController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHIDGamepadController.mm; sourceTree = "<group>"; };
</del><span class="cx">                 51AEDEF00CECF45700854328 /* WebDatabaseManagerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerInternal.h; sourceTree = "<group>"; };
</span><span class="cx">                 51B2A0FF0ADB15D0002A9BEE /* WebIconDatabaseDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseDelegate.h; sourceTree = "<group>"; };
</span><span class="cx">                 51C714FA0B20F79F00E5E33C /* WebBackForwardListInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardListInternal.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -1551,8 +1547,6 @@
</span><span class="cx">                                 9391F274121B38BD00EBF7E8 /* WebFrameNetworkingContext.mm */,
</span><span class="cx">                                 BC7F884910C8775A00D6133D /* WebGeolocationClient.h */,
</span><span class="cx">                                 BC7F884A10C8775A00D6133D /* WebGeolocationClient.mm */,
</span><del>-                                51A9D9EB195B949F001B2B5C /* WebHIDGamepadController.h */,
-                                51A9D9EC195B949F001B2B5C /* WebHIDGamepadController.mm */,
</del><span class="cx">                                 51494CD40C7EBDE0004178C5 /* WebIconDatabaseClient.h */,
</span><span class="cx">                                 51494CD50C7EBDE0004178C5 /* WebIconDatabaseClient.mm */,
</span><span class="cx">                                 06693DDA0BFBA85200216072 /* WebInspectorClient.h */,
</span><span class="lines">@@ -1765,7 +1759,6 @@
</span><span class="cx">                                 A10C1D4218202FEF0036883A /* WebSQLiteDatabaseTrackerClient.h in Headers */,
</span><span class="cx">                                 939810540824BF01008DF038 /* WebFramePrivate.h in Headers */,
</span><span class="cx">                                 A10C1D621820300E0036883A /* SearchPopupMenuIOS.h in Headers */,
</span><del>-                                51A9D9ED195B949F001B2B5C /* WebHIDGamepadController.h in Headers */,
</del><span class="cx">                                 9398106E0824BF01008DF038 /* WebFrameView.h in Headers */,
</span><span class="cx">                                 9398106F0824BF01008DF038 /* WebFrameViewInternal.h in Headers */,
</span><span class="cx">                                 939810AF0824BF01008DF038 /* WebFrameViewPrivate.h in Headers */,
</span><span class="lines">@@ -2144,7 +2137,6 @@
</span><span class="cx">                                 070F549C17F1E42B00169E04 /* WebUserMediaClient.mm in Sources */,
</span><span class="cx">                                 E169836C11346D5600894115 /* ProxyRuntimeObject.mm in Sources */,
</span><span class="cx">                                 7C01CB88173435C900C5D807 /* SearchPopupMenuMac.mm in Sources */,
</span><del>-                                51A9D9EE195B949F001B2B5C /* WebHIDGamepadController.mm in Sources */,
</del><span class="cx">                                 CEDA12DB152CBE6800D9E08D /* WebAlternativeTextClient.mm in Sources */,
</span><span class="cx">                                 A10C1D601820300E0036883A /* PopupMenuIOS.mm in Sources */,
</span><span class="cx">                                 B6CE5C24100BC5CE00219936 /* WebApplicationCache.mm in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/mac/ChangeLog        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2014-06-26 Brady Eidson <beidson@apple.com>
+
+ Remove use of PlatformStrategies for Gamepad API.
+ https://bugs.webkit.org/show_bug.cgi?id=134348
+
+ Reviewed by Dean Jackson.
+
+ Remove all the GamepadStrategy gunk:
+ * WebCoreSupport/WebHIDGamepadController.mm: Removed.
+ * WebCoreSupport/WebPlatformStrategies.h:
+ * WebCoreSupport/WebPlatformStrategies.mm:
+ (WebPlatformStrategies::createGamepadStrategy): Deleted.
+ (WebPlatformStrategies::startMonitoringGamepads): Deleted.
+ (WebPlatformStrategies::stopMonitoringGamepads): Deleted.
+ (WebPlatformStrategies::platformGamepads): Deleted.
+
+ Instead, install the HIDGamepadProvider as the shared GamepadProvider:
+ * WebView/WebView.mm:
+ (WebKitInitializeGamepadProviderIfNecessary):
+ (-[WebView _commonInitializationWithFrameName:groupName:]):
+
</ins><span class="cx"> 2014-06-26 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Remove User Default for iOS TextField Debugging
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebHIDGamepadControllerh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,57 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebHIDGamepadController_h
-#define WebHIDGamepadController_h
-
-#if ENABLE(GAMEPAD)
-
-#include <WebCore/HIDGamepadListener.h>
-#include <wtf/HashSet.h>
-
-namespace WebCore {
-class GamepadStrategyClient;
-}
-
-class WebHIDGamepadController : public WebCore::HIDGamepadListenerClient {
-public:
- static WebHIDGamepadController& shared();
-
- virtual void gamepadConnected(unsigned index) override final;
- virtual void gamepadDisconnected(unsigned index) override final;
-
- void registerGamepadStrategyClient(WebCore::GamepadStrategyClient*);
- void unregisterGamepadStrategyClient(WebCore::GamepadStrategyClient*);
-
-private:
- friend NeverDestroyed<WebHIDGamepadController>;
-
- WebHIDGamepadController();
-
- HashSet<WebCore::GamepadStrategyClient*> m_clients;
-};
-
-#endif // ENABLE(GAMEPAD)
-#endif // WebHIDGamepadController_h
</del></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebHIDGamepadControllermm"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.mm (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.mm        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebHIDGamepadController.mm        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if ENABLE(GAMEPAD)
-
-#import "WebHIDGamepadController.h"
-#import <WebCore/GamepadStrategyClient.h>
-#import <WebCore/HIDGamepadListener.h>
-
-using namespace WebCore;
-
-WebHIDGamepadController& WebHIDGamepadController::shared()
-{
- static NeverDestroyed<WebHIDGamepadController> sharedClient;
- return sharedClient;
-}
-
-WebHIDGamepadController::WebHIDGamepadController()
-{
- HIDGamepadListener::shared().setClient(this);
-}
-
-void WebHIDGamepadController::gamepadConnected(unsigned index)
-{
- for (auto& client : m_clients)
- client->platformGamepadConnected(index);
-}
-
-void WebHIDGamepadController::gamepadDisconnected(unsigned index)
-{
- for (auto& client : m_clients)
- client->platformGamepadDisconnected(index);
-}
-
-void WebHIDGamepadController::registerGamepadStrategyClient(GamepadStrategyClient* client)
-{
- m_clients.add(client);
-}
-
-void WebHIDGamepadController::unregisterGamepadStrategyClient(GamepadStrategyClient* client)
-{
- m_clients.remove(client);
-}
-
-#endif // ENABLE(GAMEPAD)
</del></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebPlatformStrategiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -35,18 +35,10 @@
</span><span class="cx"> #include <WebCore/SharedWorkerStrategy.h>
</span><span class="cx"> #include <WebCore/StorageStrategy.h>
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-#include <WebCore/GamepadStrategy.h>
-#endif
-
</del><span class="cx"> struct PasteboardImage;
</span><span class="cx"> struct PasteboardWebContent;
</span><span class="cx">
</span><del>-class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::DatabaseStrategy, private WebCore::LoaderStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy, private WebCore::SharedWorkerStrategy, private WebCore::StorageStrategy
-#if ENABLE(GAMEPAD)
- , private WebCore::GamepadStrategy
-#endif
-{
</del><ins>+class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::DatabaseStrategy, private WebCore::LoaderStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy, private WebCore::SharedWorkerStrategy, private WebCore::StorageStrategy {
</ins><span class="cx"> public:
</span><span class="cx"> static void initializeIfNecessary();
</span><span class="cx">
</span><span class="lines">@@ -61,9 +53,6 @@
</span><span class="cx"> virtual WebCore::PluginStrategy* createPluginStrategy() override;
</span><span class="cx"> virtual WebCore::SharedWorkerStrategy* createSharedWorkerStrategy() override;
</span><span class="cx"> virtual WebCore::StorageStrategy* createStorageStrategy() override;
</span><del>-#if ENABLE(GAMEPAD)
- virtual WebCore::GamepadStrategy* createGamepadStrategy() override;
-#endif
</del><span class="cx">
</span><span class="cx"> // WebCore::CookiesStrategy
</span><span class="cx"> virtual String cookiesForDOM(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&) override;
</span><span class="lines">@@ -112,13 +101,6 @@
</span><span class="cx"> virtual long setBufferForType(PassRefPtr<WebCore::SharedBuffer>, const String& pasteboardType, const String& pasteboardName) override;
</span><span class="cx"> virtual long setPathnamesForType(const Vector<String>&, const String& pasteboardType, const String& pasteboardName) override;
</span><span class="cx"> virtual long setStringForType(const String&, const String& pasteboardType, const String& pasteboardName) override;
</span><del>-
-#if ENABLE(GAMEPAD)
- // WebCore::GamepadStrategy
- virtual void startMonitoringGamepads(WebCore::GamepadStrategyClient*) override;
- virtual void stopMonitoringGamepads(WebCore::GamepadStrategyClient*) override;
- virtual const Vector<WebCore::PlatformGamepad*>& platformGamepads() override;
-#endif
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> #endif // WebPlatformStrategies_h
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebCoreSupportWebPlatformStrategiesmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -40,10 +40,6 @@
</span><span class="cx"> #import <WebKitSystemInterface.h>
</span><span class="cx"> #import <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-#import "WebHIDGamepadController.h"
-#endif
-
</del><span class="cx"> using namespace WebCore;
</span><span class="cx">
</span><span class="cx"> void WebPlatformStrategies::initializeIfNecessary()
</span><span class="lines">@@ -94,13 +90,6 @@
</span><span class="cx"> return this;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-GamepadStrategy* WebPlatformStrategies::createGamepadStrategy()
-{
- return this;
-}
-#endif
-
</del><span class="cx"> String WebPlatformStrategies::cookiesForDOM(const NetworkStorageSession& session, const URL& firstParty, const URL& url)
</span><span class="cx"> {
</span><span class="cx"> return WebCore::cookiesForDOM(session, firstParty, url);
</span><span class="lines">@@ -224,23 +213,6 @@
</span><span class="cx"> return PlatformPasteboard(pasteboardName).setStringForType(string, pasteboardType);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-void WebPlatformStrategies::startMonitoringGamepads(GamepadStrategyClient* client)
-{
- WebHIDGamepadController::shared().registerGamepadStrategyClient(client);
-}
-
-void WebPlatformStrategies::stopMonitoringGamepads(GamepadStrategyClient* client)
-{
- WebHIDGamepadController::shared().unregisterGamepadStrategyClient(client);
-}
-
-const Vector<PlatformGamepad*>& WebPlatformStrategies::platformGamepads()
-{
- return HIDGamepadListener::shared().platformGamepads();
-}
-#endif // ENABLE(GAMEPAD)
-
</del><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> void WebPlatformStrategies::writeToPasteboard(const WebCore::PasteboardWebContent& content)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -282,6 +282,10 @@
</span><span class="cx"> #import <WebCore/DiskImageCacheIOS.h>
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if ENABLE(GAMEPAD)
+#import <WebCore/HIDGamepadProvider.h>
+#endif
+
</ins><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx"> @interface NSSpellChecker (WebNSSpellCheckerDetails)
</span><span class="cx"> - (void)_preflightChosenSpellServer;
</span><span class="lines">@@ -838,6 +842,18 @@
</span><span class="cx"> return shouldUseLegacyBackgroundSizeShorthandBehavior;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if ENABLE(GAMEPAD)
+static void WebKitInitializeGamepadProviderIfNecessary()
+{
+ static bool initialized = false;
+ if (initialized)
+ return;
+
+ GamepadProvider::shared().setSharedProvider(HIDGamepadProvider::shared());
+ initialized = true;
+}
+#endif
+
</ins><span class="cx"> - (void)_commonInitializationWithFrameName:(NSString *)frameName groupName:(NSString *)groupName
</span><span class="cx"> {
</span><span class="cx"> WebCoreThreadViolationCheckRoundTwo();
</span><span class="lines">@@ -896,6 +912,9 @@
</span><span class="cx"> #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS)
</span><span class="cx"> WebKitInitializeWebDiskImageCache();
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(GAMEPAD)
+ WebKitInitializeGamepadProviderIfNecessary();
+#endif
</ins><span class="cx">
</span><span class="cx"> Settings::setDefaultMinDOMTimerInterval(0.004);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/win/ChangeLog        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2014-06-26 Brady Eidson <beidson@apple.com>
+
+ Remove use of PlatformStrategies for Gamepad API.
+ https://bugs.webkit.org/show_bug.cgi?id=134348
+
+ Reviewed by Dean Jackson.
+
+ * WebCoreSupport/WebPlatformStrategies.cpp:
+ (WebPlatformStrategies::createGamepadStrategy): Deleted.
+ * WebCoreSupport/WebPlatformStrategies.h:
+
</ins><span class="cx"> 2014-06-25 Brent Fulgham <bfulgham@apple.com>
</span><span class="cx">
</span><span class="cx"> [Win] Expose Cache Information to WinLauncher
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebPlatformStrategiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -83,13 +83,6 @@
</span><span class="cx"> return this;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-GamepadStrategy* WebPlatformStrategies::createGamepadStrategy()
-{
- return nullptr;
-}
-#endif
-
</del><span class="cx"> String WebPlatformStrategies::cookiesForDOM(const NetworkStorageSession& session, const URL& firstParty, const URL& url)
</span><span class="cx"> {
</span><span class="cx"> return WebCore::cookiesForDOM(session, firstParty, url);
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebCoreSupportWebPlatformStrategiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -49,9 +49,6 @@
</span><span class="cx"> virtual WebCore::PluginStrategy* createPluginStrategy();
</span><span class="cx"> virtual WebCore::SharedWorkerStrategy* createSharedWorkerStrategy();
</span><span class="cx"> virtual WebCore::StorageStrategy* createStorageStrategy();
</span><del>-#if ENABLE(GAMEPAD)
- virtual WebCore::GamepadStrategy* createGamepadStrategy();
-#endif
</del><span class="cx">
</span><span class="cx"> // WebCore::CookiesStrategy
</span><span class="cx"> virtual String cookiesForDOM(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&);
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit2/ChangeLog        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2014-06-26 Brady Eidson <beidson@apple.com>
+
+ Remove use of PlatformStrategies for Gamepad API.
+ https://bugs.webkit.org/show_bug.cgi?id=134348
+
+https://bugs.webkit.org/show_bug.cgi?id=134348
+ * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
+ (WebKit::NetworkProcessPlatformStrategies::createGamepadStrategy): Deleted.
+ * NetworkProcess/NetworkProcessPlatformStrategies.h:
+
+ * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+ (WebKit::WebPlatformStrategies::createGamepadStrategy): Deleted.
+ (WebKit::WebPlatformStrategies::startMonitoringGamepads): Deleted.
+ (WebKit::WebPlatformStrategies::stopMonitoringGamepads): Deleted.
+ (WebKit::WebPlatformStrategies::platformGamepads): Deleted.
+ * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
+
</ins><span class="cx"> 2014-06-26 Dan Bernstein <mitz@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Add API for opting into character selection granularity
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkProcessPlatformStrategiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -74,13 +74,6 @@
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-GamepadStrategy* NetworkProcessPlatformStrategies::createGamepadStrategy()
-{
- return nullptr;
-}
-#endif
-
</del><span class="cx"> ResourceLoadScheduler* NetworkProcessPlatformStrategies::resourceLoadScheduler()
</span><span class="cx"> {
</span><span class="cx"> ASSERT_NOT_REACHED();
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcessNetworkProcessPlatformStrategiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -44,9 +44,6 @@
</span><span class="cx"> virtual WebCore::PluginStrategy* createPluginStrategy() override;
</span><span class="cx"> virtual WebCore::SharedWorkerStrategy* createSharedWorkerStrategy() override;
</span><span class="cx"> virtual WebCore::StorageStrategy* createStorageStrategy() override;
</span><del>-#if ENABLE(GAMEPAD)
- virtual WebCore::GamepadStrategy* createGamepadStrategy() override;
-#endif
</del><span class="cx">
</span><span class="cx"> // WebCore::LoaderStrategy
</span><span class="cx"> virtual WebCore::ResourceLoadScheduler* resourceLoadScheduler() override;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -124,13 +124,6 @@
</span><span class="cx"> return this;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-GamepadStrategy* WebPlatformStrategies::createGamepadStrategy()
-{
- return this;
-}
-#endif
-
</del><span class="cx"> // CookiesStrategy
</span><span class="cx">
</span><span class="cx"> String WebPlatformStrategies::cookiesForDOM(const NetworkStorageSession& session, const URL& firstParty, const URL& url)
</span><span class="lines">@@ -513,22 +506,6 @@
</span><span class="cx"> return newChangeCount;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-void WebPlatformStrategies::startMonitoringGamepads(GamepadStrategyClient*)
-{
-}
-
-void WebPlatformStrategies::stopMonitoringGamepads(GamepadStrategyClient*)
-{
-}
-
-const Vector<PlatformGamepad*>& WebPlatformStrategies::platformGamepads()
-{
- NeverDestroyed<Vector<PlatformGamepad*>> dummyGamepads;
- return dummyGamepads;
-}
-#endif // ENABLE(GAMEPAD)
-
</del><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> void WebPlatformStrategies::writeToPasteboard(const WebCore::PasteboardWebContent& content)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebPlatformStrategiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h (170499 => 170500)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h        2014-06-26 22:22:40 UTC (rev 170499)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h        2014-06-26 22:37:01 UTC (rev 170500)
</span><span class="lines">@@ -36,17 +36,9 @@
</span><span class="cx"> #include <WebCore/StorageStrategy.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><del>-#if ENABLE(GAMEPAD)
-#include <WebCore/GamepadStrategy.h>
-#endif
-
</del><span class="cx"> namespace WebKit {
</span><span class="cx">
</span><del>-class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::DatabaseStrategy, private WebCore::LoaderStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy, private WebCore::SharedWorkerStrategy, private WebCore::StorageStrategy
-#if ENABLE(GAMEPAD)
- , private WebCore::GamepadStrategy
-#endif
-{
</del><ins>+class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::DatabaseStrategy, private WebCore::LoaderStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy, private WebCore::SharedWorkerStrategy, private WebCore::StorageStrategy {
</ins><span class="cx"> friend class NeverDestroyed<WebPlatformStrategies>;
</span><span class="cx"> public:
</span><span class="cx"> static void initialize();
</span><span class="lines">@@ -62,9 +54,6 @@
</span><span class="cx"> virtual WebCore::PluginStrategy* createPluginStrategy() override;
</span><span class="cx"> virtual WebCore::SharedWorkerStrategy* createSharedWorkerStrategy() override;
</span><span class="cx"> virtual WebCore::StorageStrategy* createStorageStrategy() override;
</span><del>-#if ENABLE(GAMEPAD)
- virtual WebCore::GamepadStrategy* createGamepadStrategy() override;
-#endif
</del><span class="cx">
</span><span class="cx"> // WebCore::CookiesStrategy
</span><span class="cx"> virtual String cookiesForDOM(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&) override;
</span><span class="lines">@@ -138,13 +127,6 @@
</span><span class="cx"> Vector<WebCore::PluginInfo> m_cachedPlugins;
</span><span class="cx"> Vector<WebCore::PluginInfo> m_cachedApplicationPlugins;
</span><span class="cx"> #endif // ENABLE(NETSCAPE_PLUGIN_API)
</span><del>-
-#if ENABLE(GAMEPAD)
- // WebCore::GamepadStrategy
- virtual void startMonitoringGamepads(WebCore::GamepadStrategyClient*) override;
- virtual void stopMonitoringGamepads(WebCore::GamepadStrategyClient*) override;
- virtual const Vector<WebCore::PlatformGamepad*>& platformGamepads() override;
-#endif
</del><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> #if ENABLE(NETSCAPE_PLUGIN_API)
</span></span></pre>
</div>
</div>
</body>
</html>