Commit b6de5573 authored by Hui(Andy) Wu's avatar Hui(Andy) Wu Committed by Commit Bot

[autofill assistant] Add option to set field value with key press simulation.

Add a new field in scripts to allow setting values to a form field with
keyboard presses simulation. This allows scripter to try different way if
some fields are not working with setting value directly.

Change-Id: I87818605fb156470606eb06bf3091da125f79c24
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1542053Reviewed-by: default avatarMathias Carlen <mcarlen@chromium.org>
Reviewed-by: default avatarClemens Arbesser <arbesser@google.com>
Commit-Queue: Hui Wu <wuandy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#646586}
parent df432e88
...@@ -41,9 +41,6 @@ void SetFormFieldValueAction::OnWaitForElement(ActionDelegate* delegate, ...@@ -41,9 +41,6 @@ void SetFormFieldValueAction::OnWaitForElement(ActionDelegate* delegate,
return; return;
} }
// TODO(crbug.com/806868): Add flag to allow simulating key presses to set
// field value.
// Start with first value, then call OnSetFieldValue() recursively until done. // Start with first value, then call OnSetFieldValue() recursively until done.
OnSetFieldValue(delegate, std::move(callback), /* next = */ 0, OnSetFieldValue(delegate, std::move(callback), /* next = */ 0,
OkClientStatus()); OkClientStatus());
...@@ -66,10 +63,11 @@ void SetFormFieldValueAction::OnSetFieldValue(ActionDelegate* delegate, ...@@ -66,10 +63,11 @@ void SetFormFieldValueAction::OnSetFieldValue(ActionDelegate* delegate,
case SetFormFieldValueProto_KeyPress::kText: case SetFormFieldValueProto_KeyPress::kText:
delegate->SetFieldValue( delegate->SetFieldValue(
selector, key_field.text(), selector, key_field.text(),
/* simulate_key_presses = */ false, proto_.set_form_value().simulate_key_presses(),
base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue, base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
weak_ptr_factory_.GetWeakPtr(), delegate, weak_ptr_factory_.GetWeakPtr(), delegate,
std::move(callback), /* next = */ next + 1)); std::move(callback),
/* next = */ next + 1));
break; break;
case SetFormFieldValueProto_KeyPress::kKeycode: case SetFormFieldValueProto_KeyPress::kKeycode:
// DEPRECATED: the field `keycode' used to contain a single character to // DEPRECATED: the field `keycode' used to contain a single character to
...@@ -81,7 +79,8 @@ void SetFormFieldValueAction::OnSetFieldValue(ActionDelegate* delegate, ...@@ -81,7 +79,8 @@ void SetFormFieldValueAction::OnSetFieldValue(ActionDelegate* delegate,
selector, {std::string(1, char(key_field.keycode()))}, selector, {std::string(1, char(key_field.keycode()))},
base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue, base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
weak_ptr_factory_.GetWeakPtr(), delegate, weak_ptr_factory_.GetWeakPtr(), delegate,
std::move(callback), /* next = */ next + 1)); std::move(callback),
/* next = */ next + 1));
} else { } else {
DVLOG(3) DVLOG(3)
<< "SetFormFieldValueProto_KeyPress: field `keycode' is deprecated " << "SetFormFieldValueProto_KeyPress: field `keycode' is deprecated "
...@@ -96,7 +95,8 @@ void SetFormFieldValueAction::OnSetFieldValue(ActionDelegate* delegate, ...@@ -96,7 +95,8 @@ void SetFormFieldValueAction::OnSetFieldValue(ActionDelegate* delegate,
selector, {key_field.keyboard_input()}, selector, {key_field.keyboard_input()},
base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue, base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
weak_ptr_factory_.GetWeakPtr(), delegate, weak_ptr_factory_.GetWeakPtr(), delegate,
std::move(callback), /* next = */ next + 1)); std::move(callback),
/* next = */ next + 1));
break; break;
default: default:
DVLOG(1) << "Unrecognized field for SetFormFieldValueProto_KeyPress"; DVLOG(1) << "Unrecognized field for SetFormFieldValueProto_KeyPress";
......
...@@ -807,6 +807,9 @@ message SetFormFieldValueProto { ...@@ -807,6 +807,9 @@ message SetFormFieldValueProto {
// The value to set. // The value to set.
repeated KeyPress value = 2; repeated KeyPress value = 2;
// Whether to send key press events when setting values to HTML fields.
optional bool simulate_key_presses = 5;
} }
// Set an element attribute to a specific value. // Set an element attribute to a specific value.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment