Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add plumbing for Gamepad.vibrationActuator support
https://bugs.webkit.org/show_bug.cgi?id=250149

Reviewed by Brent Fulgham.

Add plumbing for Gamepad.vibrationActuator support:
- https://w3c.github.io/gamepad/extensions.html#dom-gamepadhapticactuator

The Gamepad.vibrationActuator's playEffect() / reset() calls are now properly
forwarded to the corresponding PlatformGamepad object in the UIProcess.

The next step will be to implement them inside GameControllerGamepad to
make the API actually functional on macOS 13+.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Modules/gamepad/Gamepad.cpp:
(WebCore::Gamepad::Gamepad):
(WebCore::Gamepad::vibrationActuator):
* Source/WebCore/Modules/gamepad/Gamepad.h:
* Source/WebCore/Modules/gamepad/GamepadHapticActuator.cpp:
(WebCore::GamepadHapticActuator::create):
(WebCore::GamepadHapticActuator::GamepadHapticActuator):
(WebCore::m_gamepad):
(WebCore::GamepadHapticActuator::canPlayEffectType const):
(WebCore::GamepadHapticActuator::playEffect):
(WebCore::GamepadHapticActuator::reset):
* Source/WebCore/Modules/gamepad/GamepadHapticActuator.h:
* Source/WebCore/Modules/gamepad/GamepadHapticActuator.idl:
* Source/WebCore/Modules/gamepad/GamepadHapticEffectType.h: Copied from Source/WebCore/platform/gamepad/EmptyGamepadProvider.h.
* Source/WebCore/Modules/gamepad/GamepadHapticEffectType.idl: Copied from Source/WebCore/platform/gamepad/EmptyGamepadProvider.h.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/TaskSource.h:
* Source/WebCore/platform/gamepad/EmptyGamepadProvider.cpp:
(WebCore::EmptyGamepadProvider::playEffect):
(WebCore::EmptyGamepadProvider::stopEffects):
* Source/WebCore/platform/gamepad/EmptyGamepadProvider.h:
* Source/WebCore/platform/gamepad/GamepadProvider.h:
* Source/WebCore/platform/gamepad/PlatformGamepad.h:
(WebCore::PlatformGamepad::supportedEffectTypes const):
(WebCore::PlatformGamepad::playEffect):
(WebCore::PlatformGamepad::stopEffects):
* Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.h:
* Source/WebCore/platform/gamepad/cocoa/GameControllerGamepad.mm:
(WebCore::GameControllerGamepad::setupElements):
(WebCore::GameControllerGamepad::playEffect):
(WebCore::GameControllerGamepad::stopEffects):
* Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.h:
* Source/WebCore/platform/gamepad/cocoa/GameControllerGamepadProvider.mm:
(WebCore::GameControllerGamepadProvider::playEffect):
(WebCore::GameControllerGamepadProvider::stopEffects):
* Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.h:
* Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.mm:
(WebCore::HIDGamepadProvider::playEffect):
(WebCore::HIDGamepadProvider::stopEffects):
* Source/WebCore/platform/gamepad/mac/MultiGamepadProvider.h:
* Source/WebCore/platform/gamepad/mac/MultiGamepadProvider.mm:
(WebCore::MultiGamepadProvider::playEffect):
(WebCore::MultiGamepadProvider::stopEffects):
* Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.cpp:
(WebCore::ManetteGamepadProvider::playEffect):
(WebCore::ManetteGamepadProvider::stopEffects):
* Source/WebCore/platform/gamepad/manette/ManetteGamepadProvider.h:
* Source/WebCore/testing/MockGamepadProvider.cpp:
(WebCore::MockGamepadProvider::playEffect):
(WebCore::MockGamepadProvider::stopEffects):
* Source/WebCore/testing/MockGamepadProvider.h:
* Source/WebKit/Shared/Gamepad/GamepadData.cpp:
(WebKit::GamepadData::GamepadData):
(WebKit::m_supportedEffectTypes):
(WebKit::GamepadData::encode const):
(WebKit::GamepadData::decode):
(WebKit::m_lastUpdateTime): Deleted.
* Source/WebKit/Shared/Gamepad/GamepadData.h:
(WebKit::GamepadData::supportedEffectTypes const):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/Gamepad/UIGamepad.cpp:
(WebKit::UIGamepad::UIGamepad):
(WebKit::UIGamepad::gamepadData const):
* Source/WebKit/UIProcess/Gamepad/UIGamepad.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::playGamepadEffect):
(WebKit::WebProcessPool::stopGamepadEffects):
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebProcessPool.messages.in:
* Source/WebKit/WebProcess/Gamepad/WebGamepad.cpp:
(WebKit::WebGamepad::WebGamepad):
* Source/WebKit/WebProcess/Gamepad/WebGamepadProvider.cpp:
(WebKit::WebGamepadProvider::playEffect):
(WebKit::WebGamepadProvider::stopEffects):
* Source/WebKit/WebProcess/Gamepad/WebGamepadProvider.h:

