mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
webdriver: Element click waits for navigation complete (#37935)
Step 11 in https://w3c.github.io/webdriver/#dfn-element-click > [Try](https://w3c.github.io/webdriver/#dfn-try) to [wait for navigation to complete](https://w3c.github.io/webdriver/#dfn-wait-for-navigation-to-complete) with session. This fixes issue in which element_click triggers navigation, but incoming commands still interact with old page. Testing: https://github.com/longvatrong111/servo/actions/runs/16175767947 https://github.com/longvatrong111/servo/actions/runs/16175770044 Signed-off-by: batu_hoang <longvatrong111@gmail.com>
This commit is contained in:
parent
ff02fdad6d
commit
f155c95e1b
6 changed files with 137 additions and 63 deletions
|
@ -33,7 +33,9 @@ use webdriver::error::ErrorStatus;
|
|||
use crate::document_collection::DocumentCollection;
|
||||
use crate::dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::DocumentBinding::{
|
||||
DocumentMethods, DocumentReadyState,
|
||||
};
|
||||
use crate::dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::HTMLElementBinding::HTMLElementMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
|
||||
|
@ -1717,3 +1719,20 @@ pub(crate) fn handle_is_selected(
|
|||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
pub(crate) fn handle_try_wait_for_document_navigation(
|
||||
documents: &DocumentCollection,
|
||||
pipeline: PipelineId,
|
||||
reply: IpcSender<bool>,
|
||||
) {
|
||||
let document = match documents.find_document(pipeline) {
|
||||
Some(document) => document,
|
||||
None => {
|
||||
return reply.send(false).unwrap();
|
||||
},
|
||||
};
|
||||
|
||||
let wait_for_document_ready = document.ReadyState() != DocumentReadyState::Complete;
|
||||
|
||||
reply.send(wait_for_document_ready).unwrap();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue