Changeset 211007 in webkit


Ignore:
Timestamp:
Jan 20, 2017 6:24:17 PM (7 years ago)
Author:
beidson@apple.com
Message:

Require a button press on a gamepad for them to be exposed to the DOM.
<rdar://problem/28620919> and https://bugs.webkit.org/show_bug.cgi?id=167272

Reviewed by Alex Christensen.

Source/WebCore:

Test: gamepad/gamepad-visibility-1.html

  • Modules/gamepad/GamepadManager.cpp:

(WebCore::GamepadManager::platformGamepadInputActivity):

  • Modules/gamepad/GamepadManager.h:
  • platform/gamepad/GamepadProvider.cpp:

(WebCore::GamepadProvider::dispatchPlatformGamepadInputActivity):

  • platform/gamepad/GamepadProvider.h:

(WebCore::GamepadProvider::~GamepadProvider): Deleted.
(WebCore::GamepadProvider::isMockGamepadProvider): Deleted.

  • platform/gamepad/GamepadProviderClient.h:
  • platform/gamepad/cocoa/GameControllerGamepad.h:
  • platform/gamepad/cocoa/GameControllerGamepad.mm:

(WebCore::GameControllerGamepad::setupAsExtendedGamepad):
(WebCore::GameControllerGamepad::setupAsGamepad):

  • platform/gamepad/cocoa/GameControllerGamepadProvider.h:
  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:

(WebCore::GameControllerGamepadProvider::gamepadHadInput):
(WebCore::GameControllerGamepadProvider::inputNotificationTimerFired):

  • platform/gamepad/mac/HIDGamepad.cpp:

(WebCore::HIDGamepad::valueChanged):

  • platform/gamepad/mac/HIDGamepad.h:
  • platform/gamepad/mac/HIDGamepadProvider.cpp:

(WebCore::HIDGamepadProvider::valuesChanged):
(WebCore::HIDGamepadProvider::inputNotificationTimerFired):

  • platform/gamepad/mac/HIDGamepadProvider.h:
  • testing/MockGamepadProvider.cpp:

(WebCore::MockGamepadProvider::setMockGamepadButtonValue):
(WebCore::MockGamepadProvider::gamepadInputActivity):

  • testing/MockGamepadProvider.h:

Source/WebKit2:

  • UIProcess/Gamepad/UIGamepadProvider.cpp:

(WebKit::UIGamepadProvider::gamepadSyncTimerFired):
(WebKit::UIGamepadProvider::platformGamepadInputActivity):

  • UIProcess/Gamepad/UIGamepadProvider.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::gamepadActivity):

  • UIProcess/WebPageProxy.h:
  • WebProcess/Gamepad/WebGamepadProvider.cpp:

(WebKit::WebGamepadProvider::gamepadActivity):

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

(WebKit::WebPage::gamepadActivity):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

LayoutTests:

  • gamepad/gamepad-visibility-1-expected.txt: Added.
  • gamepad/gamepad-visibility-1.html: Added.