Canonical link: https://commits.webkit.org/258559@main
  • Loading branch information
cdumez committed Jan 6, 2023
1 parent 5dfd965 commit 7203ee0
Show file tree
Hide file tree
Showing 46 changed files with 376 additions and 30 deletions.
1 change: 1 addition & 0 deletions Source/WebCore/CMakeLists.txt
Expand Up @@ -1519,6 +1519,7 @@ list(APPEND WebCore_NON_SVG_IDL_FILES
Modules/gamepad/GamepadEffectParameters.idl
Modules/gamepad/GamepadEvent.idl
Modules/gamepad/GamepadHapticActuator.idl
Modules/gamepad/GamepadHapticEffectType.idl
Modules/gamepad/Navigator+Gamepad.idl
Modules/gamepad/WindowEventHandlers+Gamepad.idl
)
Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/DerivedSources-input.xcfilelist
Expand Up @@ -303,6 +303,7 @@ $(PROJECT_DIR)/Modules/gamepad/GamepadButton.idl
$(PROJECT_DIR)/Modules/gamepad/GamepadEffectParameters.idl
$(PROJECT_DIR)/Modules/gamepad/GamepadEvent.idl
$(PROJECT_DIR)/Modules/gamepad/GamepadHapticActuator.idl
$(PROJECT_DIR)/Modules/gamepad/GamepadHapticEffectType.idl
$(PROJECT_DIR)/Modules/gamepad/Navigator+Gamepad.idl
$(PROJECT_DIR)/Modules/gamepad/WindowEventHandlers+Gamepad.idl
$(PROJECT_DIR)/Modules/geolocation/Coordinates.idl
Expand Down
2 changes: 2 additions & 0 deletions Source/WebCore/DerivedSources-output.xcfilelist
Expand Up @@ -1261,6 +1261,8 @@ $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGamepadEvent.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGamepadEvent.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGamepadHapticActuator.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGamepadHapticActuator.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGamepadHapticEffectType.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGamepadHapticEffectType.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGenericTransformStream.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGenericTransformStream.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSGeolocation.cpp
Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/DerivedSources.make
Expand Up @@ -325,6 +325,7 @@ JS_BINDING_IDLS := \
$(WebCore)/Modules/gamepad/GamepadEffectParameters.idl \
$(WebCore)/Modules/gamepad/GamepadEvent.idl \
$(WebCore)/Modules/gamepad/GamepadHapticActuator.idl \
$(WebCore)/Modules/gamepad/GamepadHapticEffectType.idl \
$(WebCore)/Modules/gamepad/Navigator+Gamepad.idl \
$(WebCore)/Modules/gamepad/WindowEventHandlers+Gamepad.idl \
$(WebCore)/Modules/geolocation/Geolocation.idl \
Expand Down
3 changes: 3 additions & 0 deletions Source/WebCore/Headers.cmake
Expand Up @@ -193,6 +193,9 @@ set(WebCore_PRIVATE_FRAMEWORK_HEADERS
Modules/filesystemaccess/WorkerFileSystemStorageConnection.h
Modules/filesystemaccess/WorkerFileSystemStorageConnectionCallbackIdentifier.h

Modules/gamepad/GamepadEffectParameters.h
Modules/gamepad/GamepadHapticEffectType.h

Modules/geolocation/Geolocation.h
Modules/geolocation/GeolocationClient.h
Modules/geolocation/GeolocationController.h
Expand Down
6 changes: 4 additions & 2 deletions Source/WebCore/Modules/gamepad/Gamepad.cpp
Expand Up @@ -41,8 +41,8 @@ Gamepad::Gamepad(const PlatformGamepad& platformGamepad)
, m_connected(true)
, m_timestamp(platformGamepad.lastUpdateTime())
, m_mapping(platformGamepad.mapping())
, m_supportedEffectTypes(platformGamepad.supportedEffectTypes())
, m_axes(platformGamepad.axisValues().size(), 0.0)
, m_vibrationActuator(GamepadHapticActuator::create())
{
unsigned buttonCount = platformGamepad.buttonValues().size();
m_buttons.reserveInitialCapacity(buttonCount);
Expand Down Expand Up @@ -74,7 +74,9 @@ void Gamepad::updateFromPlatformGamepad(const PlatformGamepad& platformGamepad)

GamepadHapticActuator& Gamepad::vibrationActuator()
{
return m_vibrationActuator.get();
if (!m_vibrationActuator)
m_vibrationActuator = GamepadHapticActuator::create(*this);
return *m_vibrationActuator;
}

} // namespace WebCore
Expand Down
8 changes: 6 additions & 2 deletions Source/WebCore/Modules/gamepad/Gamepad.h
Expand Up @@ -27,9 +27,11 @@

#if ENABLE(GAMEPAD)

#include "GamepadHapticEffectType.h"
#include <wtf/MonotonicTime.h>
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
#include <wtf/WeakPtr.h>
#include <wtf/text/WTFString.h>

namespace WebCore {
Expand All @@ -38,7 +40,7 @@ class GamepadButton;
class GamepadHapticActuator;
class PlatformGamepad;

class Gamepad: public RefCounted<Gamepad> {
class Gamepad: public RefCounted<Gamepad>, public CanMakeWeakPtr<Gamepad> {
public:
static Ref<Gamepad> create(const PlatformGamepad& platformGamepad)
{
Expand All @@ -54,6 +56,7 @@ class Gamepad: public RefCounted<Gamepad> {
double timestamp() const { return m_timestamp.secondsSinceEpoch().seconds(); }
const Vector<double>& axes() const;
const Vector<Ref<GamepadButton>>& buttons() const;
const GamepadHapticEffectTypeSet& supportedEffectTypes() const { return m_supportedEffectTypes; }

void updateFromPlatformGamepad(const PlatformGamepad&);
void setConnected(bool connected) { m_connected = connected; }
Expand All @@ -67,11 +70,12 @@ class Gamepad: public RefCounted<Gamepad> {
bool m_connected;
MonotonicTime m_timestamp;
String m_mapping;
GamepadHapticEffectTypeSet m_supportedEffectTypes;

Vector<double> m_axes;
Vector<Ref<GamepadButton>> m_buttons;

Ref<GamepadHapticActuator> m_vibrationActuator;
RefPtr<GamepadHapticActuator> m_vibrationActuator;
};

} // namespace WebCore
Expand Down
59 changes: 50 additions & 9 deletions Source/WebCore/Modules/gamepad/GamepadHapticActuator.cpp
Expand Up @@ -28,34 +28,75 @@
#if ENABLE(GAMEPAD)
#include "GamepadHapticActuator.h"

#include "Document.h"
#include "EventLoop.h"
#include "Gamepad.h"
#include "GamepadEffectParameters.h"
#include "GamepadProvider.h"
#include "JSDOMPromiseDeferred.h"
#include <wtf/CompletionHandler.h>

namespace WebCore {

Ref<GamepadHapticActuator> GamepadHapticActuator::create()
Ref<GamepadHapticActuator> GamepadHapticActuator::create(Gamepad& gamepad)
{
return adoptRef(*new GamepadHapticActuator);
return adoptRef(*new GamepadHapticActuator(gamepad));
}

GamepadHapticActuator::GamepadHapticActuator()
GamepadHapticActuator::GamepadHapticActuator(Gamepad& gamepad)
: m_type { Type::Vibration }
, m_gamepad { gamepad }
{
}

bool GamepadHapticActuator::canPlayEffectType(EffectType) const
GamepadHapticActuator::~GamepadHapticActuator() = default;

bool GamepadHapticActuator::canPlayEffectType(EffectType effectType) const
{
return false;
return m_gamepad && m_gamepad->supportedEffectTypes().contains(effectType);
}

void GamepadHapticActuator::playEffect(EffectType, GamepadEffectParameters&&, Ref<DeferredPromise>&& promise)
void GamepadHapticActuator::playEffect(Document& document, EffectType effectType, GamepadEffectParameters&& effectParameters, Ref<DeferredPromise>&& promise)
{
promise->reject(Exception { NotSupportedError });
if (!document.isFullyActive() || document.hidden() || !m_gamepad) {
promise->resolve<IDLEnumeration<Result>>(Result::Preempted);
return;
}
if (auto playingEffectPromise = std::exchange(m_playingEffectPromise, nullptr)) {
document.eventLoop().queueTask(TaskSource::Gamepad, [playingEffectPromise = WTFMove(playingEffectPromise)] {
playingEffectPromise->resolve<IDLEnumeration<Result>>(Result::Preempted);
});
}
if (!canPlayEffectType(effectType)) {
promise->reject(Exception { NotSupportedError, "This gamepad doesn't support playing such effect"_s });
return;
}
m_playingEffectPromise = WTFMove(promise);
GamepadProvider::singleton().playEffect(m_gamepad->index(), m_gamepad->id(), effectType, effectParameters, [this, protectedThis = Ref { *this }, document = Ref { document }, playingEffectPromise = m_playingEffectPromise](bool success) {
if (m_playingEffectPromise != playingEffectPromise)
return; // Was already pre-empted.
document->eventLoop().queueTask(TaskSource::Gamepad, [playingEffectPromise = std::exchange(m_playingEffectPromise, nullptr), success] {
playingEffectPromise->resolve<IDLEnumeration<Result>>(success ? Result::Complete : Result::Preempted);
});
});
}

void GamepadHapticActuator::reset(Ref<DeferredPromise>&& promise)
void GamepadHapticActuator::reset(Document& document, Ref<DeferredPromise>&& promise)
{
promise->reject(Exception { NotSupportedError });
if (!document.isFullyActive() || document.hidden() || !m_gamepad) {
promise->resolve<IDLEnumeration<Result>>(Result::Preempted);
return;
}
if (auto playingEffectPromise = std::exchange(m_playingEffectPromise, nullptr)) {
document.eventLoop().queueTask(TaskSource::Gamepad, [playingEffectPromise = WTFMove(playingEffectPromise)] {
playingEffectPromise->resolve<IDLEnumeration<Result>>(Result::Preempted);
});
}
GamepadProvider::singleton().stopEffects(m_gamepad->index(), m_gamepad->id(), [document = Ref { document }, promise = WTFMove(promise)]() mutable {
document->eventLoop().queueTask(TaskSource::Gamepad, [promise = WTFMove(promise)] {
promise->resolve<IDLEnumeration<Result>>(Result::Complete);
});
});
}

} // namespace WebCore
Expand Down
17 changes: 12 additions & 5 deletions Source/WebCore/Modules/gamepad/GamepadHapticActuator.h
Expand Up @@ -27,31 +27,38 @@

#if ENABLE(GAMEPAD)

#include "GamepadHapticEffectType.h"
#include <wtf/Forward.h>
#include <wtf/RefCounted.h>
#include <wtf/WeakPtr.h>

namespace WebCore {

class DeferredPromise;
class Document;
class Gamepad;
struct GamepadEffectParameters;

class GamepadHapticActuator : public RefCounted<GamepadHapticActuator> {
public:
static Ref<GamepadHapticActuator> create();
static Ref<GamepadHapticActuator> create(Gamepad&);
~GamepadHapticActuator();

using EffectType = GamepadHapticEffectType;
enum class Type : uint8_t { Vibration, DualRumble };
enum class EffectType : uint8_t { DualRumble };
enum class Result : uint8_t { Complete, Preempted };

Type type() const { return m_type; }
bool canPlayEffectType(EffectType) const;
void playEffect(EffectType, GamepadEffectParameters&&, Ref<DeferredPromise>&&);
void reset(Ref<DeferredPromise>&&);
void playEffect(Document&, EffectType, GamepadEffectParameters&&, Ref<DeferredPromise>&&);
void reset(Document&, Ref<DeferredPromise>&&);

private:
GamepadHapticActuator();
explicit GamepadHapticActuator(Gamepad&);

Type m_type;
WeakPtr<Gamepad> m_gamepad;
RefPtr<DeferredPromise> m_playingEffectPromise;
};

} // namespace WebCore
Expand Down
11 changes: 5 additions & 6 deletions Source/WebCore/Modules/gamepad/GamepadHapticActuator.idl
Expand Up @@ -28,10 +28,6 @@ enum GamepadHapticActuatorType {
"dual-rumble"
};

enum GamepadHapticEffectType {
"dual-rumble"
};

enum GamepadHapticResult {
"complete",
"preempted"
Expand All @@ -44,6 +40,9 @@ enum GamepadHapticResult {
] interface GamepadHapticActuator {
readonly attribute GamepadHapticActuatorType type;
boolean canPlayEffectType(GamepadHapticEffectType type);
Promise<GamepadHapticResult> playEffect(GamepadHapticEffectType type, optional GamepadEffectParameters params = {});
Promise<GamepadHapticResult> reset();
[CallWith=RelevantDocument] Promise<GamepadHapticResult> playEffect(GamepadHapticEffectType type, optional GamepadEffectParameters params = {});
[CallWith=RelevantDocument] Promise<GamepadHapticResult> reset();

// Non standard: Supported for compatibility with Blink.
[ImplementedAs=canPlayEffectType] boolean canPlay(GamepadHapticEffectType type);
};
42 changes: 42 additions & 0 deletions Source/WebCore/Modules/gamepad/GamepadHapticEffectType.h
@@ -0,0 +1,42 @@
/*
* Copyright (C) 2023 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.
*/

#pragma once

#if ENABLE(GAMEPAD)

#include <wtf/Forward.h>
#include <wtf/HashSet.h>
#include <wtf/HashTraits.h>

namespace WebCore {

enum class GamepadHapticEffectType : uint8_t { DualRumble };

using GamepadHapticEffectTypeSet = HashSet<GamepadHapticEffectType, IntHash<GamepadHapticEffectType>, WTF::StrongEnumHashTraits<GamepadHapticEffectType>>;

} // namespace WebCore

#endif // ENABLE(GAMEPAD)
30 changes: 30 additions & 0 deletions Source/WebCore/Modules/gamepad/GamepadHapticEffectType.idl
@@ -0,0 +1,30 @@
/*
* Copyright (C) 2023 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.
*/

[
Conditional=GAMEPAD
] enum GamepadHapticEffectType {
"dual-rumble"
};
1 change: 1 addition & 0 deletions Source/WebCore/Sources.txt
Expand Up @@ -3457,6 +3457,7 @@ JSGainOptions.cpp
JSGamepad.cpp
JSGamepadEffectParameters.cpp
JSGamepadHapticActuator.cpp
JSGamepadHapticEffectType.cpp
JSGamepadButton.cpp
JSGamepadEvent.cpp
JSGeolocation.cpp
Expand Down
8 changes: 7 additions & 1 deletion Source/WebCore/WebCore.xcodeproj/project.pbxproj
Expand Up @@ -1413,7 +1413,7 @@
4650AD1926FCCA650047F7AD /* WorkerThreadMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4650AD1726FCCA5A0047F7AD /* WorkerThreadMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
465307D01DB6EE4800E4137C /* JSUIEventInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E045EF1DAA104F00B0D8B9 /* JSUIEventInit.h */; };
4664D1A62964FCE8006FE0C5 /* GamepadHapticActuator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4664D1A22964FCD4006FE0C5 /* GamepadHapticActuator.cpp */; };
4664D1A72964FCF0006FE0C5 /* GamepadEffectParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4664D1A42964FCD5006FE0C5 /* GamepadEffectParameters.h */; };
4664D1A72964FCF0006FE0C5 /* GamepadEffectParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4664D1A42964FCD5006FE0C5 /* GamepadEffectParameters.h */; settings = {ATTRIBUTES = (Private, ); }; };
4664D1A82964FCF7006FE0C5 /* GamepadHapticActuator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4664D1A12964FCD4006FE0C5 /* GamepadHapticActuator.h */; };
46658DC91FA24B8700F7DD54 /* SWContextManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4672413B1FA24B140088BD6D /* SWContextManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
4668A0B627AB601B00C720BC /* SharedWorkerObjectConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4668A0B127AB600B00C720BC /* SharedWorkerObjectConnection.h */; settings = {ATTRIBUTES = (Private, ); }; };
Expand Down Expand Up @@ -1449,6 +1449,7 @@
46A78B342799BD71001154FE /* WorkerOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C1B1D2626F18A4B00882DA2 /* WorkerOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
46AAAA3D25D3632000BAF42F /* AudioFileReaderCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 46AAAA3A25D3631400BAF42F /* AudioFileReaderCocoa.h */; };
46AD2CD028E4FD5100040F10 /* ScreenOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = 46AD2CCF28E4FD3B00040F10 /* ScreenOrientation.h */; };
46B39D5D296737810040D669 /* GamepadHapticEffectType.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B39D5C2967377E0040D669 /* GamepadHapticEffectType.h */; settings = {ATTRIBUTES = (Private, ); }; };
46B63F6C1C6E8D19002E914B /* JSEventTargetCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B63F6B1C6E8CDF002E914B /* JSEventTargetCustom.h */; settings = {ATTRIBUTES = (Private, ); }; };
46B6437E29393C1A00E6CE68 /* InlineStylePropertyMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B6437D29393C1000E6CE68 /* InlineStylePropertyMap.h */; };
46B8593C261672270019EDC6 /* ScriptBufferSourceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B8593A2616720C0019EDC6 /* ScriptBufferSourceProvider.h */; };
Expand Down Expand Up @@ -9733,6 +9734,8 @@
46AD2CCD28E4FD3A00040F10 /* ScreenOrientation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ScreenOrientation.cpp; sourceTree = "<group>"; };
46AD2CCE28E4FD3B00040F10 /* ScreenOrientation.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ScreenOrientation.idl; sourceTree = "<group>"; };
46AD2CCF28E4FD3B00040F10 /* ScreenOrientation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScreenOrientation.h; sourceTree = "<group>"; };
46B39D5B2967377E0040D669 /* GamepadHapticEffectType.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = GamepadHapticEffectType.idl; sourceTree = "<group>"; };
46B39D5C2967377E0040D669 /* GamepadHapticEffectType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GamepadHapticEffectType.h; sourceTree = "<group>"; };
46B63F6B1C6E8CDF002E914B /* JSEventTargetCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEventTargetCustom.h; sourceTree = "<group>"; };
46B6437C29393C1000E6CE68 /* InlineStylePropertyMap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineStylePropertyMap.cpp; sourceTree = "<group>"; };
46B6437D29393C1000E6CE68 /* InlineStylePropertyMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InlineStylePropertyMap.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -23408,6 +23411,8 @@
4664D1A22964FCD4006FE0C5 /* GamepadHapticActuator.cpp */,
4664D1A12964FCD4006FE0C5 /* GamepadHapticActuator.h */,
4664D1A32964FCD4006FE0C5 /* GamepadHapticActuator.idl */,
46B39D5C2967377E0040D669 /* GamepadHapticEffectType.h */,
46B39D5B2967377E0040D669 /* GamepadHapticEffectType.idl */,
51A9D9E7195B931F001B2B5C /* GamepadManager.cpp */,
51A9D9E8195B931F001B2B5C /* GamepadManager.h */,
51A4BB0F1954D62700FA5C2E /* Navigator+Gamepad.idl */,
Expand Down Expand Up @@ -36278,6 +36283,7 @@
4664D1A72964FCF0006FE0C5 /* GamepadEffectParameters.h in Headers */,
516C62211950D48700337E75 /* GamepadEvent.h in Headers */,
4664D1A82964FCF7006FE0C5 /* GamepadHapticActuator.h in Headers */,
46B39D5D296737810040D669 /* GamepadHapticEffectType.h in Headers */,
51A9D9EA195B931F001B2B5C /* GamepadManager.h in Headers */,
515BE1921D54F5FB00DD7C68 /* GamepadProvider.h in Headers */,
515BE1931D54F5FB00DD7C68 /* GamepadProviderClient.h in Headers */,
Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/dom/TaskSource.h
Expand Up @@ -32,6 +32,7 @@ enum class TaskSource : uint8_t {
DatabaseAccess,
FileReading,
FontLoading,
Gamepad,
Geolocation,
IdleTask,
IndexedDB,
Expand Down

0 comments on commit 7203ee0

Please sign in to comment.