<!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  &lt;beidson@apple.com&gt;
+
+        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  &lt;akling@apple.com&gt;
</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 &quot;Gamepad.h&quot;
</span><del>-#include &quot;GamepadStrategy.h&quot;
</del><ins>+#include &quot;GamepadProvider.h&quot;
</ins><span class="cx"> #include &quot;NavigatorGamepad.h&quot;
</span><span class="cx"> #include &quot;PlatformGamepad.h&quot;
</span><del>-#include &quot;PlatformStrategies.h&quot;
</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()-&gt;gamepadStrategy()-&gt;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()-&gt;gamepadStrategy()-&gt;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()-&gt;gamepadStrategy()-&gt;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 &quot;GamepadStrategyClient.h&quot;
</del><ins>+#include &quot;GamepadProviderClient.h&quot;
</ins><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</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&lt;GamepadManager&gt;;
</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 &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;Gamepad.h&quot;
</span><span class="cx"> #include &quot;GamepadManager.h&quot;
</span><del>-#include &quot;GamepadStrategy.h&quot;
</del><ins>+#include &quot;GamepadProvider.h&quot;
</ins><span class="cx"> #include &quot;Navigator.h&quot;
</span><span class="cx"> #include &quot;PlatformGamepad.h&quot;
</span><del>-#include &quot;PlatformStrategies.h&quot;
</del><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> #include &lt;wtf/RunLoop.h&gt;
</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&lt;PlatformGamepad*&gt;&amp; platformGamepads = platformStrategies()-&gt;gamepadStrategy()-&gt;platformGamepads();
</del><ins>+    const Vector&lt;PlatformGamepad*&gt;&amp; platformGamepads = GamepadProvider::shared().platformGamepads();
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; 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&lt;PlatformGamepad*&gt;&amp; platformGamepads = platformStrategies()-&gt;gamepadStrategy()-&gt;platformGamepads();
</del><ins>+    const Vector&lt;PlatformGamepad*&gt;&amp; 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 &lt; 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 &lt;= m_gamepads.size());
</span><span class="cx"> 
</span><del>-    const Vector&lt;PlatformGamepad*&gt;&amp; platformGamepads = platformStrategies()-&gt;gamepadStrategy()-&gt;platformGamepads();
</del><ins>+    const Vector&lt;PlatformGamepad*&gt;&amp; platformGamepads = GamepadProvider::shared().platformGamepads();
</ins><span class="cx">     ASSERT(index &lt; 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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 512EA9BB181F2EE0001D01E0 /* IDBPendingOpenCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBPendingOpenCall.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 512EA9BD18202857001D01E0 /* IDBOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBOperation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                5131B50F195379C30085C896 /* GamepadStrategy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GamepadStrategy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 51327D5E11A33A2B004F9D65 /* SinkDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SinkDocument.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SinkDocument.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 513F14510AB634C400094DDF /* IconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51771C8C182DB4B7008E781E /* IDBDatabaseBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseBackend.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51771C8D182DB4B7008E781E /* IDBDatabaseBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseBackend.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5179CE23195C81420019C198 /* GamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5179CE25195C821D0019C198 /* GamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GamepadProvider.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5179CE29195C91860019C198 /* GamepadProviderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadProviderClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5179CE34195CAC7E0019C198 /* HIDGamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepadProvider.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5179CE35195CAC7E0019C198 /* HIDGamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepadProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 517FBA17151AA71B00B57959 /* DOMWindowExtension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtension.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 517FBA18151AA71B00B57959 /* DOMWindowExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMWindowExtension.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51889F091554AF3D004427F7 /* PDFDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PDFDocument.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A4BB0E1954D62700FA5C2E /* NavigatorGamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorGamepad.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A4BB0F1954D62700FA5C2E /* NavigatorGamepad.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorGamepad.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                51A9D9E5195B8F47001B2B5C /* GamepadStrategyClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadStrategyClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 51A9D9E7195B931F001B2B5C /* GamepadManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GamepadManager.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A9D9E8195B931F001B2B5C /* GamepadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GamepadManager.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A9D9EF195B9503001B2B5C /* HIDGamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepad.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51A9D9F0195B9503001B2B5C /* HIDGamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepad.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                51A9D9F1195B9503001B2B5C /* HIDGamepadListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HIDGamepadListener.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                51A9D9F2195B9503001B2B5C /* HIDGamepadListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HIDGamepadListener.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceLoaderMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51ABAE1A103C18FF008C5260 /* SocketStreamError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamError.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51ABAE1C103C1913008C5260 /* SocketStreamHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketStreamHandle.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 &quot;config.h&quot;
+#include &quot;GamepadProvider.h&quot;
+
+#if ENABLE(GAMEPAD)
+
+#include &lt;wtf/NeverDestroyed.h&gt;
+
+namespace WebCore {
+
+static GamepadProvider* sharedProvider = nullptr;
+
+GamepadProvider&amp; GamepadProvider::shared()
+{
+    if (!sharedProvider) {
+        static NeverDestroyed&lt;GamepadProvider&gt; defaultProvider;
+        sharedProvider = &amp;defaultProvider.get();
+    }
+
+    return *sharedProvider;
+}
+
+void GamepadProvider::setSharedProvider(GamepadProvider&amp; newProvider)
+{
+    sharedProvider = &amp;newProvider;
+}
+
+void GamepadProvider::startMonitoringGamepads(GamepadProviderClient*)
+{
+}
+
+void GamepadProvider::stopMonitoringGamepads(GamepadProviderClient*)
+{
+}
+
+const Vector&lt;PlatformGamepad*&gt;&amp; GamepadProvider::platformGamepads()
+{
+    static NeverDestroyed&lt;Vector&lt;PlatformGamepad*&gt;&gt; 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 &lt;wtf/Vector.h&gt;
+
+namespace WebCore {
+
+class GamepadProviderClient;
+class PlatformGamepad;
+
+class GamepadProvider {
+public:
+    virtual ~GamepadProvider() { }
+
+    static GamepadProvider&amp; shared();
+    static void setSharedProvider(GamepadProvider&amp;);
+
+    virtual void startMonitoringGamepads(GamepadProviderClient*);
+    virtual void stopMonitoringGamepads(GamepadProviderClient*);
+    virtual const Vector&lt;PlatformGamepad*&gt;&amp; 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&lt;PlatformGamepad*&gt;&amp; 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 &quot;config.h&quot;
-#include &quot;HIDGamepadListener.h&quot;
-
-#if ENABLE(GAMEPAD)
-
-#include &quot;PlatformGamepad.h&quot;
-#include &lt;wtf/MainThread.h&gt;
-
-namespace WebCore {
-
-static RetainPtr&lt;CFDictionaryRef&gt; deviceMatchingDictionary(uint32_t usagePage, uint32_t usage)
-{
-    ASSERT(usagePage);
-    ASSERT(usage);
-
-    RetainPtr&lt;CFNumberRef&gt; pageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;usagePage));
-    RetainPtr&lt;CFNumberRef&gt; usageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;usage));
-
-    CFStringRef keys[] = { CFSTR(kIOHIDDeviceUsagePageKey), CFSTR(kIOHIDDeviceUsageKey) };
-    CFNumberRef values[] = { pageNumber.get(), usageNumber.get() };
-
-    return adoptCF(CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)values, 2, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
-}
-
-static void deviceAddedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
-{
-    HIDGamepadListener* listener = static_cast&lt;HIDGamepadListener*&gt;(context);
-    listener-&gt;deviceAdded(device);
-}
-
-static void deviceRemovedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
-{
-    HIDGamepadListener* listener = static_cast&lt;HIDGamepadListener*&gt;(context);
-    listener-&gt;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&lt;HIDGamepadListener*&gt;(context);
-    listener-&gt;valuesChanged(value);
-}
-
-HIDGamepadListener&amp; HIDGamepadListener::shared()
-{
-    static NeverDestroyed&lt;HIDGamepadListener&gt; sharedListener;
-    return sharedListener;
-}
-
-HIDGamepadListener::HIDGamepadListener()
-    : m_client(nullptr)
-    , m_shouldDispatchCallbacks(false)
-{
-    m_manager = adoptCF(IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone));
-
-    RetainPtr&lt;CFDictionaryRef&gt; joystickDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick);
-    RetainPtr&lt;CFDictionaryRef&gt; gamepadDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad);
-
-    CFDictionaryRef devices[] = { joystickDictionary.get(), gamepadDictionary.get() };
-
-    RetainPtr&lt;CFArrayRef&gt; matchingArray = adoptCF(CFArrayCreate(kCFAllocatorDefault, (const void**)devices, 2, &amp;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 &lt; m_gamepadVector.size() &amp;&amp; m_gamepadVector[index])
-        ++index;
-
-    return index;
-}
-
-void HIDGamepadListener::deviceAdded(IOHIDDeviceRef device)
-{
-    ASSERT(!m_gamepadMap.get(device));
-
-    std::unique_ptr&lt;HIDGamepad&gt; gamepad = std::make_unique&lt;HIDGamepad&gt;(device);
-    unsigned index = indexForNewlyConnectedDevice();
-
-    if (m_gamepadVector.size() &lt;= index)
-        m_gamepadVector.resize(index + 1);
-
-    m_gamepadVector[index] = gamepad.get();
-    m_gamepadMap.set(device, std::move(gamepad));
-
-    if (m_client &amp;&amp; m_shouldDispatchCallbacks)
-        m_client-&gt;gamepadConnected(index);
-}
-
-void HIDGamepadListener::deviceRemoved(IOHIDDeviceRef device)
-{
-    std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt; removedGamepad = removeGamepadForDevice(device);
-    ASSERT(removedGamepad.first);
-
-    if (m_client &amp;&amp; m_shouldDispatchCallbacks)
-        m_client-&gt;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-&gt;valueChanged(value);
-}
-
-std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt;  HIDGamepadListener::removeGamepadForDevice(IOHIDDeviceRef device)
-{
-    std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt; result;
-    result.first = m_gamepadMap.take(device);
-    ASSERT(result.first);
-
-    for (unsigned i = 0; i &lt; 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 &quot;HIDGamepad.h&quot;
-#include &lt;IOKit/hid/IOHIDManager.h&gt;
-#include &lt;wtf/Deque.h&gt;
-#include &lt;wtf/HashMap.h&gt;
-#include &lt;wtf/NeverDestroyed.h&gt;
-#include &lt;wtf/RetainPtr.h&gt;
-
-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&lt;HIDGamepadListener&gt;;
-public:
-    static HIDGamepadListener&amp; shared();
-
-    void setClient(HIDGamepadListenerClient* client) { m_client = client; }
-
-    void deviceAdded(IOHIDDeviceRef);
-    void deviceRemoved(IOHIDDeviceRef);
-    void valuesChanged(IOHIDValueRef);
-
-    const Vector&lt;PlatformGamepad*&gt;&amp; platformGamepads() const { return m_gamepadVector; }
-
-    void setShouldDispatchCallbacks(bool shouldDispatchCallbacks) { m_shouldDispatchCallbacks = shouldDispatchCallbacks; }
-
-private:
-    HIDGamepadListener();
-
-    std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt; removeGamepadForDevice(IOHIDDeviceRef);
-
-    unsigned indexForNewlyConnectedDevice();
-
-    Vector&lt;PlatformGamepad*&gt; m_gamepadVector;
-    HashMap&lt;IOHIDDeviceRef, std::unique_ptr&lt;HIDGamepad&gt;&gt; m_gamepadMap;
-
-    RetainPtr&lt;IOHIDManagerRef&gt; 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 &quot;config.h&quot;
+#include &quot;HIDGamepadProvider.h&quot;
+
+#if ENABLE(GAMEPAD)
+
+#include &quot;GamepadProviderClient.h&quot;
+#include &quot;PlatformGamepad.h&quot;
+#include &lt;wtf/MainThread.h&gt;
+
+namespace WebCore {
+
+static RetainPtr&lt;CFDictionaryRef&gt; deviceMatchingDictionary(uint32_t usagePage, uint32_t usage)
+{
+    ASSERT(usagePage);
+    ASSERT(usage);
+
+    RetainPtr&lt;CFNumberRef&gt; pageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;usagePage));
+    RetainPtr&lt;CFNumberRef&gt; usageNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &amp;usage));
+
+    CFStringRef keys[] = { CFSTR(kIOHIDDeviceUsagePageKey), CFSTR(kIOHIDDeviceUsageKey) };
+    CFNumberRef values[] = { pageNumber.get(), usageNumber.get() };
+
+    return adoptCF(CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)values, 2, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
+}
+
+static void deviceAddedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
+{
+    HIDGamepadProvider* listener = static_cast&lt;HIDGamepadProvider*&gt;(context);
+    listener-&gt;deviceAdded(device);
+}
+
+static void deviceRemovedCallback(void* context, IOReturn, void*, IOHIDDeviceRef device)
+{
+    HIDGamepadProvider* listener = static_cast&lt;HIDGamepadProvider*&gt;(context);
+    listener-&gt;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&lt;HIDGamepadProvider*&gt;(context);
+    listener-&gt;valuesChanged(value);
+}
+
+HIDGamepadProvider&amp; HIDGamepadProvider::shared()
+{
+    static NeverDestroyed&lt;HIDGamepadProvider&gt; sharedListener;
+    return sharedListener;
+}
+
+HIDGamepadProvider::HIDGamepadProvider()
+    : m_shouldDispatchCallbacks(false)
+{
+    m_manager = adoptCF(IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone));
+
+    RetainPtr&lt;CFDictionaryRef&gt; joystickDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick);
+    RetainPtr&lt;CFDictionaryRef&gt; gamepadDictionary = deviceMatchingDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad);
+
+    CFDictionaryRef devices[] = { joystickDictionary.get(), gamepadDictionary.get() };
+
+    RetainPtr&lt;CFArrayRef&gt; matchingArray = adoptCF(CFArrayCreate(kCFAllocatorDefault, (const void**)devices, 2, &amp;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 &lt; m_gamepadVector.size() &amp;&amp; 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&lt;HIDGamepad&gt; gamepad = std::make_unique&lt;HIDGamepad&gt;(device);
+    unsigned index = indexForNewlyConnectedDevice();
+
+    if (m_gamepadVector.size() &lt;= index)
+        m_gamepadVector.resize(index + 1);
+
+    m_gamepadVector[index] = gamepad.get();
+    m_gamepadMap.set(device, std::move(gamepad));
+
+    if (!m_shouldDispatchCallbacks)
+        return;
+
+    for (auto&amp; client : m_clients)
+        client-&gt;platformGamepadConnected(index);
+}
+
+void HIDGamepadProvider::deviceRemoved(IOHIDDeviceRef device)
+{
+    std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt; removedGamepad = removeGamepadForDevice(device);
+    ASSERT(removedGamepad.first);
+
+    if (!m_shouldDispatchCallbacks)
+        return;
+
+    for (auto&amp; client : m_clients)
+        client-&gt;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-&gt;valueChanged(value);
+}
+
+std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt;  HIDGamepadProvider::removeGamepadForDevice(IOHIDDeviceRef device)
+{
+    std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt; result;
+    result.first = m_gamepadMap.take(device);
+    ASSERT(result.first);
+
+    for (unsigned i = 0; i &lt; 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 &quot;GamepadProvider.h&quot;
+#include &quot;HIDGamepad.h&quot;
+#include &lt;IOKit/hid/IOHIDManager.h&gt;
+#include &lt;wtf/Deque.h&gt;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/HashSet.h&gt;
+#include &lt;wtf/NeverDestroyed.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+namespace WebCore {
+
+class GamepadProviderClient;
+
+class HIDGamepadProvider : public GamepadProvider {
+    WTF_MAKE_NONCOPYABLE(HIDGamepadProvider);
+    friend class NeverDestroyed&lt;HIDGamepadProvider&gt;;
+public:
+    static HIDGamepadProvider&amp; shared();
+
+    virtual void startMonitoringGamepads(GamepadProviderClient*);
+    virtual void stopMonitoringGamepads(GamepadProviderClient*);
+    virtual const Vector&lt;PlatformGamepad*&gt;&amp; platformGamepads() { return m_gamepadVector; }
+
+    void deviceAdded(IOHIDDeviceRef);
+    void deviceRemoved(IOHIDDeviceRef);
+    void valuesChanged(IOHIDValueRef);
+
+    void setShouldDispatchCallbacks(bool shouldDispatchCallbacks) { m_shouldDispatchCallbacks = shouldDispatchCallbacks; }
+
+private:
+    HIDGamepadProvider();
+
+    std::pair&lt;std::unique_ptr&lt;HIDGamepad&gt;, unsigned&gt; removeGamepadForDevice(IOHIDDeviceRef);
+
+    unsigned indexForNewlyConnectedDevice();
+
+    Vector&lt;PlatformGamepad*&gt; m_gamepadVector;
+    HashMap&lt;IOHIDDeviceRef, std::unique_ptr&lt;HIDGamepad&gt;&gt; m_gamepadMap;
+
+    RetainPtr&lt;IOHIDManagerRef&gt; m_manager;
+
+    HashSet&lt;GamepadProviderClient*&gt; 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  &lt;beidson@apple.com&gt;
+
+        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  &lt;bfulgham@apple.com&gt;
</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 = &quot;&lt;group&gt;&quot;; 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 = &quot;&lt;group&gt;&quot;; 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 = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
</span><del>-                51A9D9EB195B949F001B2B5C /* WebHIDGamepadController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHIDGamepadController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                51A9D9EC195B949F001B2B5C /* WebHIDGamepadController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebHIDGamepadController.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 51AEDEF00CECF45700854328 /* WebDatabaseManagerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDatabaseManagerInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51B2A0FF0ADB15D0002A9BEE /* WebIconDatabaseDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIconDatabaseDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 51C714FA0B20F79F00E5E33C /* WebBackForwardListInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardListInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</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  &lt;beidson@apple.com&gt;
+
+        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  &lt;pecoraro@apple.com&gt;
</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 &lt;WebCore/HIDGamepadListener.h&gt;
-#include &lt;wtf/HashSet.h&gt;
-
-namespace WebCore {
-class GamepadStrategyClient;
-}
-
-class WebHIDGamepadController : public WebCore::HIDGamepadListenerClient {
-public:
-    static WebHIDGamepadController&amp; 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&lt;WebHIDGamepadController&gt;;
-
-    WebHIDGamepadController();
-
-    HashSet&lt;WebCore::GamepadStrategyClient*&gt; 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 &quot;WebHIDGamepadController.h&quot;
-#import &lt;WebCore/GamepadStrategyClient.h&gt;
-#import &lt;WebCore/HIDGamepadListener.h&gt;
-
-using namespace WebCore;
-
-WebHIDGamepadController&amp; WebHIDGamepadController::shared()
-{
-    static NeverDestroyed&lt;WebHIDGamepadController&gt; sharedClient;
-    return sharedClient;
-}
-
-WebHIDGamepadController::WebHIDGamepadController()
-{
-    HIDGamepadListener::shared().setClient(this);
-}
-
-void WebHIDGamepadController::gamepadConnected(unsigned index)
-{
-    for (auto&amp; client : m_clients)
-        client-&gt;platformGamepadConnected(index);
-}
-
-void WebHIDGamepadController::gamepadDisconnected(unsigned index)
-{
-    for (auto&amp; client : m_clients)
-        client-&gt;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 &lt;WebCore/SharedWorkerStrategy.h&gt;
</span><span class="cx"> #include &lt;WebCore/StorageStrategy.h&gt;
</span><span class="cx"> 
</span><del>-#if ENABLE(GAMEPAD)
-#include &lt;WebCore/GamepadStrategy.h&gt;
-#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&amp;, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;) override;
</span><span class="lines">@@ -112,13 +101,6 @@
</span><span class="cx">     virtual long setBufferForType(PassRefPtr&lt;WebCore::SharedBuffer&gt;, const String&amp; pasteboardType, const String&amp; pasteboardName) override;
</span><span class="cx">     virtual long setPathnamesForType(const Vector&lt;String&gt;&amp;, const String&amp; pasteboardType, const String&amp; pasteboardName) override;
</span><span class="cx">     virtual long setStringForType(const String&amp;, const String&amp; pasteboardType, const String&amp; pasteboardName) override;
</span><del>-
-#if ENABLE(GAMEPAD)
-    // WebCore::GamepadStrategy
-    virtual void startMonitoringGamepads(WebCore::GamepadStrategyClient*) override;
-    virtual void stopMonitoringGamepads(WebCore::GamepadStrategyClient*) override;
-    virtual const Vector&lt;WebCore::PlatformGamepad*&gt;&amp; 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 &lt;WebKitSystemInterface.h&gt;
</span><span class="cx"> #import &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><del>-#if ENABLE(GAMEPAD)
-#import &quot;WebHIDGamepadController.h&quot;
-#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&amp; session, const URL&amp; firstParty, const URL&amp; 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&lt;PlatformGamepad*&gt;&amp; 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&amp; 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 &lt;WebCore/DiskImageCacheIOS.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(GAMEPAD)
+#import &lt;WebCore/HIDGamepadProvider.h&gt;
+#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) &amp;&amp; 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  &lt;beidson@apple.com&gt;
+
+        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  &lt;bfulgham@apple.com&gt;
</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&amp; session, const URL&amp; firstParty, const URL&amp; 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&amp;, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;);
</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  &lt;beidson@apple.com&gt;
+
+        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  &lt;mitz@apple.com&gt;
</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&amp; session, const URL&amp; firstParty, const URL&amp; 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&lt;PlatformGamepad*&gt;&amp; WebPlatformStrategies::platformGamepads()
-{
-    NeverDestroyed&lt;Vector&lt;PlatformGamepad*&gt;&gt; dummyGamepads;
-    return dummyGamepads;
-}
-#endif // ENABLE(GAMEPAD)
-
</del><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> void WebPlatformStrategies::writeToPasteboard(const WebCore::PasteboardWebContent&amp; 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 &lt;WebCore/StorageStrategy.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><del>-#if ENABLE(GAMEPAD)
-#include &lt;WebCore/GamepadStrategy.h&gt;
-#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&lt;WebPlatformStrategies&gt;;
</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&amp;, const WebCore::URL&amp; firstParty, const WebCore::URL&amp;) override;
</span><span class="lines">@@ -138,13 +127,6 @@
</span><span class="cx">     Vector&lt;WebCore::PluginInfo&gt; m_cachedPlugins;
</span><span class="cx">     Vector&lt;WebCore::PluginInfo&gt; 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&lt;WebCore::PlatformGamepad*&gt;&amp; 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>