Changeset 204222 in webkit


Ignore:
Timestamp:
Aug 6, 2016 1:00:20 AM (8 years ago)
Author:
beidson@apple.com
Message:

Lay WebProcess/UIProcess groundwork for an IPC GamepadProvider.
https://bugs.webkit.org/show_bug.cgi?id=160605

Reviewed by Alex Christensen.

This patch:

  • Introduces the GamepadProvider that the WebProcess will use (WebGamepadProvider)
  • Has that provider message to the UIProcess notifying interest in gamepad state
  • Introduces a GamepadProviderClient in the UIProcess (UIGamepadProvider) that will use one of the existing GamepadProviders to pass gamepad state along to WebProcesses.
  • Adds an empty skeleton for the soon-to-be-used WebGamepad, which will be the "PlatformGamepad" for WebProcesses.
  • CMakeLists.txt:
  • WebKit2.xcodeproj/project.pbxproj:
  • UIProcess/Gamepads/UIGamepadProvider.cpp: Added.

(WebKit::UIGamepadProvider::singleton):
(WebKit::UIGamepadProvider::UIGamepadProvider):
(WebKit::UIGamepadProvider::~UIGamepadProvider):
(WebKit::UIGamepadProvider::platformGamepadConnected):
(WebKit::UIGamepadProvider::platformGamepadDisconnected):
(WebKit::UIGamepadProvider::platformGamepadInputActivity):
(WebKit::UIGamepadProvider::processPoolStartedUsingGamepads):
(WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads):
(WebKit::UIGamepadProvider::platformStartMonitoringGamepads):
(WebKit::UIGamepadProvider::platformStopMonitoringGamepads):

  • UIProcess/Gamepads/UIGamepadProvider.h: Added.
  • UIProcess/Gamepads/mac/UIGamepadProviderHID.cpp: Added.

(WebKit::UIGamepadProvider::platformStartMonitoringGamepads):
(WebKit::UIGamepadProvider::platformStopMonitoringGamepads):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::startedUsingGamepads):
(WebKit::WebProcessPool::stoppedUsingGamepads):
(WebKit::WebProcessPool::processStoppedUsingGamepads):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessPool.messages.in:
  • WebProcess/Gamepad/WebGamepad.cpp: Added.
  • WebProcess/Gamepad/WebGamepad.h: Added.
  • WebProcess/Gamepad/WebGamepadProvider.cpp: Added.

(WebKit::WebGamepadProvider::singleton):
(WebKit::WebGamepadProvider::WebGamepadProvider):
(WebKit::WebGamepadProvider::~WebGamepadProvider):
(WebKit::WebGamepadProvider::startMonitoringGamepads):
(WebKit::WebGamepadProvider::stopMonitoringGamepads):
(WebKit::WebGamepadProvider::platformGamepads):

  • WebProcess/Gamepad/WebGamepadProvider.h: Added.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

