webdriver: Add handle any user prompts step for all commands (#38035)

- Add `handler any user prompt` step for all commands.
- Enable webdriver tests which were blocked by `handle any user prompt`
step.

---------

Signed-off-by: batu_hoang <hoang.binh.trong@huawei.com>
This commit is contained in:
batu_hoang 2025-07-17 17:47:47 +08:00 committed by GitHub
parent 18d1a62add
commit 345733a5c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
66 changed files with 859 additions and 472 deletions

View file

@ -934,7 +934,11 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
};
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
self.send_to_embedder(msg);
let AlertResponse::Ok = receiver.recv().unwrap();
receiver.recv().unwrap_or_else(|_| {
// If the receiver is closed, we assume the dialog was cancelled.
debug!("Alert dialog was cancelled or failed to show.");
AlertResponse::Ok
});
}
// https://html.spec.whatwg.org/multipage/#dom-confirm
@ -947,7 +951,14 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
};
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
self.send_to_embedder(msg);
receiver.recv().unwrap() == ConfirmResponse::Ok
match receiver.recv() {
Ok(ConfirmResponse::Ok) => true,
Ok(ConfirmResponse::Cancel) => false,
Err(_) => {
warn!("Confirm dialog was cancelled or failed to show.");
false
},
}
}
// https://html.spec.whatwg.org/multipage/#dom-prompt
@ -961,9 +972,13 @@ impl WindowMethods<crate::DomTypeHolder> for Window {
};
let msg = EmbedderMsg::ShowSimpleDialog(self.webview_id(), dialog);
self.send_to_embedder(msg);
match receiver.recv().unwrap() {
PromptResponse::Ok(input) => Some(input.into()),
PromptResponse::Cancel => None,
match receiver.recv() {
Ok(PromptResponse::Ok(input)) => Some(input.into()),
Ok(PromptResponse::Cancel) => None,
Err(_) => {
warn!("Prompt dialog was cancelled or failed to show.");
None
},
}
}