WebKit Bugzilla
Attachment 361106 Details for
Bug 194241
: Make WebEvent::Modifiers an OptionSet
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
To land
bug-194241-20190204151121.patch (text/plain), 80.52 KB, created by
Daniel Bates
on 2019-02-04 15:11:22 PST
(
hide
)
Description:
To land
Filename:
MIME Type:
Creator:
Daniel Bates
Created:
2019-02-04 15:11:22 PST
Size:
80.52 KB
patch
obsolete
>Subversion Revision: 240859 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 99a935c7d01df593613dffb36bb8bd518ede2130..125f1c3f1c49c507231a577d26d99ee55784dca6 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,114 @@ >+2019-02-04 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. >+ >+ * 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/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-01 Michael Catanzaro <mcatanzaro@igalia.com> > > [SOUP] Improve use of SoupCookiePersistentStorageType >diff --git a/Source/WebKit/Shared/API/c/WKSharedAPICast.h b/Source/WebKit/Shared/API/c/WKSharedAPICast.h >index 06f9744099bf07a279abc1b2758a90d1ad351be2..f854be1026f7895a11c465aac14c9253af558532 100644 >--- a/Source/WebKit/Shared/API/c/WKSharedAPICast.h >+++ b/Source/WebKit/Shared/API/c/WKSharedAPICast.h >@@ -281,18 +281,18 @@ inline WKTypeID toAPI(API::Object::Type type) > 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::ShiftKey)) > wkModifiers |= kWKEventModifiersShiftKey; >- if (modifiers & WebEvent::ControlKey) >+ if (modifiers.contains(WebEvent::ControlKey)) > wkModifiers |= kWKEventModifiersControlKey; >- if (modifiers & WebEvent::AltKey) >+ if (modifiers.contains(WebEvent::AltKey)) > wkModifiers |= kWKEventModifiersAltKey; >- if (modifiers & WebEvent::MetaKey) >+ if (modifiers.contains(WebEvent::MetaKey)) > wkModifiers |= kWKEventModifiersMetaKey; >- if (modifiers & WebEvent::CapsLockKey) >+ if (modifiers.contains(WebEvent::CapsLockKey)) > wkModifiers |= kWKEventModifiersCapsLockKey; > return wkModifiers; > } >diff --git a/Source/WebKit/Shared/NavigationActionData.cpp b/Source/WebKit/Shared/NavigationActionData.cpp >index f5e5abf952ba1a48e8e38bb56b32207ed5e5a34d..b9e6625901135378c3803f61e05e10fdecdcc891 100644 >--- a/Source/WebKit/Shared/NavigationActionData.cpp >+++ b/Source/WebKit/Shared/NavigationActionData.cpp >@@ -36,7 +36,7 @@ namespace WebKit { > void NavigationActionData::encode(IPC::Encoder& encoder) const > { > encoder.encodeEnum(navigationType); >- encoder.encodeEnum(modifiers); >+ encoder << modifiers; > encoder.encodeEnum(mouseButton); > encoder.encodeEnum(syntheticClickType); > encoder << userGestureTokenIdentifier; >@@ -61,10 +61,10 @@ Optional<NavigationActionData> NavigationActionData::decode(IPC::Decoder& decode > 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; >@@ -139,7 +139,7 @@ Optional<NavigationActionData> NavigationActionData::decode(IPC::Decoder& decode > 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) }}; >diff --git a/Source/WebKit/Shared/NavigationActionData.h b/Source/WebKit/Shared/NavigationActionData.h >index 06fff846d686b067d98971c724827bf30896bbc7..693b9178e4dde4ebbd1242262d6e876ea364c096 100644 >--- a/Source/WebKit/Shared/NavigationActionData.h >+++ b/Source/WebKit/Shared/NavigationActionData.h >@@ -43,7 +43,7 @@ struct NavigationActionData { > 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; >diff --git a/Source/WebKit/Shared/WebEvent.cpp b/Source/WebKit/Shared/WebEvent.cpp >index 5a086f97b8394a8c884ff60ff7957facde5df57f..db7de39e67cb35af9a05aa42b23fb82078aab440 100644 >--- a/Source/WebKit/Shared/WebEvent.cpp >+++ b/Source/WebKit/Shared/WebEvent.cpp >@@ -34,11 +34,10 @@ namespace WebKit { > > 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) >diff --git a/Source/WebKit/Shared/WebEvent.h b/Source/WebKit/Shared/WebEvent.h >index ff38638f4d20b1f5deef5293f2530aa4923fd9e6..6845aa731f44857a761a407e557b4a514b2b8272 100644 >--- a/Source/WebKit/Shared/WebEvent.h >+++ b/Source/WebKit/Shared/WebEvent.h >@@ -34,6 +34,7 @@ > #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> > >@@ -87,7 +88,7 @@ public: > #endif > }; > >- enum Modifiers { >+ enum Modifier : uint32_t { > ShiftKey = 1 << 0, > ControlKey = 1 << 1, > AltKey = 1 << 2, >@@ -97,27 +98,27 @@ public: > > 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(ShiftKey); } >+ bool controlKey() const { return m_modifiers.contains(ControlKey); } >+ bool altKey() const { return m_modifiers.contains(AltKey); } >+ bool metaKey() const { return m_modifiers.contains(MetaKey); } >+ bool capsLockKey() const { return m_modifiers.contains(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; > }; > >@@ -136,9 +137,9 @@ public: > 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); } >@@ -200,11 +201,11 @@ public: > > 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; } >@@ -253,15 +254,15 @@ public: > ~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; } >@@ -387,7 +388,7 @@ private: > 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) >@@ -476,7 +477,7 @@ private: > 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; } > >diff --git a/Source/WebKit/Shared/WebKeyboardEvent.cpp b/Source/WebKit/Shared/WebKeyboardEvent.cpp >index e9c05d349a4c32251f50de56a4dff0ab76ce0fe5..30b3f6848d9f023c92b49a4f6f3fffbf22d21084 100644 >--- a/Source/WebKit/Shared/WebKeyboardEvent.cpp >+++ b/Source/WebKit/Shared/WebKeyboardEvent.cpp >@@ -37,7 +37,7 @@ WebKeyboardEvent::WebKeyboardEvent() > > #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) >@@ -62,7 +62,7 @@ WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& > > #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) >@@ -83,7 +83,7 @@ WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& > > #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) >@@ -106,7 +106,7 @@ WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& > > #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) >@@ -129,7 +129,7 @@ WebKeyboardEvent::WebKeyboardEvent(Type type, const String& text, const String& > > #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) >diff --git a/Source/WebKit/Shared/WebMouseEvent.cpp b/Source/WebKit/Shared/WebMouseEvent.cpp >index 62ae732eb9babcdb9ad64274d623cdfc98d571de..17a3e1c92a87af05dafd600b72f08da40e2fadb7 100644 >--- a/Source/WebKit/Shared/WebMouseEvent.cpp >+++ b/Source/WebKit/Shared/WebMouseEvent.cpp >@@ -46,9 +46,9 @@ WebMouseEvent::WebMouseEvent() > } > > #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) >diff --git a/Source/WebKit/Shared/WebTouchEvent.cpp b/Source/WebKit/Shared/WebTouchEvent.cpp >index 16823f17f6f7953b85e7863e1df1be73a2148ba7..82ada77f587137901278b888218e9bbd0f3e7c0a 100644 >--- a/Source/WebKit/Shared/WebTouchEvent.cpp >+++ b/Source/WebKit/Shared/WebTouchEvent.cpp >@@ -32,7 +32,7 @@ > > 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)) > { >diff --git a/Source/WebKit/Shared/WebWheelEvent.cpp b/Source/WebKit/Shared/WebWheelEvent.cpp >index 9ec757598fa67d17b65dbda398e2db61220805db..495aad9cf056a9c8411f9445d057db21915cff2a 100644 >--- a/Source/WebKit/Shared/WebWheelEvent.cpp >+++ b/Source/WebKit/Shared/WebWheelEvent.cpp >@@ -32,7 +32,7 @@ namespace WebKit { > > 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) >@@ -50,7 +50,7 @@ WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint > } > > #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) >@@ -67,7 +67,7 @@ WebWheelEvent::WebWheelEvent(Type type, const IntPoint& position, const IntPoint > 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) >diff --git a/Source/WebKit/Shared/gtk/WebEventFactory.cpp b/Source/WebKit/Shared/gtk/WebEventFactory.cpp >index 6c297f5e7dedf069617d649708f9e2b93eeb9c70..bc7ba6f92df4d7420a3661f2c1968e9e0ce7cd44 100644 >--- a/Source/WebKit/Shared/gtk/WebEventFactory.cpp >+++ b/Source/WebKit/Shared/gtk/WebEventFactory.cpp >@@ -45,27 +45,27 @@ static inline bool isGdkKeyCodeFromKeyPad(unsigned keyval) > 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::ControlKey); > if (state & GDK_SHIFT_MASK) >- modifiers |= WebEvent::ShiftKey; >+ modifiers.add(WebEvent::ShiftKey); > if (state & GDK_MOD1_MASK) >- modifiers |= WebEvent::AltKey; >+ modifiers.add(WebEvent::AltKey); > if (state & GDK_META_MASK) >- modifiers |= WebEvent::MetaKey; >+ modifiers.add(WebEvent::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) >diff --git a/Source/WebKit/Shared/ios/NativeWebTouchEventIOS.mm b/Source/WebKit/Shared/ios/NativeWebTouchEventIOS.mm >index 086406c9e8ec3801d0c493e75dcf97649be62c62..995f640cf7365fa26ac9c3e517cf3be8f24c2681 100644 >--- a/Source/WebKit/Shared/ios/NativeWebTouchEventIOS.mm >+++ b/Source/WebKit/Shared/ios/NativeWebTouchEventIOS.mm >@@ -120,7 +120,7 @@ Vector<WebPlatformTouchPoint> NativeWebTouchEvent::extractWebTouchPoint(const _U > NativeWebTouchEvent::NativeWebTouchEvent(const _UIWebTouchEvent* event) > : WebTouchEvent( > webEventTypeForUIWebTouchEventType(event->type), >- static_cast<Modifiers>(0), >+ OptionSet<Modifier> { }, > WallTime::fromRawSeconds(event->timestamp), > extractWebTouchPoint(event), > positionForCGPoint(event->locationInDocumentCoordinates), >diff --git a/Source/WebKit/Shared/ios/WebIOSEventFactory.mm b/Source/WebKit/Shared/ios/WebIOSEventFactory.mm >index 4a9584e45bdea8c878b7fb57d1f3e1a559e411f6..8830be746484e115b8f9002132769bddb25720f1 100644 >--- a/Source/WebKit/Shared/ios/WebIOSEventFactory.mm >+++ b/Source/WebKit/Shared/ios/WebIOSEventFactory.mm >@@ -31,23 +31,21 @@ > #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::ShiftKey); > if (eventModifierFlags & WebEventFlagMaskControlKey) >- modifiers |= WebKit::WebEvent::ControlKey; >+ modifiers.add(WebKit::WebEvent::ControlKey); > if (eventModifierFlags & WebEventFlagMaskOptionKey) >- modifiers |= WebKit::WebEvent::AltKey; >+ modifiers.add(WebKit::WebEvent::AltKey); > if (eventModifierFlags & WebEventFlagMaskCommandKey) >- modifiers |= WebKit::WebEvent::MetaKey; >+ modifiers.add(WebKit::WebEvent::MetaKey); > if (eventModifierFlags & WebEventFlagMaskLeftCapsLockKey) >- modifiers |= WebKit::WebEvent::CapsLockKey; >- >- return static_cast<WebKit::WebEvent::Modifiers>(modifiers); >+ modifiers.add(WebKit::WebEvent::CapsLockKey); >+ return modifiers; > } > > WebKit::WebKeyboardEvent WebIOSEventFactory::createWebKeyboardEvent(::WebEvent *event) >@@ -74,7 +72,7 @@ WebKit::WebKeyboardEvent WebIOSEventFactory::createWebKeyboardEvent(::WebEvent * > 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') { >@@ -111,10 +109,9 @@ WebKit::WebMouseEvent WebIOSEventFactory::createWebMouseEvent(::WebEvent *event) > 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) >diff --git a/Source/WebKit/Shared/libwpe/WebEventFactory.cpp b/Source/WebKit/Shared/libwpe/WebEventFactory.cpp >index e37fc147eebfe34f2a5af3228c2824900c51ffd4..491499d5df8bf8f34087af4a17a1e208334c6556 100644 >--- a/Source/WebKit/Shared/libwpe/WebEventFactory.cpp >+++ b/Source/WebKit/Shared/libwpe/WebEventFactory.cpp >@@ -38,20 +38,18 @@ static inline bool isWPEKeyCodeFromKeyPad(unsigned keyCode) > 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::ControlKey); > if (eventModifiers & wpe_input_keyboard_modifier_shift) >- modifiers |= WebEvent::ShiftKey; >+ modifiers.add(WebEvent::ShiftKey); > if (eventModifiers & wpe_input_keyboard_modifier_alt) >- modifiers |= WebEvent::AltKey; >+ modifiers.add(WebEvent::AltKey); > if (eventModifiers & wpe_input_keyboard_modifier_meta) >- modifiers |= WebEvent::MetaKey; >- >- return static_cast<WebEvent::Modifiers>(modifiers); >+ modifiers.add(WebEvent::MetaKey); >+ return modifiers; > } > > WallTime wallTimeForEventTime(uint64_t timestamp) >@@ -176,7 +174,7 @@ WebWheelEvent WebEventFactory::createWebWheelEvent(struct wpe_input_axis_event* > 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) >@@ -232,7 +230,7 @@ WebTouchEvent WebEventFactory::createWebTouchEvent(struct wpe_input_touch_event* > 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) > >diff --git a/Source/WebKit/Shared/mac/WebEventFactory.mm b/Source/WebKit/Shared/mac/WebEventFactory.mm >index ed85d68d5194ab1a8ff34dc96561ba9546b223da..9954ca1df8b543f22c58513fb0ae32a1b277a0b3 100644 >--- a/Source/WebKit/Shared/mac/WebEventFactory.mm >+++ b/Source/WebKit/Shared/mac/WebEventFactory.mm >@@ -309,22 +309,20 @@ static inline bool isKeyUpEvent(NSEvent *event) > 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::ShiftKey); > if ([event modifierFlags] & NSEventModifierFlagControl) >- modifiers |= WebEvent::ControlKey; >+ modifiers.add(WebEvent::ControlKey); > if ([event modifierFlags] & NSEventModifierFlagOption) >- modifiers |= WebEvent::AltKey; >+ modifiers.add(WebEvent::AltKey); > if ([event modifierFlags] & NSEventModifierFlagCommand) >- modifiers |= WebEvent::MetaKey; >- >- return (WebEvent::Modifiers)modifiers; >+ modifiers.add(WebEvent::MetaKey); >+ return modifiers; > } > > static int typeForEvent(NSEvent *event) >@@ -362,7 +360,7 @@ WebMouseEvent WebEventFactory::createWebMouseEvent(NSEvent *event, NSEvent *last > 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); >@@ -420,9 +418,9 @@ WebWheelEvent WebEventFactory::createWebWheelEvent(NSEvent *event, NSView *windo > 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); > } > >@@ -440,7 +438,7 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(NSEvent *event, bool ha > 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. >diff --git a/Source/WebKit/Shared/win/WebEventFactory.cpp b/Source/WebKit/Shared/win/WebEventFactory.cpp >index 91e04fa922919e440859e354727ee478149f4cd8..e537306e93fa39dc97ce72abe017626d9efe7721 100644 >--- a/Source/WebKit/Shared/win/WebEventFactory.cpp >+++ b/Source/WebKit/Shared/win/WebEventFactory.cpp >@@ -105,28 +105,28 @@ static inline bool IsKeyInDownState(int vk) > 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::ControlKey); > if (wparam & MK_SHIFT) >- modifiers |= WebEvent::ShiftKey; >+ modifiers.add(WebEvent::ShiftKey); > if (IsKeyInDownState(VK_MENU)) >- modifiers |= WebEvent::AltKey; >- return static_cast<WebEvent::Modifiers>(modifiers); >+ modifiers.add(WebEvent::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::ControlKey); > if (IsKeyInDownState(VK_SHIFT)) >- modifiers |= WebEvent::ShiftKey; >+ modifiers.add(WebEvent::ShiftKey); > if (IsKeyInDownState(VK_MENU)) >- modifiers |= WebEvent::AltKey; >- return static_cast<WebEvent::Modifiers>(modifiers); >+ modifiers.add(WebEvent::AltKey); >+ return modifiers; > } > > static inline WebEvent::Type keyboardEventTypeForEvent(UINT message) >@@ -394,7 +394,7 @@ WebMouseEvent WebEventFactory::createWebMouseEvent(HWND hWnd, UINT message, WPAR > 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); > } >@@ -407,7 +407,7 @@ WebWheelEvent WebEventFactory::createWebWheelEvent(HWND hWnd, UINT message, WPAR > > WebWheelEvent::Granularity granularity = WebWheelEvent::ScrollByPixelWheelEvent; > >- WebEvent::Modifiers modifiers = modifiersForEvent(wParam); >+ auto modifiers = modifiersForEvent(wParam); > > int deltaX = 0; > int deltaY = 0; >@@ -455,7 +455,7 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(HWND hwnd, UINT message > 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()); > } >diff --git a/Source/WebKit/UIProcess/API/APINavigationAction.h b/Source/WebKit/UIProcess/API/APINavigationAction.h >index 182499c8cffb096a7347da382748fa2cc86f5f01..e7cf0812d6cd0ae80a246e36a4e72de4fe78cedb 100644 >--- a/Source/WebKit/UIProcess/API/APINavigationAction.h >+++ b/Source/WebKit/UIProcess/API/APINavigationAction.h >@@ -50,7 +50,7 @@ public: > 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; } >diff --git a/Source/WebKit/UIProcess/API/APIUIClient.h b/Source/WebKit/UIProcess/API/APIUIClient.h >index d788a50727b579fcd3d11d3423cfcf8f1b475ce0..97ab4ccbebfd2ad5fdb2feb1946f63a3070b8519 100644 >--- a/Source/WebKit/UIProcess/API/APIUIClient.h >+++ b/Source/WebKit/UIProcess/API/APIUIClient.h >@@ -90,7 +90,7 @@ public: > 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) >diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp >index 84104ac80bb738a0ff8c4713a3fa36b7b24fa2d4..f05bf0ac42f02bdff753897f7cd26fd4537a1cd6 100644 >--- a/Source/WebKit/UIProcess/API/C/WKPage.cpp >+++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp >@@ -1678,7 +1678,7 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient > 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; >diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKNavigationAction.mm b/Source/WebKit/UIProcess/API/Cocoa/WKNavigationAction.mm >index 47aacc3505b38492b70374f3c8d51ed326a318e0..658a2bc81a3300947aa763a7917a65b244f0a169 100644 >--- a/Source/WebKit/UIProcess/API/Cocoa/WKNavigationAction.mm >+++ b/Source/WebKit/UIProcess/API/Cocoa/WKNavigationAction.mm >@@ -77,21 +77,19 @@ static WKSyntheticClickType toWKSyntheticClickType(WebKit::WebMouseEvent::Synthe > #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::ShiftKey)) > modifierFlags |= NSEventModifierFlagShift; >- if (modifiers & WebKit::WebEvent::ControlKey) >+ if (modifiers.contains(WebKit::WebEvent::ControlKey)) > modifierFlags |= NSEventModifierFlagControl; >- if (modifiers & WebKit::WebEvent::AltKey) >+ if (modifiers.contains(WebKit::WebEvent::AltKey)) > modifierFlags |= NSEventModifierFlagOption; >- if (modifiers & WebKit::WebEvent::MetaKey) >+ if (modifiers.contains(WebKit::WebEvent::MetaKey)) > modifierFlags |= NSEventModifierFlagCommand; >- > return modifierFlags; > } > >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp b/Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp >index 159620ad989b410749a53413b31cd396cebd8ae7..85dd40ed59881205e66146568ffc1ea48e110190 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitPrivate.cpp >@@ -31,32 +31,32 @@ > #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; > } >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitPrivate.h b/Source/WebKit/UIProcess/API/glib/WebKitPrivate.h >index b771ec43e3f286a919d11972410703cd5e2b8f19..f9414b91f3eb9d586b9a03f5b5a979ff373e8155 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitPrivate.h >+++ b/Source/WebKit/UIProcess/API/glib/WebKitPrivate.h >@@ -29,7 +29,7 @@ > #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); >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp b/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp >index 2e52a3e5a6948120ac9880a476ae744ade08c6d2..c830f5a91ddf7f91c6bb8fffbf47b2f584baf401 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp >@@ -89,7 +89,7 @@ private: > 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); > } >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >index 67201d89eaa1f3f20df8b91f1da15d9c258b638f..fafc8036c7bb49da1f30b6723576c9d0cab0cb54 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >@@ -262,7 +262,7 @@ struct _WebKitWebViewPrivate { > GRefPtr<GMainLoop> modalLoop; > > GRefPtr<WebKitHitTestResult> mouseTargetHitTestResult; >- WebEvent::Modifiers mouseTargetModifiers; >+ OptionSet<WebEvent::Modifier> mouseTargetModifiers; > > GRefPtr<WebKitFindController> findController; > >@@ -2278,7 +2278,7 @@ void webkitWebViewMakePermissionRequest(WebKitWebView* webView, WebKitPermission > 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); >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h b/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h >index e9ef60c577c4541b872092d732444a7eabad9a4d..b5e14e1027a438febdfaeb2fe1e9d2d4d5c49608 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h >+++ b/Source/WebKit/UIProcess/API/glib/WebKitWebViewPrivate.h >@@ -65,7 +65,7 @@ void webkitWebViewDismissCurrentScriptDialog(WebKitWebView*); > 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*); >diff --git a/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp b/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp >index 62a52daedcbb5be5f7db48f817b8bcbdf1fa6c2d..a2502d1219f94962f420be5c8adc3941bf860c83 100644 >--- a/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp >+++ b/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp >@@ -1531,7 +1531,7 @@ void WebAutomationSession::simulateMouseInteraction(WebPageProxy& page, MouseInt > 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()) { >@@ -1590,7 +1590,7 @@ void WebAutomationSession::simulateKeyboardInteraction(WebPageProxy& page, Keybo > #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: >@@ -1644,7 +1644,7 @@ void WebAutomationSession::performMouseInteraction(const String& handle, const J > 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)) >@@ -1653,8 +1653,7 @@ void WebAutomationSession::performMouseInteraction(const String& handle, const J > 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 { >diff --git a/Source/WebKit/UIProcess/Automation/WebAutomationSession.h b/Source/WebKit/UIProcess/Automation/WebAutomationSession.h >index bad07029f547d674e623447f75f30a737c816db0..5dfdc18c096fd2e7566edff4c89e2d66caade93d 100644 >--- a/Source/WebKit/UIProcess/Automation/WebAutomationSession.h >+++ b/Source/WebKit/UIProcess/Automation/WebAutomationSession.h >@@ -247,7 +247,7 @@ private: > > // 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. >diff --git a/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp b/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp >index 415a18abfe53b590eafb45c6d9c36efb6c47683b..fbe3ff8bb211f1c4a6614738a53d8b8ec2de5a77 100644 >--- a/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp >+++ b/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp >@@ -34,17 +34,16 @@ > 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::ControlKey)) > state |= GDK_CONTROL_MASK; >- if (modifiers & WebEvent::ShiftKey) >+ if (modifiers.contains(WebEvent::ShiftKey)) > state |= GDK_SHIFT_MASK; >- if (modifiers & WebEvent::AltKey) >+ if (modifiers.contains(WebEvent::AltKey)) > state |= GDK_META_MASK; >- if (modifiers & WebEvent::CapsLockKey) >+ if (modifiers.contains(WebEvent::CapsLockKey)) > state |= GDK_LOCK_MASK; > return state; > } >@@ -102,7 +101,7 @@ static void doMotionEvent(GtkWidget* widget, const WebCore::IntPoint& location, > 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); >diff --git a/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm b/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm >index b7f139faa6146ebc13506cd4bda865fb4b8a278f..51eee0e83fc1b49d19b2fe9536c66ed512e5a8e4 100644 >--- a/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm >+++ b/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm >@@ -121,22 +121,22 @@ bool WebAutomationSession::wasEventSynthesizedForAutomation(NSEvent *event) > #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::MetaKey)) > modifiers |= NSEventModifierFlagCommand; >- if (keyModifiers & WebEvent::AltKey) >+ if (keyModifiers.contains(WebEvent::AltKey)) > modifiers |= NSEventModifierFlagOption; >- if (keyModifiers & WebEvent::ControlKey) >+ if (keyModifiers.contains(WebEvent::ControlKey)) > modifiers |= NSEventModifierFlagControl; >- if (keyModifiers & WebEvent::ShiftKey) >+ if (keyModifiers.contains(WebEvent::ShiftKey)) > modifiers |= NSEventModifierFlagShift; >- if (keyModifiers & WebEvent::CapsLockKey) >+ if (keyModifiers.contains(WebEvent::CapsLockKey)) > modifiers |= NSEventModifierFlagCapsLock; > > NSTimeInterval timestamp = [NSDate timeIntervalSinceReferenceDate]; >diff --git a/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp b/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp >index f54c21ed6c39ba4080a78f0877993aa05b40f364..5e413df8051d2334e113fdb6272380d44a40a036 100644 >--- a/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp >+++ b/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp >@@ -32,17 +32,15 @@ > 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::ControlKey)) > state |= wpe_input_keyboard_modifier_control; >- if (modifiers & WebEvent::ShiftKey) >+ if (modifiers.contains(WebEvent::ShiftKey)) > state |= wpe_input_keyboard_modifier_shift; >- if (modifiers & WebEvent::AltKey) >+ if (modifiers.contains(WebEvent::AltKey)) > state |= wpe_input_keyboard_modifier_alt; >- > return state; > } > >@@ -93,7 +91,7 @@ static void doMotionEvent(struct wpe_view_backend* viewBackend, const WebCore::I > 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); >diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h >index f5a9473a4245f8eb84b980608a830e5cbacedd15..cdc4faac8b23d2e8c3e4105c4cec93a525ec5b43 100644 >--- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.h >+++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.h >@@ -114,7 +114,7 @@ private: > 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; >diff --git a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm >index b8ab9859e149489b8ca220283eeb7269b67859d2..7f873a1e1ee6a667d486690799d1e9389f385cec 100644 >--- a/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm >+++ b/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm >@@ -687,23 +687,23 @@ void UIDelegate::UIClient::windowFrame(WebKit::WebPageProxy&, Function<void(WebC > }).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::ShiftKey)) > flags |= NSEventModifierFlagShift; >- if (modifiers & WebEvent::ControlKey) >+ if (modifiers.contains(WebEvent::ControlKey)) > flags |= NSEventModifierFlagControl; >- if (modifiers & WebEvent::AltKey) >+ if (modifiers.contains(WebEvent::AltKey)) > flags |= NSEventModifierFlagOption; >- if (modifiers & WebEvent::MetaKey) >+ if (modifiers.contains(WebEvent::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; >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 71996fa4d94fc91ecb283cb378c91d0547f8f91f..df18fde22958144b7752305300bc742851f00b14 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -4883,9 +4883,7 @@ void WebPageProxy::setStatusText(const String& text) > 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()); > } > >diff --git a/Source/WebKit/WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h b/Source/WebKit/WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h >index a09a93ef74dd30471d53c07346df8845de573ee2..749d32dd87b04d9d8df262c982577508737a9f38 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h >+++ b/Source/WebKit/WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h >@@ -54,7 +54,7 @@ public: > 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(); } >diff --git a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp >index 822baaf9dd2b19c4ab5c665917bbfb477353e045..fc122a6ad8c16c3a09cd1afb93d8970c05cc1e40 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp >+++ b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp >@@ -58,21 +58,21 @@ static FloatPoint clickLocationInRootViewCoordinatesForMouseEventData(const Opti > 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::ShiftKey); > if (keyStateEventData->ctrlKey) >- modifiers |= WebEvent::ControlKey; >+ modifiers.add(WebEvent::ControlKey); > if (keyStateEventData->altKey) >- modifiers |= WebEvent::AltKey; >+ modifiers.add(WebEvent::AltKey); > if (keyStateEventData->metaKey) >- modifiers |= WebEvent::MetaKey; >+ modifiers.add(WebEvent::MetaKey); > } >- return static_cast<WebEvent::Modifiers>(modifiers); >+ return modifiers; > } > > WebMouseEvent::Button InjectedBundleNavigationAction::mouseButtonForNavigationAction(const NavigationAction& navigationAction) >diff --git a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h >index 504b409e82900979955982988e485886a5ba3d9f..9481bd8d30dccd7eecfbb0a3a897dd8864ea19d9 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h >+++ b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h >@@ -47,13 +47,13 @@ class InjectedBundleNavigationAction : public API::ObjectImpl<API::Object::Type: > 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(); } >@@ -68,7 +68,7 @@ private: > 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; >diff --git a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp >index 6e282d9e0b90b290eaa08987a42b8f898ca9b005..58633d976182f744627ae0567eecfa2341439fb6 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp >+++ b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp >@@ -73,7 +73,7 @@ void InjectedBundlePageUIClient::willRunJavaScriptPrompt(WebPage* page, const St > 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; >diff --git a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h >index 0a33455fa0a00b2f803eb84d45d8aced3ff6c4f4..59f1b1ccac160b71625382dc2df5d22dd0d04d61 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h >+++ b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h >@@ -51,7 +51,7 @@ public: > 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; >diff --git a/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm b/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm >index 3467b3fecf911c071655a2eccf6942b00397dcac..9df5b6b55c0b71964b9d12f3771535e8c4fd6d6c 100644 >--- a/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm >+++ b/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm >@@ -1586,7 +1586,7 @@ bool PDFPlugin::showContextMenuAtPoint(const IntPoint& point) > { > 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); > } > >diff --git a/Source/WebKit/WebProcess/Plugins/PluginView.cpp b/Source/WebKit/WebProcess/Plugins/PluginView.cpp >index 0d7fbe134c60a740f9d9774fa915fe8853e0ccb9..418a4e9c7bb3091f249464a618d6dff0e777aeaf 100644 >--- a/Source/WebKit/WebProcess/Plugins/PluginView.cpp >+++ b/Source/WebKit/WebProcess/Plugins/PluginView.cpp >@@ -888,17 +888,17 @@ std::unique_ptr<WebEvent> PluginView::createWebEvent(MouseEvent& event) const > break; > } > >- unsigned modifiers = 0; >+ OptionSet<WebEvent::Modifier> modifiers; > if (event.shiftKey()) >- modifiers |= WebEvent::ShiftKey; >+ modifiers.add(WebEvent::ShiftKey); > if (event.ctrlKey()) >- modifiers |= WebEvent::ControlKey; >+ modifiers.add(WebEvent::ControlKey); > if (event.altKey()) >- modifiers |= WebEvent::AltKey; >+ modifiers.add(WebEvent::AltKey); > if (event.metaKey()) >- modifiers |= WebEvent::MetaKey; >+ modifiers.add(WebEvent::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) >diff --git a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp >index 6c8245fcdf8287ef7c57885be886c77d810a81c9..1cdb1c27e5bfb22afa9ecd2ed0736111874a7b5f 100644 >--- a/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp >+++ b/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp >@@ -671,7 +671,7 @@ void WebChromeClient::mouseDidMoveOverElement(const HitTestResult& hitTestResult > 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); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >index d9114af784b527d9cba6b15c3cf855bdc5f37894..46d24cf0c4d880fb9c66eac3f2d5b002fd20b69f 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >@@ -4801,17 +4801,19 @@ void WebPage::handleAlternativeTextUIResult(const String& result) > > 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 is not the same size as 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 is not the same size as 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)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194241
:
361101
|
361106
|
361147
|
361241