Location:
trunk/Source/WebKit2
Files:
10 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/CMakeLists.txt

    r204208 r204222  
    3535    "${WEBKIT2_DIR}/UIProcess/Databases"
    3636    "${WEBKIT2_DIR}/UIProcess/Downloads"
     37    "${WEBKIT2_DIR}/UIProcess/Gamepad"
    3738    "${WEBKIT2_DIR}/UIProcess/InspectorServer"
    3839    "${WEBKIT2_DIR}/UIProcess/Launcher"
     
    5455    "${WEBKIT2_DIR}/WebProcess/FileAPI"
    5556    "${WEBKIT2_DIR}/WebProcess/FullScreen"
     57    "${WEBKIT2_DIR}/WebProcess/Gamepad"
    5658    "${WEBKIT2_DIR}/WebProcess/Geolocation"
    5759    "${WEBKIT2_DIR}/WebProcess/IconDatabase"
     
    479481    UIProcess/Downloads/DownloadProxyMap.cpp
    480482
     483    UIProcess/Gamepad/UIGamepadProvider.cpp
     484
    481485    UIProcess/InspectorServer/HTTPRequest.cpp
    482486    UIProcess/InspectorServer/WebInspectorServer.cpp
     
    525529
    526530    WebProcess/FullScreen/WebFullScreenManager.cpp
     531
     532    WebProcess/Gamepad/WebGamepad.cpp
     533    WebProcess/Gamepad/WebGamepadProvider.cpp
    527534
    528535    WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp
  • trunk/Source/WebKit2/ChangeLog

    r204208 r204222  
     12016-08-06  Brady Eidson  <beidson@apple.com>
     2
     3        Lay WebProcess/UIProcess groundwork for an IPC GamepadProvider.
     4        https://bugs.webkit.org/show_bug.cgi?id=160605
     5
     6        Reviewed by Alex Christensen.
     7
     8        This patch:
     9          - Introduces the GamepadProvider that the WebProcess will use (WebGamepadProvider)
     10          - Has that provider message to the UIProcess notifying interest in gamepad state
     11          - Introduces a GamepadProviderClient in the UIProcess (UIGamepadProvider) that will use
     12            one of the existing GamepadProviders to pass gamepad state along to WebProcesses.
     13          - Adds an empty skeleton for the soon-to-be-used WebGamepad, which will be the
     14            "PlatformGamepad" for WebProcesses.
     15
     16        * CMakeLists.txt:
     17        * WebKit2.xcodeproj/project.pbxproj:
     18
     19        * UIProcess/Gamepads/UIGamepadProvider.cpp: Added.
     20        (WebKit::UIGamepadProvider::singleton):
     21        (WebKit::UIGamepadProvider::UIGamepadProvider):
     22        (WebKit::UIGamepadProvider::~UIGamepadProvider):
     23        (WebKit::UIGamepadProvider::platformGamepadConnected):
     24        (WebKit::UIGamepadProvider::platformGamepadDisconnected):
     25        (WebKit::UIGamepadProvider::platformGamepadInputActivity):
     26        (WebKit::UIGamepadProvider::processPoolStartedUsingGamepads):
     27        (WebKit::UIGamepadProvider::processPoolStoppedUsingGamepads):
     28        (WebKit::UIGamepadProvider::platformStartMonitoringGamepads):
     29        (WebKit::UIGamepadProvider::platformStopMonitoringGamepads):
     30        * UIProcess/Gamepads/UIGamepadProvider.h: Added.
     31
     32        * UIProcess/Gamepads/mac/UIGamepadProviderHID.cpp: Added.
     33        (WebKit::UIGamepadProvider::platformStartMonitoringGamepads):
     34        (WebKit::UIGamepadProvider::platformStopMonitoringGamepads):
     35
     36        * UIProcess/WebProcessPool.cpp:
     37        (WebKit::WebProcessPool::~WebProcessPool):
     38        (WebKit::WebProcessPool::disconnectProcess):
     39        (WebKit::WebProcessPool::startedUsingGamepads):
     40        (WebKit::WebProcessPool::stoppedUsingGamepads):
     41        (WebKit::WebProcessPool::processStoppedUsingGamepads):
     42        * UIProcess/WebProcessPool.h:
     43        * UIProcess/WebProcessPool.messages.in:
     44               
     45        * WebProcess/Gamepad/WebGamepad.cpp: Added.
     46        * WebProcess/Gamepad/WebGamepad.h: Added.
     47       
     48        * WebProcess/Gamepad/WebGamepadProvider.cpp: Added.
     49        (WebKit::WebGamepadProvider::singleton):
     50        (WebKit::WebGamepadProvider::WebGamepadProvider):
     51        (WebKit::WebGamepadProvider::~WebGamepadProvider):
     52        (WebKit::WebGamepadProvider::startMonitoringGamepads):
     53        (WebKit::WebGamepadProvider::stopMonitoringGamepads):
     54        (WebKit::WebGamepadProvider::platformGamepads):
     55        * WebProcess/Gamepad/WebGamepadProvider.h: Added.
     56        * WebProcess/WebProcess.cpp:
     57        (WebKit::WebProcess::initializeWebProcess):
     58
    1592016-08-05  Commit Queue  <commit-queue@webkit.org>
    260
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp

    r204208 r204222  
    4343#include "StatisticsData.h"
    4444#include "TextChecker.h"
     45#include "UIGamepadProvider.h"
    4546#include "WKContextPrivate.h"
    4647#include "WebAutomationSession.h"
     
    260261    if (m_networkProcess)
    261262        m_networkProcess->shutDownProcess();
     263
     264#if ENABLE(GAMEPAD)
     265    if (!m_processesUsingGamepads.isEmpty())
     266        UIGamepadProvider::singleton().processPoolStoppedUsingGamepads(*this);
     267#endif
    262268}
    263269
     
    753759
    754760    m_processes.removeFirst(process);
     761
     762#if ENABLE(GAMEPAD)
     763    if (m_processesUsingGamepads.contains(process))
     764        processStoppedUsingGamepads(process);
     765#endif
    755766}
    756767
     
    12321243}
    12331244
     1245#if ENABLE(GAMEPAD)
     1246
     1247void WebProcessPool::startedUsingGamepads(IPC::Connection& connection)
     1248{
     1249    auto* webProcessProxy = WebProcessProxy::fromConnection(&connection);
     1250    if (!webProcessProxy)
     1251        return;
     1252
     1253    ASSERT(!m_processesUsingGamepads.contains(webProcessProxy));
     1254    m_processesUsingGamepads.add(webProcessProxy);
     1255
     1256    if (m_processesUsingGamepads.size() == 1)
     1257        UIGamepadProvider::singleton().processPoolStartedUsingGamepads(*this);
     1258}
     1259
     1260void WebProcessPool::stoppedUsingGamepads(IPC::Connection& connection)
     1261{
     1262    auto* webProcessProxy = WebProcessProxy::fromConnection(&connection);
     1263    if (!webProcessProxy)
     1264        return;
     1265
     1266    ASSERT(m_processesUsingGamepads.contains(webProcessProxy));
     1267    processStoppedUsingGamepads(webProcessProxy);
     1268}
     1269
     1270void WebProcessPool::processStoppedUsingGamepads(WebProcessProxy* webProcessProxy)
     1271{
     1272    ASSERT(m_processesUsingGamepads.contains(webProcessProxy));
     1273    m_processesUsingGamepads.remove(webProcessProxy);
     1274
     1275    if (m_processesUsingGamepads.isEmpty())
     1276        UIGamepadProvider::singleton().processPoolStoppedUsingGamepads(*this);
     1277}
     1278
     1279#endif // ENABLE(GAMEPAD)
     1280
    12341281void WebProcessPool::garbageCollectJavaScriptObjects()
    12351282{
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.h

    r204208 r204222  
    388388    void didGetStatistics(const StatisticsData&, uint64_t callbackID);
    389389
     390#if ENABLE(GAMEPAD)
     391    void startedUsingGamepads(IPC::Connection&);
     392    void stoppedUsingGamepads(IPC::Connection&);
     393
     394    void processStoppedUsingGamepads(WebProcessProxy*);
     395
     396    HashSet<WebProcessProxy*> m_processesUsingGamepads;
     397#endif
     398
    390399    // IPC::MessageReceiver.
    391400    // Implemented in generated WebProcessPoolMessageReceiver.cpp
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.messages.in

    r204208 r204222  
    2727    DidGetStatistics(struct WebKit::StatisticsData statisticsData, uint64_t callbackID)
    2828
     29#if ENABLE(GAMEPAD)
     30    StartedUsingGamepads() WantsConnection
     31    StoppedUsingGamepads() WantsConnection
     32#endif
     33
    2934    # Plug-in messages.
    3035    void AddPlugInAutoStartOriginHash(String pageOrigin, uint32_t hash, WebCore::SessionID sessionID)
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r204208 r204222  
    937937                514D9F5819119D35000063A7 /* ServicesController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514D9F5619119D35000063A7 /* ServicesController.mm */; };
    938938                51578B831209ECEF00A37C4A /* APIData.h in Headers */ = {isa = PBXBuildFile; fileRef = 51578B821209ECEF00A37C4A /* APIData.h */; };
     939                515BE1771D53FE8700DD7C68 /* WebGamepadProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515BE1731D53FDDC00DD7C68 /* WebGamepadProvider.cpp */; };
     940                515BE1791D53FE8F00DD7C68 /* WebGamepadProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 515BE1741D53FDDC00DD7C68 /* WebGamepadProvider.h */; };
     941                515BE1A71D55293400DD7C68 /* UIGamepadProviderHID.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515BE1A61D55293000DD7C68 /* UIGamepadProviderHID.cpp */; };
     942                515BE1A81D55293400DD7C68 /* UIGamepadProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515BE1A41D55292800DD7C68 /* UIGamepadProvider.cpp */; };
     943                515BE1A91D55293400DD7C68 /* UIGamepadProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 515BE1A51D55292800DD7C68 /* UIGamepadProvider.h */; };
    939944                515E7727183DD6F60007203F /* AsyncRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515E7725183DD6F60007203F /* AsyncRequest.cpp */; };
    940945                515E7728183DD6F60007203F /* AsyncRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 515E7726183DD6F60007203F /* AsyncRequest.h */; };
     
    29762981                514D9F5619119D35000063A7 /* ServicesController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ServicesController.mm; sourceTree = "<group>"; };
    29772982                51578B821209ECEF00A37C4A /* APIData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIData.h; sourceTree = "<group>"; };
     2983                515BE1731D53FDDC00DD7C68 /* WebGamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebGamepadProvider.cpp; sourceTree = "<group>"; };
     2984                515BE1741D53FDDC00DD7C68 /* WebGamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGamepadProvider.h; sourceTree = "<group>"; };
     2985                515BE19F1D550AB000DD7C68 /* WebGamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebGamepad.cpp; sourceTree = "<group>"; };
     2986                515BE1A01D550AB000DD7C68 /* WebGamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGamepad.h; sourceTree = "<group>"; };
     2987                515BE1A41D55292800DD7C68 /* UIGamepadProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UIGamepadProvider.cpp; sourceTree = "<group>"; };
     2988                515BE1A51D55292800DD7C68 /* UIGamepadProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIGamepadProvider.h; sourceTree = "<group>"; };
     2989                515BE1A61D55293000DD7C68 /* UIGamepadProviderHID.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UIGamepadProviderHID.cpp; path = UIProcess/Gamepad/mac/UIGamepadProviderHID.cpp; sourceTree = SOURCE_ROOT; };
    29782990                515E7725183DD6F60007203F /* AsyncRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AsyncRequest.cpp; sourceTree = "<group>"; };
    29792991                515E7726183DD6F60007203F /* AsyncRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncRequest.h; sourceTree = "<group>"; };
     
    54705482                        sourceTree = "<group>";
    54715483                };
     5484                515BE1721D53FDB900DD7C68 /* Gamepad */ = {
     5485                        isa = PBXGroup;
     5486                        children = (
     5487                                515BE19F1D550AB000DD7C68 /* WebGamepad.cpp */,
     5488                                515BE1A01D550AB000DD7C68 /* WebGamepad.h */,
     5489                                515BE1731D53FDDC00DD7C68 /* WebGamepadProvider.cpp */,
     5490                                515BE1741D53FDDC00DD7C68 /* WebGamepadProvider.h */,
     5491                        );
     5492                        path = Gamepad;
     5493                        sourceTree = "<group>";
     5494                };
     5495                515BE17B1D54EF5A00DD7C68 /* Gamepad */ = {
     5496                        isa = PBXGroup;
     5497                        children = (
     5498                                515BE1A11D5523B300DD7C68 /* mac */,
     5499                                515BE1A41D55292800DD7C68 /* UIGamepadProvider.cpp */,
     5500                                515BE1A51D55292800DD7C68 /* UIGamepadProvider.h */,
     5501                        );
     5502                        path = Gamepad;
     5503                        sourceTree = "<group>";
     5504                };
     5505                515BE1A11D5523B300DD7C68 /* mac */ = {
     5506                        isa = PBXGroup;
     5507                        children = (
     5508                                515BE1A61D55293000DD7C68 /* UIGamepadProviderHID.cpp */,
     5509                        );
     5510                        name = mac;
     5511                        path = UIProcess/Gamepad/mac;
     5512                        sourceTree = "<group>";
     5513                };
    54725514                516319931628980E00E22F00 /* mac */ = {
    54735515                        isa = PBXGroup;
     
    58145856                                E170876D16D6CA7200F99226 /* FileAPI */,
    58155857                                CD73BA3D131A2A2100EEDED2 /* FullScreen */,
     5858                                515BE1721D53FDB900DD7C68 /* Gamepad */,
    58165859                                BC0E5FCB12D696DD0012A72A /* Geolocation */,
    58175860                                51FBB9C1132E079200F327B4 /* IconDatabase */,
     
    59515994                                1ABC3DF21899E415004F0626 /* Cocoa */,
    59525995                                1AB7D4C71288AA9A00CFD08C /* Downloads */,
     5996                                515BE17B1D54EF5A00DD7C68 /* Gamepad */,
    59535997                                2DA944A81884E9AB00ED86DB /* ios */,
    59545998                                BC111B18112F5FB400337BAB /* Launcher */,
     
    75197563                                2DA049B8180CCD0A00AAFA9E /* GraphicsLayerCARemote.h in Headers */,
    75207564                                C0CE72AD1247E78D00BC0EC4 /* HandleMessage.h in Headers */,
     7565                                515BE1A91D55293400DD7C68 /* UIGamepadProvider.h in Headers */,
    75217566                                1AC75A1B1B3368270056745B /* HangDetectionDisabler.h in Headers */,
    75227567                                37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */,
     
    80268071                                1AF4592F19464B2000F9D4A2 /* WKError.h in Headers */,
    80278072                                BCFD548C132D82680055D816 /* WKErrorCF.h in Headers */,
     8073                                515BE1791D53FE8F00DD7C68 /* WebGamepadProvider.h in Headers */,
    80288074                                37B5045219EEF31300CE2CF8 /* WKErrorPrivate.h in Headers */,
    80298075                                BC4075FC124FF0270068F20A /* WKErrorRef.h in Headers */,
     
    91779223                                E1790890169BAA7F006904C7 /* SecItemShimMessageReceiver.cpp in Sources */,
    91789224                                E18E690B169B563F009B6670 /* SecItemShimProxy.cpp in Sources */,
     9225                                515BE1A71D55293400DD7C68 /* UIGamepadProviderHID.cpp in Sources */,
    91799226                                E18E6917169B667B009B6670 /* SecItemShimProxyMessageReceiver.cpp in Sources */,
    91809227                                514D9F5819119D35000063A7 /* ServicesController.mm in Sources */,
     
    91979244                                1AB31A9616BC688100F6DBC9 /* StorageManagerMessageReceiver.cpp in Sources */,
    91989245                                1A44B95716B737AA00B7BBD8 /* StorageNamespaceImpl.cpp in Sources */,
     9246                                515BE1771D53FE8700DD7C68 /* WebGamepadProvider.cpp in Sources */,
    91999247                                1AE00D6B18327C1200087DD7 /* StringReference.cpp in Sources */,
    92009248                                296BD85E15019BC30071F424 /* StringUtilities.mm in Sources */,
     
    92459293                                7C4ABED41AA8FCB80088AA37 /* WebCompiledContentExtensionData.cpp in Sources */,
    92469294                                BC4A628F147312BE006C681A /* WebConnection.cpp in Sources */,
     9295                                515BE1A81D55293400DD7C68 /* UIGamepadProvider.cpp in Sources */,
    92479296                                BC4A6291147312BE006C681A /* WebConnectionClient.cpp in Sources */,
    92489297                                1A1FEC1C1627B45700700F6D /* WebConnectionMessageReceiver.cpp in Sources */,
  • trunk/Source/WebKit2/WebProcess/WebProcess.cpp

    r204208 r204222  
    4848#include "WebFrame.h"
    4949#include "WebFrameNetworkingContext.h"
     50#include "WebGamepadProvider.h"
    5051#include "WebGeolocationManager.h"
    5152#include "WebIconDatabaseProxy.h"
     
    401402    }
    402403#endif
     404
     405#if ENABLE(GAMEPAD)
     406    GamepadProvider::singleton().setSharedProvider(WebGamepadProvider::singleton());
     407#endif
    403408}
    404409
Note: See TracChangeset for help on using the changeset viewer.