Location:
trunk
Files:
2 added
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r211006 r211007  
     12017-01-20  Brady Eidson  <beidson@apple.com>
     2
     3        Require a button press on a gamepad for them to be exposed to the DOM.
     4        <rdar://problem/28620919> and https://bugs.webkit.org/show_bug.cgi?id=167272
     5
     6        Reviewed by Alex Christensen.
     7
     8        * gamepad/gamepad-visibility-1-expected.txt: Added.
     9        * gamepad/gamepad-visibility-1.html: Added.
     10
    1112017-01-20  Joseph Pecoraro  <pecoraro@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r211006 r211007  
     12017-01-20  Brady Eidson  <beidson@apple.com>
     2
     3        Require a button press on a gamepad for them to be exposed to the DOM.
     4        <rdar://problem/28620919> and https://bugs.webkit.org/show_bug.cgi?id=167272
     5
     6        Reviewed by Alex Christensen.
     7
     8        Test: gamepad/gamepad-visibility-1.html
     9
     10        * Modules/gamepad/GamepadManager.cpp:
     11        (WebCore::GamepadManager::platformGamepadInputActivity):
     12        * Modules/gamepad/GamepadManager.h:
     13
     14        * platform/gamepad/GamepadProvider.cpp:
     15        (WebCore::GamepadProvider::dispatchPlatformGamepadInputActivity):
     16        * platform/gamepad/GamepadProvider.h:
     17        (WebCore::GamepadProvider::~GamepadProvider): Deleted.
     18        (WebCore::GamepadProvider::isMockGamepadProvider): Deleted.
     19
     20        * platform/gamepad/GamepadProviderClient.h:
     21
     22        * platform/gamepad/cocoa/GameControllerGamepad.h:
     23        * platform/gamepad/cocoa/GameControllerGamepad.mm:
     24        (WebCore::GameControllerGamepad::setupAsExtendedGamepad):
     25        (WebCore::GameControllerGamepad::setupAsGamepad):
     26
     27        * platform/gamepad/cocoa/GameControllerGamepadProvider.h:
     28        * platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
     29        (WebCore::GameControllerGamepadProvider::gamepadHadInput):
     30        (WebCore::GameControllerGamepadProvider::inputNotificationTimerFired):
     31
     32        * platform/gamepad/mac/HIDGamepad.cpp:
     33        (WebCore::HIDGamepad::valueChanged):
     34        * platform/gamepad/mac/HIDGamepad.h:
     35
     36        * platform/gamepad/mac/HIDGamepadProvider.cpp:
     37        (WebCore::HIDGamepadProvider::valuesChanged):
     38        (WebCore::HIDGamepadProvider::inputNotificationTimerFired):
     39        * platform/gamepad/mac/HIDGamepadProvider.h:
     40
     41        * testing/MockGamepadProvider.cpp:
     42        (WebCore::MockGamepadProvider::setMockGamepadButtonValue):
     43        (WebCore::MockGamepadProvider::gamepadInputActivity):
     44        * testing/MockGamepadProvider.h:
     45
    1462017-01-20  Joseph Pecoraro  <pecoraro@apple.com>
    247
  • trunk/Source/WebCore/Modules/gamepad/GamepadManager.cpp

    r205814 r211007  
    116116}
    117117
    118 void GamepadManager::platformGamepadInputActivity()
    119 {
     118void GamepadManager::platformGamepadInputActivity(bool shouldMakeGamepadVisible)
     119{
     120    if (!shouldMakeGamepadVisible)
     121        return;
     122
    120123    if (m_gamepadBlindNavigators.isEmpty() && m_gamepadBlindDOMWindows.isEmpty())
    121124        return;
  • trunk/Source/WebCore/Modules/gamepad/GamepadManager.h

    r208646 r211007  
    4848    void platformGamepadConnected(PlatformGamepad&) final;
    4949    void platformGamepadDisconnected(PlatformGamepad&) final;
    50     void platformGamepadInputActivity() final;
     50    void platformGamepadInputActivity(bool shouldMakeGamepadVisible) final;
    5151
    5252    void registerNavigator(NavigatorGamepad*);
  • trunk/Source/WebCore/platform/gamepad/GamepadProvider.cpp

    r204178 r211007  
    2929
    3030#include "EmptyGamepadProvider.h"
     31#include "GamepadProviderClient.h"
    3132#include <wtf/NeverDestroyed.h>
    3233
     
    5051}
    5152
     53void GamepadProvider::dispatchPlatformGamepadInputActivity()
     54{
     55    for (auto& client : m_clients)
     56        client->platformGamepadInputActivity(m_shouldMakeGamepadsVisible);
     57
     58    m_shouldMakeGamepadsVisible = false;
     59}
     60
    5261} // namespace WebCore
    5362
  • trunk/Source/WebCore/platform/gamepad/GamepadProvider.h

    r204853 r211007  
    2828#if ENABLE(GAMEPAD)
    2929
     30#include <wtf/HashSet.h>
    3031#include <wtf/Vector.h>
    3132
     
    3536class PlatformGamepad;
    3637
    37 class GamepadProvider {
     38class WEBCORE_EXPORT GamepadProvider {
    3839public:
    3940    virtual ~GamepadProvider() { }
     
    4748    virtual bool isMockGamepadProvider() const { return false; }
    4849
     50protected:
     51    void dispatchPlatformGamepadInputActivity();
     52    void setShouldMakeGamepadsVisibile() { m_shouldMakeGamepadsVisible = true; }
     53    HashSet<GamepadProviderClient*> m_clients;
     54
     55private:
     56    bool m_shouldMakeGamepadsVisible { false };
    4957};
    5058
  • trunk/Source/WebCore/platform/gamepad/GamepadProviderClient.h

    r204524 r211007  
    4141    virtual void platformGamepadConnected(PlatformGamepad&) = 0;
    4242    virtual void platformGamepadDisconnected(PlatformGamepad&) = 0;
    43     virtual void platformGamepadInputActivity() = 0;
     43    virtual void platformGamepadInputActivity(bool shouldMakeGamepadVisible) = 0;
    4444};
    4545
  • trunk/Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.h

    r205247 r211007  
    5959    RetainPtr<GCGamepad> m_gamepad;
    6060    RetainPtr<GCExtendedGamepad> m_extendedGamepad;
     61
     62    bool m_hadButtonPresses { false };
    6163};
    6264
  • trunk/Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm

    r205247 r211007  
    6060    m_extendedGamepad.get().valueChangedHandler = ^(GCExtendedGamepad *, GCControllerElement *) {
    6161        m_lastUpdateTime = monotonicallyIncreasingTime();
    62         GameControllerGamepadProvider::singleton().gamepadHadInput(*this);
     62        GameControllerGamepadProvider::singleton().gamepadHadInput(*this, m_hadButtonPresses);
     63        m_hadButtonPresses = false;
    6364    };
    6465
     
    8182    m_axisValues[5] = m_extendedGamepad.get().dpad.yAxis.value;
    8283
    83     m_extendedGamepad.get().buttonA.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     84    m_extendedGamepad.get().buttonA.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    8485        m_buttonValues[0] = value;
    85     };
    86     m_extendedGamepad.get().buttonB.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     86        if (pressed)
     87            m_hadButtonPresses = true;
     88    };
     89    m_extendedGamepad.get().buttonB.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    8790        m_buttonValues[1] = value;
    88     };
    89     m_extendedGamepad.get().buttonX.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     91        if (pressed)
     92            m_hadButtonPresses = true;
     93    };
     94    m_extendedGamepad.get().buttonX.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    9095        m_buttonValues[2] = value;
    91     };
    92     m_extendedGamepad.get().buttonY.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     96        if (pressed)
     97            m_hadButtonPresses = true;
     98    };
     99    m_extendedGamepad.get().buttonY.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    93100        m_buttonValues[3] = value;
    94     };
    95     m_extendedGamepad.get().leftShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     101        if (pressed)
     102            m_hadButtonPresses = true;
     103    };
     104    m_extendedGamepad.get().leftShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    96105        m_buttonValues[4] = value;
    97     };
    98     m_extendedGamepad.get().rightShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     106        if (pressed)
     107            m_hadButtonPresses = true;
     108    };
     109    m_extendedGamepad.get().rightShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    99110        m_buttonValues[5] = value;
    100     };
    101     m_extendedGamepad.get().leftTrigger.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     111        if (pressed)
     112            m_hadButtonPresses = true;
     113    };
     114    m_extendedGamepad.get().leftTrigger.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    102115        m_buttonValues[6] = value;
    103     };
    104     m_extendedGamepad.get().rightTrigger.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     116        if (pressed)
     117            m_hadButtonPresses = true;
     118    };
     119    m_extendedGamepad.get().rightTrigger.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    105120        m_buttonValues[7] = value;
     121        if (pressed)
     122            m_hadButtonPresses = true;
    106123    };
    107124
     
    134151    m_gamepad.get().valueChangedHandler = ^(GCGamepad *, GCControllerElement *) {
    135152        m_lastUpdateTime = monotonicallyIncreasingTime();
    136         GameControllerGamepadProvider::singleton().gamepadHadInput(*this);
     153        GameControllerGamepadProvider::singleton().gamepadHadInput(*this, m_hadButtonPresses);
     154        m_hadButtonPresses = false;
    137155    };
    138156
     
    149167    m_axisValues[1] = m_extendedGamepad.get().dpad.yAxis.value;
    150168
    151     m_extendedGamepad.get().buttonA.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     169    m_extendedGamepad.get().buttonA.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    152170        m_buttonValues[0] = value;
    153     };
    154     m_extendedGamepad.get().buttonB.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     171        if (pressed)
     172            m_hadButtonPresses = true;
     173    };
     174    m_extendedGamepad.get().buttonB.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    155175        m_buttonValues[1] = value;
    156     };
    157     m_extendedGamepad.get().buttonX.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     176        if (pressed)
     177            m_hadButtonPresses = true;
     178    };
     179    m_extendedGamepad.get().buttonX.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    158180        m_buttonValues[2] = value;
    159     };
    160     m_extendedGamepad.get().buttonY.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     181        if (pressed)
     182            m_hadButtonPresses = true;
     183    };
     184    m_extendedGamepad.get().buttonY.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    161185        m_buttonValues[3] = value;
    162     };
    163     m_extendedGamepad.get().leftShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     186        if (pressed)
     187            m_hadButtonPresses = true;
     188    };
     189    m_extendedGamepad.get().leftShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    164190        m_buttonValues[4] = value;
    165     };
    166     m_extendedGamepad.get().rightShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL) {
     191        if (pressed)
     192            m_hadButtonPresses = true;
     193    };
     194    m_extendedGamepad.get().rightShoulder.valueChangedHandler = ^(GCControllerButtonInput *, float value, BOOL pressed) {
    167195        m_buttonValues[5] = value;
     196        if (pressed)
     197            m_hadButtonPresses = true;
    168198    };
    169199
  • trunk/Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h

    r205247 r211007  
    3030#include "GamepadProvider.h"
    3131#include <wtf/HashMap.h>
    32 #include <wtf/HashSet.h>
    3332#include <wtf/NeverDestroyed.h>
    3433#include <wtf/RetainPtr.h>
     
    5655    WEBCORE_EXPORT void startMonitoringInput();
    5756
    58     void gamepadHadInput(GameControllerGamepad&);
     57    void gamepadHadInput(GameControllerGamepad&, bool hadButtonPresses);
    5958
    6059private:
     
    7574    void makeInvisibileGamepadsVisible();
    7675
    77     HashSet<GamepadProviderClient*> m_clients;
    78 
    7976    HashMap<GCController *, std::unique_ptr<GameControllerGamepad>> m_gamepadMap;
    8077    Vector<PlatformGamepad*> m_gamepadVector;
     
    8582
    8683    RunLoop::Timer<GameControllerGamepadProvider> m_inputNotificationTimer;
     84    bool m_shouldMakeInvisibileGamepadsVisible { false };
    8785};
    8886
  • trunk/Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm

    r205756 r211007  
    142142}
    143143
    144 void GameControllerGamepadProvider::gamepadHadInput(GameControllerGamepad&)
     144void GameControllerGamepadProvider::gamepadHadInput(GameControllerGamepad&, bool hadButtonPresses)
    145145{
    146146    if (!m_inputNotificationTimer.isActive())
    147147        m_inputNotificationTimer.startOneShot(InputNotificationDelay);
     148
     149    if (hadButtonPresses)
     150        m_shouldMakeInvisibileGamepadsVisible = true;
    148151}
    149152
     
    160163void GameControllerGamepadProvider::inputNotificationTimerFired()
    161164{
    162     makeInvisibileGamepadsVisible();
     165    if (m_shouldMakeInvisibileGamepadsVisible) {
     166        setShouldMakeGamepadsVisibile();
     167        makeInvisibileGamepadsVisible();
     168    }
    163169
    164     for (auto& client : m_clients)
    165         client->platformGamepadInputActivity();
     170    m_shouldMakeInvisibileGamepadsVisible = false;
     171
     172    dispatchPlatformGamepadInputActivity();
    166173}
    167174
  • trunk/Source/WebCore/platform/gamepad/mac/HIDGamepad.cpp

    r205247 r211007  
    159159}
    160160
    161 void HIDGamepad::valueChanged(IOHIDValueRef value)
     161HIDInputType HIDGamepad::valueChanged(IOHIDValueRef value)
    162162{
    163163    IOHIDElementCookie cookie = IOHIDElementGetCookie(IOHIDValueGetElement(value));
     
    166166    // This might be an element we don't currently handle as input so we can skip it.
    167167    if (!element)
    168         return;
     168        return HIDInputType::NotAButtonPress;
    169169
    170170    element->rawValue = IOHIDValueGetScaledValue(value, kIOHIDValueScaleTypePhysical);
     
    184184
    185185    m_lastUpdateTime = monotonicallyIncreasingTime();
     186
     187    return element->isButton() ? HIDInputType::ButtonPress : HIDInputType::NotAButtonPress;
    186188}
    187189
  • trunk/Source/WebCore/platform/gamepad/mac/HIDGamepad.h

    r205247 r211007  
    9292};
    9393
     94enum class HIDInputType {
     95    ButtonPress,
     96    NotAButtonPress,
     97};
     98
    9499class HIDGamepad : public PlatformGamepad {
    95100public:
     
    98103    IOHIDDeviceRef hidDevice() const { return m_hidDevice.get(); }
    99104
    100     void valueChanged(IOHIDValueRef);
     105    HIDInputType valueChanged(IOHIDValueRef);
    101106
    102107    const Vector<double>& axisValues() const final { return m_axisValues; }
  • trunk/Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.cpp

    r205247 r211007  
    238238        return;
    239239
    240     gamepad->valueChanged(value);
     240    if (gamepad->valueChanged(value) == HIDInputType::ButtonPress)
     241        setShouldMakeGamepadsVisibile();
    241242
    242243    // This isActive check is necessary as we want to delay input notifications from the time of the first input,
     
    251252        return;
    252253
    253     for (auto& client : m_clients)
    254         client->platformGamepadInputActivity();
     254    dispatchPlatformGamepadInputActivity();
    255255}
    256256
  • trunk/Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.h

    r205247 r211007  
    3434#include <wtf/Deque.h>
    3535#include <wtf/HashMap.h>
    36 #include <wtf/HashSet.h>
    3736#include <wtf/NeverDestroyed.h>
    3837#include <wtf/RetainPtr.h>
     
    7776    RetainPtr<IOHIDManagerRef> m_manager;
    7877
    79     HashSet<GamepadProviderClient*> m_clients;
    8078    bool m_shouldDispatchCallbacks;
    8179
  • trunk/Source/WebCore/testing/MockGamepadProvider.cpp

    r204853 r211007  
    133133
    134134    m_mockGamepadVector[index]->setButtonValue(buttonIndex, value);
     135    setShouldMakeGamepadsVisibile();
    135136    gamepadInputActivity();
    136137    return true;
     
    144145    m_shouldScheduleActivityCallback = false;
    145146    callOnMainThread([this]() {
    146         for (auto& client : m_clients)
    147             client->platformGamepadInputActivity();
     147        dispatchPlatformGamepadInputActivity();
    148148
    149149        m_shouldScheduleActivityCallback = true;
  • trunk/Source/WebCore/testing/MockGamepadProvider.h

    r204853 r211007  
    3030#include "GamepadProvider.h"
    3131#include "MockGamepad.h"
    32 #include <wtf/HashSet.h>
    3332#include <wtf/NeverDestroyed.h>
    3433#include <wtf/text/WTFString.h>
     
    6362    Vector<std::unique_ptr<MockGamepad>> m_mockGamepadVector;
    6463
    65     HashSet<GamepadProviderClient*> m_clients;
    66 
    6764    bool m_shouldScheduleActivityCallback { true };
    6865};
  • trunk/Source/WebKit2/ChangeLog

    r211006 r211007  
     12017-01-20  Brady Eidson  <beidson@apple.com>
     2
     3        Require a button press on a gamepad for them to be exposed to the DOM.
     4        <rdar://problem/28620919> and https://bugs.webkit.org/show_bug.cgi?id=167272
     5
     6        Reviewed by Alex Christensen.
     7
     8        * UIProcess/Gamepad/UIGamepadProvider.cpp:
     9        (WebKit::UIGamepadProvider::gamepadSyncTimerFired):
     10        (WebKit::UIGamepadProvider::platformGamepadInputActivity):
     11        * UIProcess/Gamepad/UIGamepadProvider.h:
     12
     13        * UIProcess/WebPageProxy.cpp:
     14        (WebKit::WebPageProxy::gamepadActivity):
     15        * UIProcess/WebPageProxy.h:
     16
     17        * WebProcess/Gamepad/WebGamepadProvider.cpp:
     18        (WebKit::WebGamepadProvider::gamepadActivity):
     19        * WebProcess/Gamepad/WebGamepadProvider.h:
     20
     21        * WebProcess/WebPage/WebPage.cpp:
     22        (WebKit::WebPage::gamepadActivity):
     23        * WebProcess/WebPage/WebPage.h:
     24        * WebProcess/WebPage/WebPage.messages.in:
     25
    1262017-01-20  Joseph Pecoraro  <pecoraro@apple.com>
    227
  • trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.cpp

    r210761 r211007  
    6666        return;
    6767
    68     webPageProxy->gamepadActivity(snapshotGamepads());
     68    webPageProxy->gamepadActivity(snapshotGamepads(), m_shouldMakeGamepadsVisibleOnSync);
     69    m_shouldMakeGamepadsVisibleOnSync = false;
    6970}
    7071
     
    127128}
    128129
    129 void UIGamepadProvider::platformGamepadInputActivity()
     130void UIGamepadProvider::platformGamepadInputActivity(bool shouldMakeGamepadsVisible)
    130131{
    131132    auto platformGamepads = GamepadProvider::singleton().platformGamepads();
     
    142143    }
    143144
     145    if (shouldMakeGamepadsVisible)
     146        m_shouldMakeGamepadsVisibleOnSync = true;
     147
    144148    scheduleGamepadStateSync();
    145149}
  • trunk/Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h

    r210761 r211007  
    7575    void platformGamepadConnected(WebCore::PlatformGamepad&) final;
    7676    void platformGamepadDisconnected(WebCore::PlatformGamepad&) final;
    77     void platformGamepadInputActivity() final;
     77    void platformGamepadInputActivity(bool shouldMakeGamepadsVisible) final;
    7878
    7979    void scheduleGamepadStateSync();
     
    8888    bool m_isMonitoringGamepads { false };
    8989    bool m_hasInitialGamepads { false };
     90    bool m_shouldMakeGamepadsVisibleOnSync { false };
    9091};
    9192
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r210887 r211007  
    56045604#if ENABLE(GAMEPAD)
    56055605
    5606 void WebPageProxy::gamepadActivity(const Vector<GamepadData>& gamepadDatas)
    5607 {
    5608     m_process->send(Messages::WebPage::GamepadActivity(gamepadDatas), m_pageID);
     5606void WebPageProxy::gamepadActivity(const Vector<GamepadData>& gamepadDatas, bool shouldMakeGamepadsVisible)
     5607{
     5608    m_process->send(Messages::WebPage::GamepadActivity(gamepadDatas, shouldMakeGamepadsVisible), m_pageID);
    56095609}
    56105610
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r210887 r211007  
    11761176
    11771177#if ENABLE(GAMEPAD)
    1178     void gamepadActivity(const Vector<GamepadData>&);
     1178    void gamepadActivity(const Vector<GamepadData>&, bool shouldMakeGamepadsVisible);
    11791179#endif
    11801180       
  • trunk/Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.cpp

    r204853 r211007  
    9696}
    9797
    98 void WebGamepadProvider::gamepadActivity(const Vector<GamepadData>& gamepadDatas)
     98void WebGamepadProvider::gamepadActivity(const Vector<GamepadData>& gamepadDatas, bool shouldMakeGamepadsVisible)
    9999{
    100100    ASSERT(m_gamepads.size() == gamepadDatas.size());
     
    106106
    107107    for (auto* client : m_clients)
    108         client->platformGamepadInputActivity();
     108        client->platformGamepadInputActivity(shouldMakeGamepadsVisible);
    109109}
    110110
  • trunk/Source/WebKit2/WebProcess/Gamepad/WebGamepadProvider.h

    r204853 r211007  
    4545    void gamepadConnected(const GamepadData&);
    4646    void gamepadDisconnected(unsigned index);
    47     void gamepadActivity(const Vector<GamepadData>&);
     47    void gamepadActivity(const Vector<GamepadData>&, bool shouldMakeGamepadsVisible);
    4848
    4949    void setInitialGamepads(const Vector<GamepadData>&);
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r210949 r211007  
    56905690#if ENABLE(GAMEPAD)
    56915691
    5692 void WebPage::gamepadActivity(const Vector<GamepadData>& gamepadDatas)
    5693 {
    5694     WebGamepadProvider::singleton().gamepadActivity(gamepadDatas);
     5692void WebPage::gamepadActivity(const Vector<GamepadData>& gamepadDatas, bool shouldMakeGamepadsVisible)
     5693{
     5694    WebGamepadProvider::singleton().gamepadActivity(gamepadDatas, shouldMakeGamepadsVisible);
    56955695}
    56965696
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r210845 r211007  
    964964
    965965#if ENABLE(GAMEPAD)
    966     void gamepadActivity(const Vector<GamepadData>&);
     966    void gamepadActivity(const Vector<GamepadData>&, bool shouldMakeGamepadsVisible);
    967967#endif
    968968   
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r210097 r211007  
    460460
    461461#if ENABLE(GAMEPAD)
    462     GamepadActivity(Vector<WebKit::GamepadData> gamepadDatas)
     462    GamepadActivity(Vector<WebKit::GamepadData> gamepadDatas, bool shouldMakeGamepadsVisible)
    463463#endif
    464464}
Note: See TracChangeset for help on using the changeset viewer.