Skip to content

Commit

Permalink
LibWeb/WebDriver: Use actions queue for undo actions
Browse files Browse the repository at this point in the history
This reflects part of w3c/webdriver#1853

Also updated to reflect some minor spec text changes.
  • Loading branch information
AtkinsSJ committed Jan 3, 2025
1 parent cb3a82d commit 11f9612
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions Services/WebContent/WebDriverConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2372,10 +2372,10 @@ Messages::WebDriverClient::PerformActionsResponse WebDriverConnection::perform_a
// 15.8 Release Actions, https://w3c.github.io/webdriver/#release-actions
Messages::WebDriverClient::ReleaseActionsResponse WebDriverConnection::release_actions()
{
// 1. If the current browsing context is no longer open, return error with error code no such window.
// 1. If session's current browsing context is no longer open, return error with error code no such window.
TRY(ensure_current_browsing_context_is_open());

// 2. Let input state be the result of get the input state with current session and current top-level browsing context.
// 2. Let input state be the result of get the input state with session and current top-level browsing context.
auto& input_state = Web::WebDriver::get_input_state(*current_top_level_browsing_context());

// 3. Let actions options be a new actions options with the is element origin steps set to represents a web element,
Expand All @@ -2385,17 +2385,20 @@ Messages::WebDriverClient::ReleaseActionsResponse WebDriverConnection::release_a
.get_element_origin = &Web::WebDriver::get_web_element_origin,
};

// 4. Let undo actions be input state’s input cancel list in reverse order.
// 4. Wait for an action queue token with input state.
Web::WebDriver::wait_for_an_action_queue_token(input_state);

// 5. Let undo actions be input state’s input cancel list in reverse order.
auto undo_actions = input_state.input_cancel_list;
undo_actions.reverse();

// 5. Try to dispatch tick actions with arguments undo actions, 0, current browsing context, and actions options.
// 6. Try to dispatch actions with input state, undo actions, current browsing context, and actions options.
TRY(Web::WebDriver::dispatch_tick_actions(input_state, undo_actions, AK::Duration::zero(), current_browsing_context(), actions_options));

// 6. Reset the input state with current session and current top-level browsing context.
// 7. Reset the input state with session and session's current top-level browsing context.
Web::WebDriver::reset_input_state(*current_top_level_browsing_context());

// 7. Return success with data null.
// 8. Return success with data null.
return JsonValue {};
}

Expand Down

0 comments on commit 11f9612

Please sign in to comment.