Diff
Modified: trunk/Source/WebDriver/ChangeLog (268716 => 268717)
--- trunk/Source/WebDriver/ChangeLog 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebDriver/ChangeLog 2020-10-20 09:14:35 UTC (rev 268717)
@@ -1,3 +1,34 @@
+2020-10-20 Carlos Garcia Campos <cgar...@igalia.com>
+
+ WebDriver: add support for right variations of virtual keys
+ https://bugs.webkit.org/show_bug.cgi?id=217819
+
+ Reviewed by Brian Burg.
+
+ The browser is currently receiving the virtual keys already normalized, but WebDriver expects the key code to be
+ the actual one, not the normalized one. We need to send the raw virtual keys to the browser and do the
+ normalization there, but use the raw one when synthesizing the events.
+
+ Fixes: imported/w3c/webdriver/tests/perform_actions/key_events.py::test_modifier_key_sends_correct_events[\ue009-CONTROL]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_modifier_key_sends_correct_events[\ue008-SHIFT]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_modifier_key_sends_correct_events[\ue052-R_ALT]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[CONTROL-expected5]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_ALT-expected48]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_ARROWDOWN-expected49]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_ARROWLEFT-expected50]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_ARROWRIGHT-expected51]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_ARROWUP-expected52]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_DELETE-expected54]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_END-expected55]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_HOME-expected56]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_INSERT-expected57]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_PAGEDOWN-expected59]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[R_PAGEUP-expected60]
+ imported/w3c/webdriver/tests/perform_actions/key_events.py::test_special_key_sends_keydown[SHIFT-expected64]
+
+ * Session.cpp:
+ (WebDriver::Session::virtualKeyForKey): Do not normalize the virtual keys.
+
2020-10-02 Carlos Garcia Campos <cgar...@igalia.com>
WebDriver: add support for same site cookies
Modified: trunk/Source/WebDriver/Session.cpp (268716 => 268717)
--- trunk/Source/WebDriver/Session.cpp 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebDriver/Session.cpp 2020-10-20 09:14:35 UTC (rev 268717)
@@ -1934,17 +1934,23 @@
case 0xE007U:
return "Enter"_s;
case 0xE008U:
+ modifier = KeyModifier::Shift;
+ return "Shift"_s;
case 0xE050U:
modifier = KeyModifier::Shift;
- return "Shift"_s;
+ return "ShiftRight"_s;
case 0xE009U:
+ modifier = KeyModifier::Control;
+ return "Control"_s;
case 0xE051U:
modifier = KeyModifier::Control;
- return "Control"_s;
+ return "ControlRight"_s;
case 0xE00AU:
+ modifier = KeyModifier::Alternate;
+ return "Alternate"_s;
case 0xE052U:
modifier = KeyModifier::Alternate;
- return "Alternate"_s;
+ return "AlternateRight"_s;
case 0xE00BU:
return "Pause"_s;
case 0xE00CU:
@@ -1952,35 +1958,45 @@
case 0xE00DU:
return "Space"_s;
case 0xE00EU:
+ return "PageUp"_s;
case 0xE054U:
- return "PageUp"_s;
+ return "PageUpRight"_s;
case 0xE00FU:
+ return "PageDown"_s;
case 0xE055U:
- return "PageDown"_s;
+ return "PageDownRight"_s;
case 0xE010U:
+ return "End"_s;
case 0xE056U:
- return "End"_s;
+ return "EndRight"_s;
case 0xE011U:
+ return "Home"_s;
case 0xE057U:
- return "Home"_s;
+ return "HomeRight"_s;
case 0xE012U:
+ return "LeftArrow"_s;
case 0xE058U:
- return "LeftArrow"_s;
+ return "LeftArrowRight"_s;
case 0xE013U:
+ return "UpArrow"_s;
case 0xE059U:
- return "UpArrow"_s;
+ return "UpArrowRight"_s;
case 0xE014U:
+ return "RightArrow"_s;
case 0xE05AU:
- return "RightArrow"_s;
+ return "RightArrowRight"_s;
case 0xE015U:
+ return "DownArrow"_s;
case 0xE05BU:
- return "DownArrow"_s;
+ return "DownArrowRight"_s;
case 0xE016U:
+ return "Insert"_s;
case 0xE05CU:
- return "Insert"_s;
+ return "InsertRight"_s;
case 0xE017U:
+ return "Delete"_s;
case 0xE05DU:
- return "Delete"_s;
+ return "DeleteRight"_s;
case 0xE018U:
return "Semicolon"_s;
case 0xE019U:
@@ -2042,9 +2058,11 @@
case 0xE03CU:
return "Function12"_s;
case 0xE03DU:
+ modifier = KeyModifier::Meta;
+ return "Meta"_s;
case 0xE053U:
modifier = KeyModifier::Meta;
- return "Meta"_s;
+ return "MetaRight"_s;
default:
break;
}
Modified: trunk/Source/WebKit/ChangeLog (268716 => 268717)
--- trunk/Source/WebKit/ChangeLog 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/ChangeLog 2020-10-20 09:14:35 UTC (rev 268717)
@@ -1,3 +1,29 @@
+2020-10-20 Carlos Garcia Campos <cgar...@igalia.com>
+
+ WebDriver: add support for right variations of virtual keys
+ https://bugs.webkit.org/show_bug.cgi?id=217819
+
+ Reviewed by Brian Burg.
+
+ Instead of using a HashSet the pressed virtual keys are now stored in a HashMap where the key is the normalized
+ virtual key and the value is the raw virtual key.
+
+ * UIProcess/Automation/Automation.json:
+ * UIProcess/Automation/SimulatedInputDispatcher.cpp:
+ (WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
+ * UIProcess/Automation/SimulatedInputDispatcher.h:
+ * UIProcess/Automation/WebAutomationSession.cpp:
+ (WebKit::normalizedVirtualKey):
+ (WebKit::WebAutomationSession::performInteractionSequence):
+ * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
+ (WebKit::keyCodeForVirtualKey):
+ (WebKit::modifiersForKeyCode):
+ * UIProcess/Automation/mac/WebAutomationSessionMac.mm:
+ (WebKit::keyCodeForVirtualKey):
+ * UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp:
+ (WebKit::keyCodeForVirtualKey):
+ (WebKit::modifiersForKeyCode):
+
2020-10-19 Peng Liu <peng.l...@apple.com>
Two feature flag names are incorrect
Modified: trunk/Source/WebKit/UIProcess/Automation/Automation.json (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/Automation.json 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/Automation.json 2020-10-20 09:14:35 UTC (rev 268717)
@@ -149,9 +149,13 @@
"description": "Enumerates different platform-independent virtual keys on a physical keyboard whose input via keyboard may or may not produce characters.",
"enum": [
"Shift",
+ "ShiftRight",
"Control",
+ "ControlRight",
"Alternate",
+ "AlternateRight",
"Meta",
+ "MetaRight",
"Command",
"Cancel",
"Help",
@@ -162,15 +166,25 @@
"Pause",
"Escape",
"PageUp",
+ "PageUpRight",
"PageDown",
+ "PageDownRight",
"End",
+ "EndRight",
"Home",
+ "HomeRight",
"LeftArrow",
+ "LeftArrowRight",
"UpArrow",
+ "UpArrowRight",
"RightArrow",
+ "RightArrowRight",
"DownArrow",
+ "DownArrowRight",
"Insert",
+ "InsertRight",
"Delete",
+ "DeleteRight",
"Space",
"Semicolon",
"Equals",
Modified: trunk/Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.cpp 2020-10-20 09:14:35 UTC (rev 268717)
@@ -349,31 +349,31 @@
m_client.simulateKeyboardInteraction(m_page, KeyboardInteraction::KeyRelease, a.pressedCharKey.value(), WTFMove(eventDispatchFinished));
} else if (a.pressedVirtualKeys != b.pressedVirtualKeys) {
bool simulatedAnInteraction = false;
- for (VirtualKey key : b.pressedVirtualKeys) {
- if (!a.pressedVirtualKeys.contains(key)) {
+ for (const auto& iter : b.pressedVirtualKeys) {
+ if (!a.pressedVirtualKeys.contains(iter.key)) {
ASSERT_WITH_MESSAGE(!simulatedAnInteraction, "Only one VirtualKey may differ at a time between two input source states.");
if (simulatedAnInteraction)
continue;
simulatedAnInteraction = true;
#if !LOG_DISABLED
- String virtualKeyName = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(key);
+ String virtualKeyName = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(iter.value);
LOG(Automation, "SimulatedInputDispatcher[%p]: simulating KeyPress[key=%s] for transition to %d.%d", this, virtualKeyName.utf8().data(), m_keyframeIndex, m_inputSourceStateIndex);
#endif
- m_client.simulateKeyboardInteraction(m_page, KeyboardInteraction::KeyPress, key, WTFMove(eventDispatchFinished));
+ m_client.simulateKeyboardInteraction(m_page, KeyboardInteraction::KeyPress, iter.value, WTFMove(eventDispatchFinished));
}
}
- for (VirtualKey key : a.pressedVirtualKeys) {
- if (!b.pressedVirtualKeys.contains(key)) {
+ for (const auto& iter : a.pressedVirtualKeys) {
+ if (!b.pressedVirtualKeys.contains(iter.key)) {
ASSERT_WITH_MESSAGE(!simulatedAnInteraction, "Only one VirtualKey may differ at a time between two input source states.");
if (simulatedAnInteraction)
continue;
simulatedAnInteraction = true;
#if !LOG_DISABLED
- String virtualKeyName = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(key);
+ String virtualKeyName = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(iter.value);
LOG(Automation, "SimulatedInputDispatcher[%p]: simulating KeyRelease[key=%s] for transition to %d.%d", this, virtualKeyName.utf8().data(), m_keyframeIndex, m_inputSourceStateIndex);
#endif
- m_client.simulateKeyboardInteraction(m_page, KeyboardInteraction::KeyRelease, key, WTFMove(eventDispatchFinished));
+ m_client.simulateKeyboardInteraction(m_page, KeyboardInteraction::KeyRelease, iter.value, WTFMove(eventDispatchFinished));
}
}
} else
Modified: trunk/Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/SimulatedInputDispatcher.h 2020-10-20 09:14:35 UTC (rev 268717)
@@ -56,7 +56,7 @@
using KeyboardInteraction = Inspector::Protocol::Automation::KeyboardInteractionType;
using VirtualKey = Inspector::Protocol::Automation::VirtualKey;
-using VirtualKeySet = HashSet<VirtualKey, WTF::IntHash<VirtualKey>, WTF::StrongEnumHashTraits<VirtualKey>>;
+using VirtualKeyMap = HashMap<VirtualKey, VirtualKey, WTF::IntHash<VirtualKey>, WTF::StrongEnumHashTraits<VirtualKey>>;
using CharKey = char; // For WebDriver, this only needs to support ASCII characters on 102-key keyboard.
using MouseButton = Inspector::Protocol::Automation::MouseButton;
using MouseInteraction = Inspector::Protocol::Automation::MouseInteraction;
@@ -77,7 +77,7 @@
struct SimulatedInputSourceState {
Optional<CharKey> pressedCharKey;
- VirtualKeySet pressedVirtualKeys;
+ VirtualKeyMap pressedVirtualKeys;
Optional<MouseButton> pressedMouseButton;
Optional<MouseMoveOrigin> origin;
Optional<String> nodeHandle;
Modified: trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp 2020-10-20 09:14:35 UTC (rev 268717)
@@ -1860,6 +1860,46 @@
}
#endif // ENABLE(WEBDRIVER_ACTIONS_API)
+#if ENABLE(WEBDRIVER_ACTIONS_API)
+// §15.4.2 Keyboard actions
+// https://w3c.github.io/webdriver/#dfn-normalised-key-value
+static VirtualKey normalizedVirtualKey(VirtualKey key)
+{
+ switch (key) {
+ case Inspector::Protocol::Automation::VirtualKey::ControlRight:
+ return Inspector::Protocol::Automation::VirtualKey::Control;
+ case Inspector::Protocol::Automation::VirtualKey::ShiftRight:
+ return Inspector::Protocol::Automation::VirtualKey::Shift;
+ case Inspector::Protocol::Automation::VirtualKey::AlternateRight:
+ return Inspector::Protocol::Automation::VirtualKey::Alternate;
+ case Inspector::Protocol::Automation::VirtualKey::MetaRight:
+ return Inspector::Protocol::Automation::VirtualKey::Meta;
+ case Inspector::Protocol::Automation::VirtualKey::DownArrowRight:
+ return Inspector::Protocol::Automation::VirtualKey::DownArrow;
+ case Inspector::Protocol::Automation::VirtualKey::UpArrowRight:
+ return Inspector::Protocol::Automation::VirtualKey::UpArrow;
+ case Inspector::Protocol::Automation::VirtualKey::LeftArrowRight:
+ return Inspector::Protocol::Automation::VirtualKey::LeftArrow;
+ case Inspector::Protocol::Automation::VirtualKey::RightArrowRight:
+ return Inspector::Protocol::Automation::VirtualKey::RightArrow;
+ case Inspector::Protocol::Automation::VirtualKey::PageUpRight:
+ return Inspector::Protocol::Automation::VirtualKey::PageUp;
+ case Inspector::Protocol::Automation::VirtualKey::PageDownRight:
+ return Inspector::Protocol::Automation::VirtualKey::PageDown;
+ case Inspector::Protocol::Automation::VirtualKey::EndRight:
+ return Inspector::Protocol::Automation::VirtualKey::End;
+ case Inspector::Protocol::Automation::VirtualKey::HomeRight:
+ return Inspector::Protocol::Automation::VirtualKey::Home;
+ case Inspector::Protocol::Automation::VirtualKey::DeleteRight:
+ return Inspector::Protocol::Automation::VirtualKey::Delete;
+ case Inspector::Protocol::Automation::VirtualKey::InsertRight:
+ return Inspector::Protocol::Automation::VirtualKey::Insert;
+ default:
+ return key;
+ }
+}
+#endif // ENABLE(WEBDRIVER_ACTIONS_API)
+
void WebAutomationSession::performInteractionSequence(const Inspector::Protocol::Automation::BrowsingContextHandle& handle, const Inspector::Protocol::Automation::FrameHandle& frameHandle, Ref<JSON::Array>&& inputSources, Ref<JSON::Array>&& steps, Ref<WebAutomationSession::PerformInteractionSequenceCallback>&& callback)
{
// This command implements WebKit support for §17.5 Perform Actions.
@@ -1971,7 +2011,7 @@
sourceState.pressedCharKey = pressedCharKeyString.characterAt(0);
if (auto pressedVirtualKeysArray = stateObject->getArray("pressedVirtualKeys"_s)) {
- VirtualKeySet pressedVirtualKeys { };
+ VirtualKeyMap pressedVirtualKeys;
for (auto it = pressedVirtualKeysArray->begin(); it != pressedVirtualKeysArray->end(); ++it) {
auto pressedVirtualKeyString = (*it)->asString();
@@ -1982,7 +2022,7 @@
if (!parsedVirtualKey)
ASYNC_FAIL_WITH_PREDEFINED_ERROR_AND_DETAILS(InvalidParameter, "Encountered an unknown virtual key value.");
else
- pressedVirtualKeys.add(parsedVirtualKey.value());
+ pressedVirtualKeys.add(normalizedVirtualKey(parsedVirtualKey.value()), parsedVirtualKey.value());
}
sourceState.pressedVirtualKeys = pressedVirtualKeys;
Modified: trunk/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp 2020-10-20 09:14:35 UTC (rev 268717)
@@ -122,12 +122,20 @@
{
switch (key) {
case Inspector::Protocol::Automation::VirtualKey::Shift:
+ return GDK_KEY_Shift_L;
+ case Inspector::Protocol::Automation::VirtualKey::ShiftRight:
return GDK_KEY_Shift_R;
case Inspector::Protocol::Automation::VirtualKey::Control:
+ return GDK_KEY_Control_L;
+ case Inspector::Protocol::Automation::VirtualKey::ControlRight:
return GDK_KEY_Control_R;
case Inspector::Protocol::Automation::VirtualKey::Alternate:
return GDK_KEY_Alt_L;
+ case Inspector::Protocol::Automation::VirtualKey::AlternateRight:
+ return GDK_KEY_Alt_R;
case Inspector::Protocol::Automation::VirtualKey::Meta:
+ return GDK_KEY_Meta_L;
+ case Inspector::Protocol::Automation::VirtualKey::MetaRight:
return GDK_KEY_Meta_R;
case Inspector::Protocol::Automation::VirtualKey::Command:
return GDK_KEY_Execute;
@@ -149,24 +157,44 @@
return GDK_KEY_Escape;
case Inspector::Protocol::Automation::VirtualKey::PageUp:
return GDK_KEY_Page_Up;
+ case Inspector::Protocol::Automation::VirtualKey::PageUpRight:
+ return GDK_KEY_KP_Page_Up;
case Inspector::Protocol::Automation::VirtualKey::PageDown:
return GDK_KEY_Page_Down;
+ case Inspector::Protocol::Automation::VirtualKey::PageDownRight:
+ return GDK_KEY_KP_Page_Down;
case Inspector::Protocol::Automation::VirtualKey::End:
return GDK_KEY_End;
+ case Inspector::Protocol::Automation::VirtualKey::EndRight:
+ return GDK_KEY_KP_End;
case Inspector::Protocol::Automation::VirtualKey::Home:
return GDK_KEY_Home;
+ case Inspector::Protocol::Automation::VirtualKey::HomeRight:
+ return GDK_KEY_KP_Home;
case Inspector::Protocol::Automation::VirtualKey::LeftArrow:
return GDK_KEY_Left;
+ case Inspector::Protocol::Automation::VirtualKey::LeftArrowRight:
+ return GDK_KEY_KP_Left;
case Inspector::Protocol::Automation::VirtualKey::UpArrow:
return GDK_KEY_Up;
+ case Inspector::Protocol::Automation::VirtualKey::UpArrowRight:
+ return GDK_KEY_KP_Up;
case Inspector::Protocol::Automation::VirtualKey::RightArrow:
return GDK_KEY_Right;
+ case Inspector::Protocol::Automation::VirtualKey::RightArrowRight:
+ return GDK_KEY_KP_Right;
case Inspector::Protocol::Automation::VirtualKey::DownArrow:
return GDK_KEY_Down;
+ case Inspector::Protocol::Automation::VirtualKey::DownArrowRight:
+ return GDK_KEY_KP_Down;
case Inspector::Protocol::Automation::VirtualKey::Insert:
return GDK_KEY_Insert;
+ case Inspector::Protocol::Automation::VirtualKey::InsertRight:
+ return GDK_KEY_KP_Insert;
case Inspector::Protocol::Automation::VirtualKey::Delete:
return GDK_KEY_Delete;
+ case Inspector::Protocol::Automation::VirtualKey::DeleteRight:
+ return GDK_KEY_KP_Delete;
case Inspector::Protocol::Automation::VirtualKey::Space:
return GDK_KEY_space;
case Inspector::Protocol::Automation::VirtualKey::Semicolon:
@@ -240,12 +268,16 @@
static unsigned modifiersForKeyCode(unsigned keyCode)
{
switch (keyCode) {
+ case GDK_KEY_Shift_L:
case GDK_KEY_Shift_R:
return GDK_SHIFT_MASK;
+ case GDK_KEY_Control_L:
case GDK_KEY_Control_R:
return GDK_CONTROL_MASK;
case GDK_KEY_Alt_L:
+ case GDK_KEY_Alt_R:
return GDK_MOD1_MASK;
+ case GDK_KEY_Meta_L:
case GDK_KEY_Meta_R:
return GDK_META_MASK;
}
Modified: trunk/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/mac/WebAutomationSessionMac.mm 2020-10-20 09:14:35 UTC (rev 268717)
@@ -411,15 +411,23 @@
switch (key) {
case VirtualKey::Shift:
return kVK_Shift;
+ case VirtualKey::ShiftRight:
+ return kVK_RightShift;
case VirtualKey::Control:
return kVK_Control;
+ case VirtualKey::ControlRight:
+ return kVK_RightControl;
case VirtualKey::Alternate:
return kVK_Option;
+ case VirtualKey::AlternateRight:
+ return kVK_RightOption;
case VirtualKey::Meta:
// The 'meta' key does not exist on Apple keyboards and is usually
// mapped to the Command key when using third-party keyboards.
case VirtualKey::Command:
return kVK_Command;
+ case VirtualKey::MetaRight:
+ return kVK_RightCommand;
case VirtualKey::Help:
return kVK_Help;
case VirtualKey::Backspace:
@@ -440,26 +448,36 @@
case VirtualKey::Escape:
return kVK_Escape;
case VirtualKey::PageUp:
+ case VirtualKey::PageUpRight:
return kVK_PageUp;
case VirtualKey::PageDown:
+ case VirtualKey::PageDownRight:
return kVK_PageDown;
case VirtualKey::End:
+ case VirtualKey::EndRight:
return kVK_End;
case VirtualKey::Home:
+ case VirtualKey::HomeRight:
return kVK_Home;
case VirtualKey::LeftArrow:
+ case VirtualKey::LeftArrowRight:
return kVK_LeftArrow;
case VirtualKey::UpArrow:
+ case VirtualKey::UpArrowRight:
return kVK_UpArrow;
case VirtualKey::RightArrow:
+ case VirtualKey::RightArrowRight:
return kVK_RightArrow;
case VirtualKey::DownArrow:
+ case VirtualKey::DownArrowRight:
return kVK_DownArrow;
case VirtualKey::Insert:
+ case VirtualKey::InsertRight:
// The 'insert' key does not exist on Apple keyboards and has no keyCode.
// The semantics are unclear so just abort and do nothing.
return 0;
case VirtualKey::Delete:
+ case VirtualKey::DeleteRight:
return kVK_ForwardDelete;
case VirtualKey::Space:
return kVK_Space;
Modified: trunk/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp (268716 => 268717)
--- trunk/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/Source/WebKit/UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp 2020-10-20 09:14:35 UTC (rev 268717)
@@ -163,12 +163,20 @@
{
switch (key) {
case Inspector::Protocol::Automation::VirtualKey::Shift:
+ return WPE_KEY_Shift_L;
+ case Inspector::Protocol::Automation::VirtualKey::ShiftRight:
return WPE_KEY_Shift_R;
case Inspector::Protocol::Automation::VirtualKey::Control:
+ return WPE_KEY_Control_L;
+ case Inspector::Protocol::Automation::VirtualKey::ControlRight:
return WPE_KEY_Control_R;
case Inspector::Protocol::Automation::VirtualKey::Alternate:
return WPE_KEY_Alt_L;
+ case Inspector::Protocol::Automation::VirtualKey::AlternateRight:
+ return WPE_KEY_Alt_R;
case Inspector::Protocol::Automation::VirtualKey::Meta:
+ return WPE_KEY_Meta_L;
+ case Inspector::Protocol::Automation::VirtualKey::MetaRight:
return WPE_KEY_Meta_R;
case Inspector::Protocol::Automation::VirtualKey::Command:
return WPE_KEY_Execute;
@@ -190,24 +198,44 @@
return WPE_KEY_Escape;
case Inspector::Protocol::Automation::VirtualKey::PageUp:
return WPE_KEY_Page_Up;
+ case Inspector::Protocol::Automation::VirtualKey::PageUpRight:
+ return WPE_KEY_KP_Page_Up;
case Inspector::Protocol::Automation::VirtualKey::PageDown:
return WPE_KEY_Page_Down;
+ case Inspector::Protocol::Automation::VirtualKey::PageDownRight:
+ return WPE_KEY_KP_Page_Down;
case Inspector::Protocol::Automation::VirtualKey::End:
return WPE_KEY_End;
+ case Inspector::Protocol::Automation::VirtualKey::EndRight:
+ return WPE_KEY_KP_End;
case Inspector::Protocol::Automation::VirtualKey::Home:
return WPE_KEY_Home;
+ case Inspector::Protocol::Automation::VirtualKey::HomeRight:
+ return WPE_KEY_KP_Home;
case Inspector::Protocol::Automation::VirtualKey::LeftArrow:
return WPE_KEY_Left;
+ case Inspector::Protocol::Automation::VirtualKey::LeftArrowRight:
+ return WPE_KEY_KP_Left;
case Inspector::Protocol::Automation::VirtualKey::UpArrow:
return WPE_KEY_Up;
+ case Inspector::Protocol::Automation::VirtualKey::UpArrowRight:
+ return WPE_KEY_KP_Up;
case Inspector::Protocol::Automation::VirtualKey::RightArrow:
return WPE_KEY_Right;
+ case Inspector::Protocol::Automation::VirtualKey::RightArrowRight:
+ return WPE_KEY_KP_Right;
case Inspector::Protocol::Automation::VirtualKey::DownArrow:
return WPE_KEY_Down;
+ case Inspector::Protocol::Automation::VirtualKey::DownArrowRight:
+ return WPE_KEY_KP_Down;
case Inspector::Protocol::Automation::VirtualKey::Insert:
return WPE_KEY_Insert;
+ case Inspector::Protocol::Automation::VirtualKey::InsertRight:
+ return WPE_KEY_KP_Insert;
case Inspector::Protocol::Automation::VirtualKey::Delete:
return WPE_KEY_Delete;
+ case Inspector::Protocol::Automation::VirtualKey::DeleteRight:
+ return WPE_KEY_KP_Delete;
case Inspector::Protocol::Automation::VirtualKey::Space:
return WPE_KEY_space;
case Inspector::Protocol::Automation::VirtualKey::Semicolon:
@@ -281,12 +309,16 @@
static uint32_t modifiersForKeyCode(unsigned keyCode)
{
switch (keyCode) {
+ case WPE_KEY_Shift_L:
case WPE_KEY_Shift_R:
return wpe_input_keyboard_modifier_shift;
+ case WPE_KEY_Control_L:
case WPE_KEY_Control_R:
return wpe_input_keyboard_modifier_control;
case WPE_KEY_Alt_L:
+ case WPE_KEY_Alt_R:
return wpe_input_keyboard_modifier_alt;
+ case WPE_KEY_Meta_L:
case WPE_KEY_Meta_R:
return wpe_input_keyboard_modifier_meta;
}
Modified: trunk/WebDriverTests/ChangeLog (268716 => 268717)
--- trunk/WebDriverTests/ChangeLog 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/WebDriverTests/ChangeLog 2020-10-20 09:14:35 UTC (rev 268717)
@@ -1,3 +1,14 @@
+2020-10-20 Carlos Garcia Campos <cgar...@igalia.com>
+
+ WebDriver: add support for right variations of virtual keys
+ https://bugs.webkit.org/show_bug.cgi?id=217819
+
+ Reviewed by Brian Burg.
+
+ Remove expectations for tests that are now passing.
+
+ * TestExpectations.json:
+
2020-10-02 Carlos Garcia Campos <cgar...@igalia.com>
Unreviewed Gardening. Remove expectations for tests fixed in r267872
Modified: trunk/WebDriverTests/TestExpectations.json (268716 => 268717)
--- trunk/WebDriverTests/TestExpectations.json 2020-10-20 08:00:55 UTC (rev 268716)
+++ trunk/WebDriverTests/TestExpectations.json 2020-10-20 09:14:35 UTC (rev 268717)
@@ -246,18 +246,9 @@
"imported/w3c/webdriver/tests/perform_actions/key_events.py": {
"subtests": {
- "test_modifier_key_sends_correct_events[\\ue009-CONTROL]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_modifier_key_sends_correct_events[\\ue03d-META]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_modifier_key_sends_correct_events[\\ue008-SHIFT]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
- "test_modifier_key_sends_correct_events[\\ue052-R_ALT]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_modifier_key_sends_correct_events[\\ue053-R_META]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
@@ -273,15 +264,6 @@
"test_printable_key_sends_correct_events[\\uf6c2-]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[SHIFT-expected64]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
- "test_special_key_sends_keydown[R_ARROWRIGHT-expected51]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
- "test_special_key_sends_keydown[R_PAGEUP-expected60]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[META-expected30]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
@@ -288,9 +270,6 @@
"test_special_key_sends_keydown[NULL-expected32]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[CONTROL-expected5]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[R_META-expected58]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
@@ -297,33 +276,15 @@
"test_special_key_sends_keydown[SEMICOLON-expected62]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[R_ALT-expected48]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
- "test_special_key_sends_keydown[R_DELETE-expected54]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[PAUSE-expected45]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[R_ARROWUP-expected52]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[CLEAR-expected4]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[R_ARROWLEFT-expected50]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[EQUALS-expected12]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[R_PAGEDOWN-expected59]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
- "test_special_key_sends_keydown[R_INSERT-expected57]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[ENTER-expected11]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
@@ -330,12 +291,6 @@
"test_special_key_sends_keydown[CANCEL-expected3]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[R_END-expected55]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
- "test_special_key_sends_keydown[R_HOME-expected56]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_special_key_sends_keydown[ZENKAKUHANKAKU-expected69]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
@@ -342,9 +297,6 @@
"test_special_key_sends_keydown[SEPARATOR-expected63]": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
},
- "test_special_key_sends_keydown[R_ARROWDOWN-expected49]": {
- "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
- },
"test_sequence_of_keydown_printable_keys_sends_events": {
"expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}
}