+2019-02-05 Daniel Bates <dabates@apple.com>
+
+ Make WebEvent::Modifiers an OptionSet
+ https://bugs.webkit.org/show_bug.cgi?id=194241
+
+ Reviewed by Simon Fraser.
+
+ Use an OptionSet to represent the bitmask of keyboard modifier flags. This improves type safety
+ and makes debugging more enjoyable because our LLDB pretty-printers have built-in support for
+ OptionSet.
+
+ While I am at it, make WebEvent::Modifier an enum class. It is currently an enum. This makes
+ this enum more closely match WebCore::PlatformEvent::Modifier.
+
+ * Shared/API/c/WKSharedAPICast.h:
+ (WebKit::toAPI):
+ * Shared/NavigationActionData.cpp:
+ (WebKit::NavigationActionData::encode const):
+ (WebKit::NavigationActionData::decode):
+ * Shared/NavigationActionData.h:
+ * Shared/WebEvent.cpp:
+ (WebKit::WebEvent::WebEvent):
+ * Shared/WebEvent.h:
+ (WebKit::WebEvent::shiftKey const):
+ (WebKit::WebEvent::controlKey const):
+ (WebKit::WebEvent::altKey const):
+ (WebKit::WebEvent::metaKey const):
+ (WebKit::WebEvent::capsLockKey const):
+ (WebKit::WebEvent::modifiers const):
+ (WebKit::WebTouchEvent::WebTouchEvent):
+ * Shared/WebEventConversion.cpp:
+ (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
+ * Shared/WebKeyboardEvent.cpp:
+ (WebKit::WebKeyboardEvent::WebKeyboardEvent):
+ * Shared/WebMouseEvent.cpp:
+ (WebKit::WebMouseEvent::WebMouseEvent):
+ * Shared/WebTouchEvent.cpp:
+ (WebKit::WebTouchEvent::WebTouchEvent):
+ * Shared/WebWheelEvent.cpp:
+ (WebKit::WebWheelEvent::WebWheelEvent):
+ * Shared/gtk/WebEventFactory.cpp:
+ (WebKit::modifiersForEvent):
+ * Shared/ios/NativeWebTouchEventIOS.mm:
+ (WebKit::NativeWebTouchEvent::NativeWebTouchEvent):
+ * Shared/ios/WebIOSEventFactory.mm:
+ (modifiersForEvent):
+ (WebIOSEventFactory::createWebKeyboardEvent):
+ (WebIOSEventFactory::createWebMouseEvent):
+ * Shared/libwpe/WebEventFactory.cpp:
+ (WebKit::modifiersForEventModifiers):
+ (WebKit::WebEventFactory::createWebWheelEvent):
+ (WebKit::WebEventFactory::createWebTouchEvent):
+ * Shared/mac/WebEventFactory.mm:
+ (WebKit::modifiersForEvent):
+ (WebKit::WebEventFactory::createWebMouseEvent):
+ (WebKit::WebEventFactory::createWebWheelEvent):
+ (WebKit::WebEventFactory::createWebKeyboardEvent):
+ * Shared/win/WebEventFactory.cpp:
+ (WebKit::modifiersForEvent):
+ (WebKit::modifiersForCurrentKeyState):
+ (WebKit::WebEventFactory::createWebMouseEvent):
+ (WebKit::WebEventFactory::createWebWheelEvent):
+ (WebKit::WebEventFactory::createWebKeyboardEvent):
+ * UIProcess/API/APINavigationAction.h:
+ * UIProcess/API/APIUIClient.h:
+ (API::UIClient::mouseDidMoveOverElement):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageUIClient):
+ * UIProcess/API/Cocoa/WKNavigationAction.mm:
+ (toNSEventModifierFlags):
+ * UIProcess/API/glib/WebKitPrivate.cpp:
+ (toPlatformModifiers):
+ * UIProcess/API/glib/WebKitPrivate.h:
+ * UIProcess/API/glib/WebKitUIClient.cpp:
+ * UIProcess/API/glib/WebKitWebView.cpp:
+ (webkitWebViewMouseTargetChanged):
+ * UIProcess/API/glib/WebKitWebViewPrivate.h:
+ * UIProcess/Automation/WebAutomationSession.cpp:
+ (WebKit::WebAutomationSession::simulateMouseInteraction):
+ (WebKit::protocolModifierToWebEventModifier):
+ (WebKit::WebAutomationSession::performMouseInteraction):
+ * UIProcess/Automation/WebAutomationSession.h:
+ * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
+ (WebKit::modifiersToEventState):
+ (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
+ * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
+ (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
+ * UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:
+ (WebKit::modifiersToEventState):
+ (WebKit::WebAutomationSession::platformSimulateMouseInteraction):
+ * UIProcess/Cocoa/UIDelegate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::toNSEventModifierFlags):
+ (WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::mouseDidMoveOverElement):
+ * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
+ (API::InjectedBundle::PageUIClient::mouseDidMoveOverElement):
+ * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
+ (WebKit::InjectedBundleNavigationAction::modifiersForNavigationAction):
+ * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
+ (WebKit::InjectedBundleNavigationAction::modifiers const):
+ * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
+ (WebKit::InjectedBundlePageUIClient::mouseDidMoveOverElement):
+ * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
+ * WebProcess/Plugins/PDF/PDFPlugin.mm:
+ (WebKit::PDFPlugin::showContextMenuAtPoint):
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::createWebEvent const):
+ * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+ (WebKit::WebChromeClient::mouseDidMoveOverElement):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::simulateMouseDown):
+ (WebKit::WebPage::simulateMouseUp):
+ (WebKit::WebPage::simulateMouseMotion):
+
2019-02-05 Tim Horton <timothy_horton@apple.com>
Reproducible crash under WKShareSheet presentWithParameters when cancelling a share
return static_cast<WKTypeID>(type);
}
-inline WKEventModifiers toAPI(WebEvent::Modifiers modifiers)
+inline WKEventModifiers toAPI(OptionSet<WebEvent::Modifier> modifiers)
{
WKEventModifiers wkModifiers = 0;
- if (modifiers & WebEvent::ShiftKey)
+ if (modifiers.contains(WebEvent::Modifier::ShiftKey))
wkModifiers |= kWKEventModifiersShiftKey;
- if (modifiers & WebEvent::ControlKey)
+ if (modifiers.contains(WebEvent::Modifier::ControlKey))
wkModifiers |= kWKEventModifiersControlKey;
- if (modifiers & WebEvent::AltKey)
+ if (modifiers.contains(WebEvent::Modifier::AltKey))
wkModifiers |= kWKEventModifiersAltKey;
- if (modifiers & WebEvent::MetaKey)
+ if (modifiers.contains(WebEvent::Modifier::MetaKey))
wkModifiers |= kWKEventModifiersMetaKey;
- if (modifiers & WebEvent::CapsLockKey)
+ if (modifiers.contains(WebEvent::Modifier::CapsLockKey))
wkModifiers |= kWKEventModifiersCapsLockKey;
return wkModifiers;
}
void NavigationActionData::encode(IPC::Encoder& encoder) const
{
encoder.encodeEnum(navigationType);
- encoder.encodeEnum(modifiers);
+ encoder << modifiers;
encoder.encodeEnum(mouseButton);
encoder.encodeEnum(syntheticClickType);
encoder << userGestureTokenIdentifier;
if (!decoder.decodeEnum(navigationType))
return WTF::nullopt;
- WebEvent::Modifiers modifiers;
- if (!decoder.decodeEnum(modifiers))
+ OptionSet<WebEvent::Modifier> modifiers;
+ if (!decoder.decode(modifiers))
return WTF::nullopt;
-
+
WebMouseEvent::Button mouseButton;
if (!decoder.decodeEnum(mouseButton))
return WTF::nullopt;
if (!clientRedirectSourceForHistory)
return WTF::nullopt;
- return {{ WTFMove(navigationType), WTFMove(modifiers), WTFMove(mouseButton), WTFMove(syntheticClickType), WTFMove(*userGestureTokenIdentifier),
+ return {{ WTFMove(navigationType), modifiers, WTFMove(mouseButton), WTFMove(syntheticClickType), WTFMove(*userGestureTokenIdentifier),
WTFMove(*canHandleRequest), WTFMove(shouldOpenExternalURLsPolicy), WTFMove(*downloadAttribute), WTFMove(clickLocationInRootViewCoordinates),
WTFMove(*isRedirect), *treatAsSameOriginNavigation, *hasOpenedFrames, *openedByDOMWithOpener, WTFMove(*requesterOrigin),
WTFMove(*targetBackForwardItemIdentifier), lockHistory, lockBackForwardList, WTFMove(*clientRedirectSourceForHistory) }};
static Optional<NavigationActionData> decode(IPC::Decoder&);
WebCore::NavigationType navigationType { WebCore::NavigationType::Other };
- WebEvent::Modifiers modifiers { };
+ OptionSet<WebEvent::Modifier> modifiers;
WebMouseEvent::Button mouseButton { WebMouseEvent::NoButton };
WebMouseEvent::SyntheticClickType syntheticClickType { WebMouseEvent::NoTap };
uint64_t userGestureTokenIdentifier;
WebEvent::WebEvent()
: m_type(static_cast<uint32_t>(NoType))
- , m_modifiers(0)
{
}
-WebEvent::WebEvent(Type type, Modifiers modifiers, WallTime timestamp)
+WebEvent::WebEvent(Type type, OptionSet<Modifier> modifiers, WallTime timestamp)
: m_type(type)
, m_modifiers(modifiers)
, m_timestamp(timestamp)
#include <WebCore/FloatSize.h>
#include <WebCore/IntPoint.h>
#include <WebCore/IntSize.h>
+#include <wtf/OptionSet.h>
#include <wtf/WallTime.h>
#include <wtf/text/WTFString.h>
#endif
};
- enum Modifiers {
+ enum class Modifier : uint8_t {
ShiftKey = 1 << 0,
ControlKey = 1 << 1,
AltKey = 1 << 2,
Type type() const { return static_cast<Type>(m_type); }
- bool shiftKey() const { return m_modifiers & ShiftKey; }
- bool controlKey() const { return m_modifiers & ControlKey; }
- bool altKey() const { return m_modifiers & AltKey; }
- bool metaKey() const { return m_modifiers & MetaKey; }
- bool capsLockKey() const { return m_modifiers & CapsLockKey; }
+ bool shiftKey() const { return m_modifiers.contains(Modifier::ShiftKey); }
+ bool controlKey() const { return m_modifiers.contains(Modifier::ControlKey); }
+ bool altKey() const { return m_modifiers.contains(Modifier::AltKey); }
+ bool metaKey() const { return m_modifiers.contains(Modifier::MetaKey); }
+ bool capsLockKey() const { return m_modifiers.contains(Modifier::CapsLockKey); }
- Modifiers modifiers() const { return static_cast<Modifiers>(m_modifiers); }
+ OptionSet<Modifier> modifiers() const { return m_modifiers; }
WallTime timestamp() const { return m_timestamp; }
protected:
WebEvent();
- WebEvent(Type, Modifiers, WallTime timestamp);
+ WebEvent(Type, OptionSet<Modifier>, WallTime timestamp);
void encode(IPC::Encoder&) const;
static bool decode(IPC::Decoder&, WebEvent&);
private:
- uint32_t m_type; // Type
- uint32_t m_modifiers; // Modifiers
+ uint32_t m_type;
+ OptionSet<Modifier> m_modifiers;
WallTime m_timestamp;
};
WebMouseEvent();
#if PLATFORM(MAC)
- WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers, WallTime timestamp, double force, SyntheticClickType = NoTap, int eventNumber = -1, int menuType = 0);
+ WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force, SyntheticClickType = NoTap, int eventNumber = -1, int menuType = 0);
#else
- WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers, WallTime timestamp, double force = 0, SyntheticClickType = NoTap);
+ WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force = 0, SyntheticClickType = NoTap);
#endif
Button button() const { return static_cast<Button>(m_button); }
WebWheelEvent() { }
- WebWheelEvent(Type, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, Granularity, Modifiers, WallTime timestamp);
+ WebWheelEvent(Type, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, Granularity, OptionSet<Modifier>, WallTime timestamp);
#if PLATFORM(COCOA)
- WebWheelEvent(Type, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, Granularity, bool directionInvertedFromDevice, Phase, Phase momentumPhase, bool hasPreciseScrollingDeltas, uint32_t scrollCount, const WebCore::FloatSize& unacceleratedScrollingDelta, Modifiers, WallTime timestamp);
+ WebWheelEvent(Type, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, Granularity, bool directionInvertedFromDevice, Phase, Phase momentumPhase, bool hasPreciseScrollingDeltas, uint32_t scrollCount, const WebCore::FloatSize& unacceleratedScrollingDelta, OptionSet<Modifier>, WallTime timestamp);
#elif PLATFORM(GTK)
- WebWheelEvent(Type, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, Phase, Phase momentumPhase, Granularity, Modifiers, WallTime timestamp);
+ WebWheelEvent(Type, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, const WebCore::FloatSize& delta, const WebCore::FloatSize& wheelTicks, Phase, Phase momentumPhase, Granularity, OptionSet<Modifier>, WallTime timestamp);
#endif
const WebCore::IntPoint position() const { return m_position; }
~WebKeyboardEvent();
#if USE(APPKIT)
- WebKeyboardEvent(Type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, const Vector<WebCore::KeypressCommand>&, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers, WallTime timestamp);
+ WebKeyboardEvent(Type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, const Vector<WebCore::KeypressCommand>&, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet<Modifier>, WallTime timestamp);
#elif PLATFORM(GTK)
- WebKeyboardEvent(Type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, Vector<String>&& commands, bool isKeypad, Modifiers, WallTime timestamp);
+ WebKeyboardEvent(Type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, Vector<String>&& commands, bool isKeypad, OptionSet<Modifier>, WallTime timestamp);
#elif PLATFORM(IOS_FAMILY)
- WebKeyboardEvent(Type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers, WallTime timestamp);
+ WebKeyboardEvent(Type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet<Modifier>, WallTime timestamp);
#elif USE(LIBWPE)
- WebKeyboardEvent(Type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isKeypad, Modifiers, WallTime timestamp);
+ WebKeyboardEvent(Type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isKeypad, OptionSet<Modifier>, WallTime timestamp);
#else
- WebKeyboardEvent(Type, const String& text, const String& unmodifiedText, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers, WallTime timestamp);
+ WebKeyboardEvent(Type, const String& text, const String& unmodifiedText, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet<Modifier>, WallTime timestamp);
#endif
const String& text() const { return m_text; }
class WebTouchEvent : public WebEvent {
public:
WebTouchEvent() { }
- WebTouchEvent(WebEvent::Type type, Modifiers modifiers, WallTime timestamp, const Vector<WebPlatformTouchPoint>& touchPoints, WebCore::IntPoint position, bool isPotentialTap, bool isGesture, float gestureScale, float gestureRotation)
+ WebTouchEvent(WebEvent::Type type, OptionSet<Modifier> modifiers, WallTime timestamp, const Vector<WebPlatformTouchPoint>& touchPoints, WebCore::IntPoint position, bool isPotentialTap, bool isGesture, float gestureScale, float gestureRotation)
: WebEvent(type, modifiers, timestamp)
, m_touchPoints(touchPoints)
, m_position(position)
class WebTouchEvent : public WebEvent {
public:
WebTouchEvent() { }
- WebTouchEvent(Type, Vector<WebPlatformTouchPoint>&&, Modifiers, WallTime timestamp);
+ WebTouchEvent(Type, Vector<WebPlatformTouchPoint>&&, OptionSet<Modifier>, WallTime timestamp);
const Vector<WebPlatformTouchPoint>& touchPoints() const { return m_touchPoints; }
#endif
m_modifierFlags = 0;
if (webEvent.shiftKey())
- m_modifierFlags |= WebEvent::ShiftKey;
+ m_modifierFlags |= static_cast<unsigned>(WebEvent::Modifier::ShiftKey);
if (webEvent.controlKey())
- m_modifierFlags |= WebEvent::ControlKey;
+ m_modifierFlags |= static_cast<unsigned>(WebEvent::Modifier::ControlKey);
if (webEvent.altKey())
- m_modifierFlags |= WebEvent::AltKey;
+ m_modifierFlags |= static_cast<unsigned>(WebEvent::Modifier::AltKey);
if (webEvent.metaKey())
- m_modifierFlags |= WebEvent::MetaKey;
+ m_modifierFlags |= static_cast<unsigned>(WebEvent::Modifier::MetaKey);
}
};
#if USE(APPKIT)
-WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, const Vector<WebCore::KeypressCommand>& commands, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers modifiers, WallTime timestamp)
+WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool handledByInputMethod, const Vector<WebCore::KeypressCommand>& commands, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_text(text)
, m_unmodifiedText(unmodifiedText)
#elif PLATFORM(GTK)
-WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, Vector<String>&& commands, bool isKeypad, Modifiers modifiers, WallTime timestamp)
+WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool handledByInputMethod, Vector<String>&& commands, bool isKeypad, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_text(text)
, m_unmodifiedText(text)
#elif PLATFORM(IOS_FAMILY)
-WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers modifiers, WallTime timestamp)
+WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& unmodifiedText, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_text(text)
, m_unmodifiedText(unmodifiedText)
#elif USE(LIBWPE)
-WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isKeypad, Modifiers modifiers, WallTime timestamp)
+WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& key, const String& code, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isKeypad, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_text(text)
, m_unmodifiedText(text)
#else
-WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& unmodifiedText, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers modifiers, WallTime timestamp)
+WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& unmodifiedText, const String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, int macCharCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_text(text)
, m_unmodifiedText(unmodifiedText)
}
#if PLATFORM(MAC)
-WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& position, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, int eventNumber, int menuType)
+WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& position, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, int eventNumber, int menuType)
#else
-WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& position, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType)
+WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& position, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType)
#endif
: WebEvent(type, modifiers, timestamp)
, m_button(button)
namespace WebKit {
-WebTouchEvent::WebTouchEvent(WebEvent::Type type, Vector<WebPlatformTouchPoint>&& touchPoints, Modifiers modifiers, WallTime timestamp)
+WebTouchEvent::WebTouchEvent(WebEvent::Type type, Vector<WebPlatformTouchPoint>&& touchPoints, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_touchPoints(WTFMove(touchPoints))
{
using namespace WebCore;
-WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint& globalPosition, const FloatSize& delta, const FloatSize& wheelTicks, Granularity granularity, Modifiers modifiers, WallTime timestamp)
+WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint& globalPosition, const FloatSize& delta, const FloatSize& wheelTicks, Granularity granularity, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_position(position)
, m_globalPosition(globalPosition)
}
#if PLATFORM(COCOA)
-WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint& globalPosition, const FloatSize& delta, const FloatSize& wheelTicks, Granularity granularity, bool directionInvertedFromDevice, Phase phase, Phase momentumPhase, bool hasPreciseScrollingDeltas, uint32_t scrollCount, const WebCore::FloatSize& unacceleratedScrollingDelta, Modifiers modifiers, WallTime timestamp)
+WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint& globalPosition, const FloatSize& delta, const FloatSize& wheelTicks, Granularity granularity, bool directionInvertedFromDevice, Phase phase, Phase momentumPhase, bool hasPreciseScrollingDeltas, uint32_t scrollCount, const WebCore::FloatSize& unacceleratedScrollingDelta, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_position(position)
, m_globalPosition(globalPosition)
ASSERT(isWheelEventType(type));
}
#elif PLATFORM(GTK)
-WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint& globalPosition, const FloatSize& delta, const FloatSize& wheelTicks, Phase phase, Phase momentumPhase, Granularity granularity, Modifiers modifiers, WallTime timestamp)
+WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint& globalPosition, const FloatSize& delta, const FloatSize& wheelTicks, Phase phase, Phase momentumPhase, Granularity granularity, OptionSet<Modifier> modifiers, WallTime timestamp)
: WebEvent(type, modifiers, timestamp)
, m_position(position)
, m_globalPosition(globalPosition)
return keyval >= GDK_KP_Space && keyval <= GDK_KP_9;
}
-static inline WebEvent::Modifiers modifiersForEvent(const GdkEvent* event)
+static inline OptionSet<WebEvent::Modifier> modifiersForEvent(const GdkEvent* event)
{
- unsigned modifiers = 0;
+ OptionSet<WebEvent::Modifier> modifiers;
GdkModifierType state;
// Check for a valid state in GdkEvent.
if (!gdk_event_get_state(event, &state))
- return static_cast<WebEvent::Modifiers>(0);
+ return modifiers;
if (state & GDK_CONTROL_MASK)
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if (state & GDK_SHIFT_MASK)
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if (state & GDK_MOD1_MASK)
- modifiers |= WebEvent::AltKey;
+ modifiers.add(WebEvent::Modifier::AltKey);
if (state & GDK_META_MASK)
- modifiers |= WebEvent::MetaKey;
+ modifiers.add(WebEvent::Modifier::MetaKey);
if (PlatformKeyboardEvent::modifiersContainCapsLock(state))
- modifiers |= WebEvent::CapsLockKey;
+ modifiers.add(WebEvent::CapsLockKey);
- return static_cast<WebEvent::Modifiers>(modifiers);
+ return modifiers;
}
static inline WebMouseEvent::Button buttonForEvent(const GdkEvent* event)
NativeWebTouchEvent::NativeWebTouchEvent(const _UIWebTouchEvent* event)
: WebTouchEvent(
webEventTypeForUIWebTouchEventType(event->type),
- static_cast<Modifiers>(0),
+ OptionSet<Modifier> { },
WallTime::fromRawSeconds(event->timestamp),
extractWebTouchPoint(event),
positionForCGPoint(event->locationInDocumentCoordinates),
#import <WebCore/KeyEventCodesIOS.h>
#import <WebCore/PlatformEventFactoryIOS.h>
-static WebKit::WebEvent::Modifiers modifiersForEvent(::WebEvent *event)
+static OptionSet<WebKit::WebEvent::Modifier> modifiersForEvent(::WebEvent *event)
{
- unsigned modifiers = 0;
+ OptionSet<WebKit::WebEvent::Modifier> modifiers;
WebEventFlags eventModifierFlags = event.modifierFlags;
-
if (eventModifierFlags & WebEventFlagMaskShiftKey)
- modifiers |= WebKit::WebEvent::ShiftKey;
+ modifiers.add(WebKit::WebEvent::Modifier::ShiftKey);
if (eventModifierFlags & WebEventFlagMaskControlKey)
- modifiers |= WebKit::WebEvent::ControlKey;
+ modifiers.add(WebKit::WebEvent::Modifier::ControlKey);
if (eventModifierFlags & WebEventFlagMaskOptionKey)
- modifiers |= WebKit::WebEvent::AltKey;
+ modifiers.add(WebKit::WebEvent::Modifier::AltKey);
if (eventModifierFlags & WebEventFlagMaskCommandKey)
- modifiers |= WebKit::WebEvent::MetaKey;
+ modifiers.add(WebKit::WebEvent::Modifier::MetaKey);
if (eventModifierFlags & WebEventFlagMaskLeftCapsLockKey)
- modifiers |= WebKit::WebEvent::CapsLockKey;
-
- return static_cast<WebKit::WebEvent::Modifiers>(modifiers);
+ modifiers.add(WebKit::WebEvent::Modifier::CapsLockKey);
+ return modifiers;
}
WebKit::WebKeyboardEvent WebIOSEventFactory::createWebKeyboardEvent(::WebEvent *event)
int macCharCode = 0;
bool isKeypad = false;
bool isSystemKey = false;
- WebKit::WebEvent::Modifiers modifiers = modifiersForEvent(event);
+ auto modifiers = modifiersForEvent(event);
double timestamp = event.timestamp;
if (windowsVirtualKeyCode == '\r') {
float deltaY = 0;
float deltaZ = 0;
int clickCount = 0;
- auto modifiers = static_cast<WebKit::WebEvent::Modifiers>(0);
double timestamp = event.timestamp;
- return WebKit::WebMouseEvent(type, button, buttons, position, position, deltaX, deltaY, deltaZ, clickCount, modifiers, WallTime::fromRawSeconds(timestamp));
+ return WebKit::WebMouseEvent(type, button, buttons, position, position, deltaX, deltaY, deltaZ, clickCount, OptionSet<WebKit::WebEvent::Modifier> { }, WallTime::fromRawSeconds(timestamp));
}
#endif // PLATFORM(IOS_FAMILY)
return keyCode >= WPE_KEY_KP_Space && keyCode <= WPE_KEY_KP_9;
}
-static WebEvent::Modifiers modifiersForEventModifiers(unsigned eventModifiers)
+static OptionSet<WebEvent::Modifier> modifiersForEventModifiers(unsigned eventModifiers)
{
- unsigned modifiers = 0;
-
+ OptionSet<WebEvent::Modifier> modifiers;
if (eventModifiers & wpe_input_keyboard_modifier_control)
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if (eventModifiers & wpe_input_keyboard_modifier_shift)
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if (eventModifiers & wpe_input_keyboard_modifier_alt)
- modifiers |= WebEvent::AltKey;
+ modifiers.add(WebEvent::Modifier::AltKey);
if (eventModifiers & wpe_input_keyboard_modifier_meta)
- modifiers |= WebEvent::MetaKey;
-
- return static_cast<WebEvent::Modifiers>(modifiers);
+ modifiers.add(WebEvent::Modifier::MetaKey);
+ return modifiers;
}
WallTime wallTimeForEventTime(uint64_t timestamp)
WebCore::IntPoint position(event->x, event->y);
position.scale(1 / deviceScaleFactor);
return WebWheelEvent(WebEvent::Wheel, position, position,
- delta, wheelTicks, WebWheelEvent::ScrollByPixelWheelEvent, static_cast<WebEvent::Modifiers>(0), wallTimeForEventTime(event->time));
+ delta, wheelTicks, WebWheelEvent::ScrollByPixelWheelEvent, OptionSet<WebEvent::Modifier> { }, wallTimeForEventTime(event->time));
}
#if ENABLE(TOUCH_EVENTS)
pointCoordinates, pointCoordinates));
}
- return WebTouchEvent(type, WTFMove(touchPoints), WebEvent::Modifiers(0), wallTimeForEventTime(event->time));
+ return WebTouchEvent(type, WTFMove(touchPoints), OptionSet<WebEvent::Modifier> { }, wallTimeForEventTime(event->time));
}
#endif // ENABLE(TOUCH_EVENTS)
return false;
}
-static inline WebEvent::Modifiers modifiersForEvent(NSEvent *event)
+static inline OptionSet<WebEvent::Modifier> modifiersForEvent(NSEvent *event)
{
- unsigned modifiers = 0;
-
+ OptionSet<WebEvent::Modifier> modifiers;
if ([event modifierFlags] & NSEventModifierFlagCapsLock)
- modifiers |= WebEvent::CapsLockKey;
+ modifiers.add(WebEvent::CapsLockKey);
if ([event modifierFlags] & NSEventModifierFlagShift)
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if ([event modifierFlags] & NSEventModifierFlagControl)
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if ([event modifierFlags] & NSEventModifierFlagOption)
- modifiers |= WebEvent::AltKey;
+ modifiers.add(WebEvent::Modifier::AltKey);
if ([event modifierFlags] & NSEventModifierFlagCommand)
- modifiers |= WebEvent::MetaKey;
-
- return (WebEvent::Modifiers)modifiers;
+ modifiers.add(WebEvent::Modifier::MetaKey);
+ return modifiers;
}
static int typeForEvent(NSEvent *event)
float deltaY = [event deltaY];
float deltaZ = [event deltaZ];
int clickCount = clickCountForEvent(event);
- WebEvent::Modifiers modifiers = modifiersForEvent(event);
+ auto modifiers = modifiersForEvent(event);
auto timestamp = WebCore::eventTimeStampSince1970(event);
int eventNumber = [event eventNumber];
int menuTypeForEvent = typeForEvent(event);
unacceleratedScrollingDelta = WebCore::FloatSize(deltaX, deltaY);
}
- WebEvent::Modifiers modifiers = modifiersForEvent(event);
- auto timestamp = WebCore::eventTimeStampSince1970(event);
-
+ auto modifiers = modifiersForEvent(event);
+ auto timestamp = WebCore::eventTimeStampSince1970(event);
+
return WebWheelEvent(WebEvent::Wheel, WebCore::IntPoint(position), WebCore::IntPoint(globalPosition), WebCore::FloatSize(deltaX, deltaY), WebCore::FloatSize(wheelTicksX, wheelTicksY), granularity, directionInvertedFromDevice, phase, momentumPhase, hasPreciseScrollingDeltas, scrollCount, unacceleratedScrollingDelta, modifiers, timestamp);
}
bool autoRepeat = [event type] != NSEventTypeFlagsChanged && [event isARepeat];
bool isKeypad = isKeypadEvent(event);
bool isSystemKey = false; // SystemKey is always false on the Mac.
- WebEvent::Modifiers modifiers = modifiersForEvent(event);
+ auto modifiers = modifiersForEvent(event);
auto timestamp = WebCore::eventTimeStampSince1970(event);
// Always use 13 for Enter/Return -- we don't want to use AppKit's different character for Enter.
return ::GetKeyState(vk) & 0x8000;
}
-static inline WebEvent::Modifiers modifiersForEvent(WPARAM wparam)
+static inline OptionSet<WebEvent::Modifier> modifiersForEvent(WPARAM wparam)
{
- unsigned modifiers = 0;
+ OptionSet<WebEvent::Modifier> modifiers;
if (wparam & MK_CONTROL)
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if (wparam & MK_SHIFT)
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if (IsKeyInDownState(VK_MENU))
- modifiers |= WebEvent::AltKey;
- return static_cast<WebEvent::Modifiers>(modifiers);
+ modifiers.add(WebEvent::Modifier::AltKey);
+ return modifiers;
}
-static inline WebEvent::Modifiers modifiersForCurrentKeyState()
+static inline OptionSet<WebEvent::Modifier> modifiersForCurrentKeyState()
{
- unsigned modifiers = 0;
+ OptionSet<WebEvent::Modifier> modifiers;
if (IsKeyInDownState(VK_CONTROL))
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if (IsKeyInDownState(VK_SHIFT))
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if (IsKeyInDownState(VK_MENU))
- modifiers |= WebEvent::AltKey;
- return static_cast<WebEvent::Modifiers>(modifiers);
+ modifiers.add(WebEvent::Modifier::AltKey);
+ return modifiers;
}
static inline WebEvent::Type keyboardEventTypeForEvent(UINT message)
double timestamp = ::GetTickCount() * 0.001; // ::GetTickCount returns milliseconds (Chrome uses GetMessageTime() / 1000.0)
int clickCount = WebKit::clickCount(type, button, position, timestamp);
- WebEvent::Modifiers modifiers = modifiersForEvent(wParam);
+ auto modifiers = modifiersForEvent(wParam);
return WebMouseEvent(type, button, 0, position, globalPosition, 0, 0, 0, clickCount, modifiers, WallTime::now(), didActivateWebView);
}
WebWheelEvent::Granularity granularity = WebWheelEvent::ScrollByPixelWheelEvent;
- WebEvent::Modifiers modifiers = modifiersForEvent(wParam);
+ auto modifiers = modifiersForEvent(wParam);
int deltaX = 0;
int deltaY = 0;
wheelTicksX = 0;
wheelTicksY = delta;
}
- if (isMouseHWheel || (modifiers & WebEvent::ShiftKey)) {
+ if (isMouseHWheel || (modifiers & WebEvent::Modifier::ShiftKey)) {
deltaX = delta * static_cast<float>(horizontalScrollChars()) * WebCore::cScrollbarPixelsPerLine;
deltaY = 0;
granularity = WebWheelEvent::ScrollByPixelWheelEvent;
bool autoRepeat = HIWORD(lparam) & KF_REPEAT;
bool isKeypad = isKeypadEvent(wparam, lparam, type);
bool isSystemKey = isSystemKeyEvent(message);
- WebEvent::Modifiers modifiers = modifiersForCurrentKeyState();
+ auto modifiers = modifiersForCurrentKeyState();
return WebKeyboardEvent(type, text, unmodifiedText, keyIdentifier, windowsVirtualKeyCode, nativeVirtualKeyCode, macCharCode, autoRepeat, isKeypad, isSystemKey, modifiers, WallTime::now());
}
const WTF::URL& originalURL() const { return !m_originalURL.isNull() ? m_originalURL : m_request.url(); }
WebCore::NavigationType navigationType() const { return m_navigationActionData.navigationType; }
- WebKit::WebEvent::Modifiers modifiers() const { return m_navigationActionData.modifiers; }
+ OptionSet<WebKit::WebEvent::Modifier> modifiers() const { return m_navigationActionData.modifiers; }
WebKit::WebMouseEvent::Button mouseButton() const { return m_navigationActionData.mouseButton; }
WebKit::WebMouseEvent::SyntheticClickType syntheticClickType() const { return m_navigationActionData.syntheticClickType; }
WebCore::FloatPoint clickLocationInRootViewCoordinates() const { return m_navigationActionData.clickLocationInRootViewCoordinates; }
virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*, const WebCore::SecurityOriginData&, Function<void (const WTF::String&)>&& completionHandler) { completionHandler(WTF::String()); }
virtual void setStatusText(WebKit::WebPageProxy*, const WTF::String&) { }
- virtual void mouseDidMoveOverElement(WebKit::WebPageProxy&, const WebKit::WebHitTestResultData&, WebKit::WebEvent::Modifiers, Object*) { }
+ virtual void mouseDidMoveOverElement(WebKit::WebPageProxy&, const WebKit::WebHitTestResultData&, OptionSet<WebKit::WebEvent::Modifier>, Object*) { }
#if ENABLE(NETSCAPE_PLUGIN_API)
virtual void unavailablePluginButtonClicked(WebKit::WebPageProxy&, WKPluginUnavailabilityReason, Dictionary&) { }
#endif // ENABLE(NETSCAPE_PLUGIN_API)
m_client.setStatusText(toAPI(page), toAPI(text.impl()), m_client.base.clientInfo);
}
- void mouseDidMoveOverElement(WebPageProxy& page, const WebHitTestResultData& data, WebKit::WebEvent::Modifiers modifiers, API::Object* userData) final
+ void mouseDidMoveOverElement(WebPageProxy& page, const WebHitTestResultData& data, OptionSet<WebKit::WebEvent::Modifier> modifiers, API::Object* userData) final
{
if (!m_client.mouseDidMoveOverElement && !m_client.mouseDidMoveOverElement_deprecatedForUseWithV0)
return;
#if PLATFORM(MAC)
// FIXME: This really belongs in WebEventFactory.
-static NSEventModifierFlags toNSEventModifierFlags(WebKit::WebEvent::Modifiers modifiers)
+static NSEventModifierFlags toNSEventModifierFlags(OptionSet<WebKit::WebEvent::Modifier> modifiers)
{
NSEventModifierFlags modifierFlags = 0;
-
- if (modifiers & WebKit::WebEvent::CapsLockKey)
+ if (modifiers.contains(WebKit::WebEvent::CapsLockKey))
modifierFlags |= NSEventModifierFlagCapsLock;
- if (modifiers & WebKit::WebEvent::ShiftKey)
+ if (modifiers.contains(WebKit::WebEvent::Modifier::ShiftKey))
modifierFlags |= NSEventModifierFlagShift;
- if (modifiers & WebKit::WebEvent::ControlKey)
+ if (modifiers.contains(WebKit::WebEvent::Modifier::ControlKey))
modifierFlags |= NSEventModifierFlagControl;
- if (modifiers & WebKit::WebEvent::AltKey)
+ if (modifiers.contains(WebKit::WebEvent::Modifier::AltKey))
modifierFlags |= NSEventModifierFlagOption;
- if (modifiers & WebKit::WebEvent::MetaKey)
+ if (modifiers.contains(WebKit::WebEvent::Modifier::MetaKey))
modifierFlags |= NSEventModifierFlagCommand;
-
return modifierFlags;
}
#endif
#if PLATFORM(GTK)
-unsigned toPlatformModifiers(WebKit::WebEvent::Modifiers wkModifiers)
+unsigned toPlatformModifiers(OptionSet<WebKit::WebEvent::Modifier> wkModifiers)
{
unsigned modifiers = 0;
- if (wkModifiers & WebKit::WebEvent::Modifiers::ShiftKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::ShiftKey))
modifiers |= GDK_SHIFT_MASK;
- if (wkModifiers & WebKit::WebEvent::Modifiers::ControlKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::ControlKey))
modifiers |= GDK_CONTROL_MASK;
- if (wkModifiers & WebKit::WebEvent::Modifiers::AltKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::AltKey))
modifiers |= GDK_MOD1_MASK;
- if (wkModifiers & WebKit::WebEvent::Modifiers::MetaKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::MetaKey))
modifiers |= GDK_META_MASK;
- if (wkModifiers & WebKit::WebEvent::Modifiers::CapsLockKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::CapsLockKey))
modifiers |= GDK_LOCK_MASK;
return modifiers;
}
#elif PLATFORM(WPE)
-unsigned toPlatformModifiers(WebKit::WebEvent::Modifiers wkModifiers)
+unsigned toPlatformModifiers(OptionSet<WebKit::WebEvent::Modifier> wkModifiers)
{
unsigned modifiers = 0;
- if (wkModifiers & WebKit::WebEvent::Modifiers::ShiftKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::ShiftKey))
modifiers |= wpe_input_keyboard_modifier_shift;
- if (wkModifiers & WebKit::WebEvent::Modifiers::ControlKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::ControlKey))
modifiers |= wpe_input_keyboard_modifier_control;
- if (wkModifiers & WebKit::WebEvent::Modifiers::AltKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::AltKey))
modifiers |= wpe_input_keyboard_modifier_alt;
- if (wkModifiers & WebKit::WebEvent::Modifiers::MetaKey)
+ if (wkModifiers.contains(WebKit::WebEvent::Modifier::MetaKey))
modifiers |= wpe_input_keyboard_modifier_meta;
return modifiers;
}
#include "WebKitNavigationAction.h"
#include <WebCore/FrameLoaderTypes.h>
-unsigned toPlatformModifiers(WebKit::WebEvent::Modifiers);
+unsigned toPlatformModifiers(OptionSet<WebKit::WebEvent::Modifier>);
WebKitNavigationType toWebKitNavigationType(WebCore::NavigationType);
unsigned toWebKitMouseButton(WebKit::WebMouseEvent::Button);
unsigned toWebKitError(unsigned webCoreError);
webkitWebViewRunJavaScriptBeforeUnloadConfirm(m_webView, message.utf8(), WTFMove(completionHandler));
}
- void mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData& data, WebEvent::Modifiers modifiers, API::Object*) final
+ void mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData& data, OptionSet<WebEvent::Modifier> modifiers, API::Object*) final
{
webkitWebViewMouseTargetChanged(m_webView, data, modifiers);
}
GRefPtr<GMainLoop> modalLoop;
GRefPtr<WebKitHitTestResult> mouseTargetHitTestResult;
- WebEvent::Modifiers mouseTargetModifiers;
+ OptionSet<WebEvent::Modifier> mouseTargetModifiers;
GRefPtr<WebKitFindController> findController;
g_signal_emit(webView, signals[PERMISSION_REQUEST], 0, request, &returnValue);
}
-void webkitWebViewMouseTargetChanged(WebKitWebView* webView, const WebHitTestResultData& hitTestResult, WebEvent::Modifiers modifiers)
+void webkitWebViewMouseTargetChanged(WebKitWebView* webView, const WebHitTestResultData& hitTestResult, OptionSet<WebEvent::Modifier> modifiers)
{
#if PLATFORM(GTK)
webkitWebViewBaseSetTooltipArea(WEBKIT_WEB_VIEW_BASE(webView), hitTestResult.elementBoundingBox);
Optional<WebKitScriptDialogType> webkitWebViewGetCurrentScriptDialogType(WebKitWebView*);
void webkitWebViewMakePermissionRequest(WebKitWebView*, WebKitPermissionRequest*);
void webkitWebViewMakePolicyDecision(WebKitWebView*, WebKitPolicyDecisionType, WebKitPolicyDecision*);
-void webkitWebViewMouseTargetChanged(WebKitWebView*, const WebKit::WebHitTestResultData&, WebKit::WebEvent::Modifiers);
+void webkitWebViewMouseTargetChanged(WebKitWebView*, const WebKit::WebHitTestResultData&, OptionSet<WebKit::WebEvent::Modifier>);
void webkitWebViewHandleDownloadRequest(WebKitWebView*, WebKit::DownloadProxy*);
void webkitWebViewPrintFrame(WebKitWebView*, WebKit::WebFrameProxy*);
void webkitWebViewResourceLoadStarted(WebKitWebView*, WebKit::WebFrameProxy*, uint64_t resourceIdentifier, WebKitURIRequest*);
callbackInMap(AUTOMATION_COMMAND_ERROR_WITH_NAME(Timeout));
callbackInMap = WTFMove(mouseEventsFlushedCallback);
- platformSimulateMouseInteraction(page, interaction, mouseButton, locationInView, (WebEvent::Modifiers)m_currentModifiers);
+ platformSimulateMouseInteraction(page, interaction, mouseButton, locationInView, OptionSet<WebEvent::Modifier>::fromRaw(m_currentModifiers));
// If the event does not hit test anything in the window, then it may not have been delivered.
if (callbackInMap && !page->isProcessingMouseEvents()) {
#endif // ENABLE(WEBDRIVER_ACTIONS_API)
#if ENABLE(WEBDRIVER_MOUSE_INTERACTIONS)
-static WebEvent::Modifiers protocolModifierToWebEventModifier(Inspector::Protocol::Automation::KeyModifier modifier)
+static WebEvent::Modifier protocolModifierToWebEventModifier(Inspector::Protocol::Automation::KeyModifier modifier)
{
switch (modifier) {
case Inspector::Protocol::Automation::KeyModifier::Alt:
- return WebEvent::AltKey;
+ return WebEvent::Modifier::AltKey;
case Inspector::Protocol::Automation::KeyModifier::Meta:
- return WebEvent::MetaKey;
+ return WebEvent::Modifier::MetaKey;
case Inspector::Protocol::Automation::KeyModifier::Control:
- return WebEvent::ControlKey;
+ return WebEvent::Modifier::ControlKey;
case Inspector::Protocol::Automation::KeyModifier::Shift:
- return WebEvent::ShiftKey;
+ return WebEvent::Modifier::ShiftKey;
case Inspector::Protocol::Automation::KeyModifier::CapsLock:
return WebEvent::CapsLockKey;
}
if (!requestedPositionObject.getDouble("y"_s, y))
ASYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(MissingParameter, "The parameter 'y' was not found.");
- WebEvent::Modifiers keyModifiers = (WebEvent::Modifiers)0;
+ OptionSet<WebEvent::Modifier> keyModifiers;
for (auto it = keyModifierStrings.begin(); it != keyModifierStrings.end(); ++it) {
String modifierString;
if (!it->get()->asString(modifierString))
auto parsedModifier = Inspector::Protocol::AutomationHelpers::parseEnumValueFromString<Inspector::Protocol::Automation::KeyModifier>(modifierString);
if (!parsedModifier)
ASYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "A modifier in the 'modifiers' array is invalid.");
- WebEvent::Modifiers enumValue = protocolModifierToWebEventModifier(parsedModifier.value());
- keyModifiers = (WebEvent::Modifiers)(enumValue | keyModifiers);
+ keyModifiers.add(protocolModifierToWebEventModifier(parsedModifier.value()));
}
page->getWindowFrameWithCallback([this, protectedThis = makeRef(*this), callback = WTFMove(callback), page = makeRef(*page), x, y, mouseInteractionString, mouseButtonString, keyModifiers](WebCore::FloatRect windowFrame) mutable {
// Platform-dependent implementations.
#if ENABLE(WEBDRIVER_MOUSE_INTERACTIONS)
- void platformSimulateMouseInteraction(WebPageProxy&, MouseInteraction, WebMouseEvent::Button, const WebCore::IntPoint& locationInView, WebEvent::Modifiers keyModifiers);
+ void platformSimulateMouseInteraction(WebPageProxy&, MouseInteraction, WebMouseEvent::Button, const WebCore::IntPoint& locationInView, OptionSet<WebEvent::Modifier>);
#endif
#if ENABLE(WEBDRIVER_TOUCH_INTERACTIONS)
// Simulates a single touch point being pressed, moved, and released.
namespace WebKit {
using namespace WebCore;
-static unsigned modifiersToEventState(WebEvent::Modifiers modifiers)
+static unsigned modifiersToEventState(OptionSet<WebEvent::Modifier> modifiers)
{
unsigned state = 0;
-
- if (modifiers & WebEvent::ControlKey)
+ if (modifiers.contains(WebEvent::Modifier::ControlKey))
state |= GDK_CONTROL_MASK;
- if (modifiers & WebEvent::ShiftKey)
+ if (modifiers.contains(WebEvent::Modifier::ShiftKey))
state |= GDK_SHIFT_MASK;
- if (modifiers & WebEvent::AltKey)
+ if (modifiers.contains(WebEvent::Modifier::AltKey))
state |= GDK_META_MASK;
- if (modifiers & WebEvent::CapsLockKey)
+ if (modifiers.contains(WebEvent::CapsLockKey))
state |= GDK_LOCK_MASK;
return state;
}
gtk_main_do_event(event.get());
}
-void WebAutomationSession::platformSimulateMouseInteraction(WebPageProxy& page, MouseInteraction interaction, WebMouseEvent::Button button, const WebCore::IntPoint& locationInView, WebEvent::Modifiers keyModifiers)
+void WebAutomationSession::platformSimulateMouseInteraction(WebPageProxy& page, MouseInteraction interaction, WebMouseEvent::Button button, const WebCore::IntPoint& locationInView, OptionSet<WebEvent::Modifier> keyModifiers)
{
unsigned gdkButton = mouseButtonToGdkButton(button);
auto modifier = stateModifierForGdkButton(gdkButton);
#pragma mark Platform-dependent Implementations
#if ENABLE(WEBDRIVER_MOUSE_INTERACTIONS)
-void WebAutomationSession::platformSimulateMouseInteraction(WebPageProxy& page, MouseInteraction interaction, WebMouseEvent::Button button, const WebCore::IntPoint& locationInView, WebEvent::Modifiers keyModifiers)
+void WebAutomationSession::platformSimulateMouseInteraction(WebPageProxy& page, MouseInteraction interaction, WebMouseEvent::Button button, const WebCore::IntPoint& locationInView, OptionSet<WebEvent::Modifier> keyModifiers)
{
IntRect windowRect;
page.rootViewToWindow(IntRect(locationInView, IntSize()), windowRect);
IntPoint locationInWindow = windowRect.location();
NSEventModifierFlags modifiers = 0;
- if (keyModifiers & WebEvent::MetaKey)
+ if (keyModifiers.contains(WebEvent::Modifier::MetaKey))
modifiers |= NSEventModifierFlagCommand;
- if (keyModifiers & WebEvent::AltKey)
+ if (keyModifiers.contains(WebEvent::Modifier::AltKey))
modifiers |= NSEventModifierFlagOption;
- if (keyModifiers & WebEvent::ControlKey)
+ if (keyModifiers.contains(WebEvent::Modifier::ControlKey))
modifiers |= NSEventModifierFlagControl;
- if (keyModifiers & WebEvent::ShiftKey)
+ if (keyModifiers.contains(WebEvent::Modifier::ShiftKey))
modifiers |= NSEventModifierFlagShift;
- if (keyModifiers & WebEvent::CapsLockKey)
+ if (keyModifiers.contains(WebEvent::CapsLockKey))
modifiers |= NSEventModifierFlagCapsLock;
NSTimeInterval timestamp = [NSDate timeIntervalSinceReferenceDate];
namespace WebKit {
using namespace WebCore;
-static uint32_t modifiersToEventState(WebEvent::Modifiers modifiers)
+static uint32_t modifiersToEventState(OptionSet<WebEvent::Modifier> modifiers)
{
uint32_t state = 0;
-
- if (modifiers & WebEvent::ControlKey)
+ if (modifiers.contains(WebEvent::Modifier::ControlKey))
state |= wpe_input_keyboard_modifier_control;
- if (modifiers & WebEvent::ShiftKey)
+ if (modifiers.contains(WebEvent::Modifier::ShiftKey))
state |= wpe_input_keyboard_modifier_shift;
- if (modifiers & WebEvent::AltKey)
+ if (modifiers.contains(WebEvent::Modifier::AltKey))
state |= wpe_input_keyboard_modifier_alt;
-
return state;
}
wpe_view_backend_dispatch_pointer_event(viewBackend, &event);
}
-void WebAutomationSession::platformSimulateMouseInteraction(WebPageProxy& page, MouseInteraction interaction, WebMouseEvent::Button button, const WebCore::IntPoint& locationInView, WebEvent::Modifiers keyModifiers)
+void WebAutomationSession::platformSimulateMouseInteraction(WebPageProxy& page, MouseInteraction interaction, WebMouseEvent::Button button, const WebCore::IntPoint& locationInView, OptionSet<WebEvent::Modifier> keyModifiers)
{
unsigned wpeButton = mouseButtonToWPEButton(button);
auto modifier = stateModifierForWPEButton(wpeButton);
void decidePolicyForNotificationPermissionRequest(WebPageProxy&, API::SecurityOrigin&, Function<void(bool)>&&) final;
void handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) final;
void unavailablePluginButtonClicked(WebPageProxy&, WKPluginUnavailabilityReason, API::Dictionary&) final;
- void mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData&, WebEvent::Modifiers, API::Object*);
+ void mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData&, OptionSet<WebEvent::Modifier>, API::Object*);
void didClickAutoFillButton(WebPageProxy&, API::Object*) final;
void toolbarsAreVisible(WebPageProxy&, Function<void(bool)>&&) final;
bool runOpenPanel(WebPageProxy*, WebFrameProxy*, const WebCore::SecurityOriginData&, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) final;
}).get()];
}
-static NSEventModifierFlags toNSEventModifierFlags(WebEvent::Modifiers modifiers)
+static NSEventModifierFlags toNSEventModifierFlags(OptionSet<WebEvent::Modifier> modifiers)
{
NSEventModifierFlags flags = 0;
- if (modifiers & WebEvent::ShiftKey)
+ if (modifiers.contains(WebEvent::Modifier::ShiftKey))
flags |= NSEventModifierFlagShift;
- if (modifiers & WebEvent::ControlKey)
+ if (modifiers.contains(WebEvent::Modifier::ControlKey))
flags |= NSEventModifierFlagControl;
- if (modifiers & WebEvent::AltKey)
+ if (modifiers.contains(WebEvent::Modifier::AltKey))
flags |= NSEventModifierFlagOption;
- if (modifiers & WebEvent::MetaKey)
+ if (modifiers.contains(WebEvent::Modifier::MetaKey))
flags |= NSEventModifierFlagCommand;
- if (modifiers & WebEvent::CapsLockKey)
+ if (modifiers.contains(WebEvent::CapsLockKey))
flags |= NSEventModifierFlagCapsLock;
return flags;
}
-void UIDelegate::UIClient::mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData& data, WebEvent::Modifiers modifiers, API::Object* userInfo)
+void UIDelegate::UIClient::mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData& data, OptionSet<WebEvent::Modifier> modifiers, API::Object* userInfo)
{
if (!m_uiDelegate.m_delegateMethods.webViewMouseDidMoveOverElementWithFlagsUserInfo)
return;
void WebPageProxy::mouseDidMoveOverElement(WebHitTestResultData&& hitTestResultData, uint32_t opaqueModifiers, UserData&& userData)
{
m_lastMouseMoveHitTestResult = API::HitTestResult::create(hitTestResultData);
-
- WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
-
+ auto modifiers = OptionSet<WebEvent::Modifier>::fromRaw(opaqueModifiers);
m_uiClient->mouseDidMoveOverElement(*this, hitTestResultData, modifiers, m_process->transformHandlesToObjects(userData.object()).get());
}
virtual void willRunJavaScriptAlert(WebKit::WebPage*, const WTF::String&, WebKit::WebFrame*) { }
virtual void willRunJavaScriptConfirm(WebKit::WebPage*, const WTF::String&, WebKit::WebFrame*) { }
virtual void willRunJavaScriptPrompt(WebKit::WebPage*, const WTF::String&, const WTF::String&, WebKit::WebFrame*) { }
- virtual void mouseDidMoveOverElement(WebKit::WebPage*, const WebCore::HitTestResult&, WebKit::WebEvent::Modifiers, RefPtr<API::Object>& userData) { UNUSED_PARAM(userData); }
+ virtual void mouseDidMoveOverElement(WebKit::WebPage*, const WebCore::HitTestResult&, OptionSet<WebKit::WebEvent::Modifier>, RefPtr<API::Object>& userData) { UNUSED_PARAM(userData); }
virtual void pageDidScroll(WebKit::WebPage*) { }
virtual WTF::String shouldGenerateFileForUpload(WebKit::WebPage*, const WTF::String& originalFilePath) { UNUSED_PARAM(originalFilePath); return WTF::String(); }
return { };
}
-WebEvent::Modifiers InjectedBundleNavigationAction::modifiersForNavigationAction(const NavigationAction& navigationAction)
+OptionSet<WebEvent::Modifier> InjectedBundleNavigationAction::modifiersForNavigationAction(const NavigationAction& navigationAction)
{
- uint32_t modifiers = 0;
+ OptionSet<WebEvent::Modifier> modifiers;
auto keyStateEventData = navigationAction.keyStateEventData();
if (keyStateEventData && keyStateEventData->isTrusted) {
if (keyStateEventData->shiftKey)
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if (keyStateEventData->ctrlKey)
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if (keyStateEventData->altKey)
- modifiers |= WebEvent::AltKey;
+ modifiers.add(WebEvent::Modifier::AltKey);
if (keyStateEventData->metaKey)
- modifiers |= WebEvent::MetaKey;
+ modifiers.add(WebEvent::Modifier::MetaKey);
}
- return static_cast<WebEvent::Modifiers>(modifiers);
+ return modifiers;
}
WebMouseEvent::Button InjectedBundleNavigationAction::mouseButtonForNavigationAction(const NavigationAction& navigationAction)
public:
static Ref<InjectedBundleNavigationAction> create(WebFrame*, const WebCore::NavigationAction&, RefPtr<WebCore::FormState>&&);
- static WebEvent::Modifiers modifiersForNavigationAction(const WebCore::NavigationAction&);
+ static OptionSet<WebEvent::Modifier> modifiersForNavigationAction(const WebCore::NavigationAction&);
static WebMouseEvent::Button mouseButtonForNavigationAction(const WebCore::NavigationAction&);
static WebMouseEvent::SyntheticClickType syntheticClickTypeForNavigationAction(const WebCore::NavigationAction&);
static WebCore::FloatPoint clickLocationInRootViewCoordinatesForNavigationAction(const WebCore::NavigationAction&);
WebCore::NavigationType navigationType() const { return m_navigationType; }
- WebEvent::Modifiers modifiers() const { return m_modifiers; }
+ OptionSet<WebEvent::Modifier> modifiers() const { return m_modifiers; }
WebMouseEvent::Button mouseButton() const { return m_mouseButton; }
InjectedBundleHitTestResult* hitTestResult() const { return m_hitTestResult.get(); }
InjectedBundleNodeHandle* formElement() const { return m_formElement.get(); }
InjectedBundleNavigationAction(WebFrame*, const WebCore::NavigationAction&, RefPtr<WebCore::FormState>&&);
WebCore::NavigationType m_navigationType;
- WebEvent::Modifiers m_modifiers;
+ OptionSet<WebEvent::Modifier> m_modifiers;
WebMouseEvent::Button m_mouseButton;
WebMouseEvent::SyntheticClickType m_syntheticClickType { WebMouseEvent::NoTap };
WebCore::FloatPoint m_clickLocationInRootViewCoordinates;
m_client.willRunJavaScriptPrompt(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), m_client.base.clientInfo);
}
-void InjectedBundlePageUIClient::mouseDidMoveOverElement(WebPage* page, const HitTestResult& coreHitTestResult, WebEvent::Modifiers modifiers, RefPtr<API::Object>& userData)
+void InjectedBundlePageUIClient::mouseDidMoveOverElement(WebPage* page, const HitTestResult& coreHitTestResult, OptionSet<WebEvent::Modifier> modifiers, RefPtr<API::Object>& userData)
{
if (!m_client.mouseDidMoveOverElement)
return;
void willRunJavaScriptAlert(WebPage*, const String&, WebFrame*) override;
void willRunJavaScriptConfirm(WebPage*, const String&, WebFrame*) override;
void willRunJavaScriptPrompt(WebPage*, const String&, const String&, WebFrame*) override;
- void mouseDidMoveOverElement(WebPage*, const WebCore::HitTestResult&, WebEvent::Modifiers, RefPtr<API::Object>& userData) override;
+ void mouseDidMoveOverElement(WebPage*, const WebCore::HitTestResult&, OptionSet<WebEvent::Modifier>, RefPtr<API::Object>& userData) override;
void pageDidScroll(WebPage*) override;
String shouldGenerateFileForUpload(WebPage*, const String& originalFilePath) override;
{
FrameView* frameView = webFrame()->coreFrame()->view();
IntPoint contentsPoint = frameView->contentsToRootView(point);
- WebMouseEvent event(WebEvent::MouseDown, WebMouseEvent::RightButton, 0, contentsPoint, contentsPoint, 0, 0, 0, 1, static_cast<WebEvent::Modifiers>(0), WallTime::now(), WebCore::ForceAtClick);
+ WebMouseEvent event(WebEvent::MouseDown, WebMouseEvent::RightButton, 0, contentsPoint, contentsPoint, 0, 0, 0, 1, OptionSet<WebEvent::Modifier> { }, WallTime::now(), WebCore::ForceAtClick);
return handleContextMenuEvent(event);
}
break;
}
- unsigned modifiers = 0;
+ OptionSet<WebEvent::Modifier> modifiers;
if (event.shiftKey())
- modifiers |= WebEvent::ShiftKey;
+ modifiers.add(WebEvent::Modifier::ShiftKey);
if (event.ctrlKey())
- modifiers |= WebEvent::ControlKey;
+ modifiers.add(WebEvent::Modifier::ControlKey);
if (event.altKey())
- modifiers |= WebEvent::AltKey;
+ modifiers.add(WebEvent::Modifier::AltKey);
if (event.metaKey())
- modifiers |= WebEvent::MetaKey;
+ modifiers.add(WebEvent::Modifier::MetaKey);
- return std::make_unique<WebMouseEvent>(type, button, event.buttons(), m_plugin->convertToRootView(IntPoint(event.offsetX(), event.offsetY())), event.screenLocation(), 0, 0, 0, clickCount, static_cast<WebEvent::Modifiers>(modifiers), WallTime { }, 0);
+ return std::make_unique<WebMouseEvent>(type, button, event.buttons(), m_plugin->convertToRootView(IntPoint(event.offsetX(), event.offsetY())), event.screenLocation(), 0, 0, 0, clickCount, modifiers, WallTime { }, 0);
}
void PluginView::handleEvent(Event& event)
RefPtr<API::Object> userData;
// Notify the bundle client.
- m_page.injectedBundleUIClient().mouseDidMoveOverElement(&m_page, hitTestResult, static_cast<WebEvent::Modifiers>(modifierFlags), userData);
+ m_page.injectedBundleUIClient().mouseDidMoveOverElement(&m_page, hitTestResult, OptionSet<WebEvent::Modifier>::fromRaw(modifierFlags), userData);
// Notify the UIProcess.
WebHitTestResultData webHitTestResultData(hitTestResult);
void WebPage::simulateMouseDown(int button, WebCore::IntPoint position, int clickCount, WKEventModifiers modifiers, WallTime time)
{
- mouseEvent(WebMouseEvent(WebMouseEvent::MouseDown, static_cast<WebMouseEvent::Button>(button), 0, position, position, 0, 0, 0, clickCount, static_cast<WebMouseEvent::Modifiers>(modifiers), time, WebCore::ForceAtClick, WebMouseEvent::NoTap));
+ static_assert(sizeof(WKEventModifiers) >= sizeof(WebEvent::Modifier), "WKEventModifiers must be greater than or equal to the size of WebEvent::Modifier");
+ mouseEvent(WebMouseEvent(WebMouseEvent::MouseDown, static_cast<WebMouseEvent::Button>(button), 0, position, position, 0, 0, 0, clickCount, OptionSet<WebEvent::Modifier>::fromRaw(modifiers), time, WebCore::ForceAtClick, WebMouseEvent::NoTap));
}
void WebPage::simulateMouseUp(int button, WebCore::IntPoint position, int clickCount, WKEventModifiers modifiers, WallTime time)
{
- mouseEvent(WebMouseEvent(WebMouseEvent::MouseUp, static_cast<WebMouseEvent::Button>(button), 0, position, position, 0, 0, 0, clickCount, static_cast<WebMouseEvent::Modifiers>(modifiers), time, WebCore::ForceAtClick, WebMouseEvent::NoTap));
+ static_assert(sizeof(WKEventModifiers) >= sizeof(WebEvent::Modifier), "WKEventModifiers must be greater than or equal to the size of WebEvent::Modifier");
+ mouseEvent(WebMouseEvent(WebMouseEvent::MouseUp, static_cast<WebMouseEvent::Button>(button), 0, position, position, 0, 0, 0, clickCount, OptionSet<WebEvent::Modifier>::fromRaw(modifiers), time, WebCore::ForceAtClick, WebMouseEvent::NoTap));
}
void WebPage::simulateMouseMotion(WebCore::IntPoint position, WallTime time)
{
- mouseEvent(WebMouseEvent(WebMouseEvent::MouseMove, WebMouseEvent::NoButton, 0, position, position, 0, 0, 0, 0, WebMouseEvent::Modifiers(), time, 0, WebMouseEvent::NoTap));
+ mouseEvent(WebMouseEvent(WebMouseEvent::MouseMove, WebMouseEvent::NoButton, 0, position, position, 0, 0, 0, 0, OptionSet<WebEvent::Modifier> { }, time, 0, WebMouseEvent::NoTap));
}
void WebPage::setCompositionForTesting(const String& compositionString, uint64_t from, uint64_t length, bool suppressUnderline)