mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
libservo: Allow embedders to execute JavaScript scripts via the API (#35720)
This change adds a new `WebView` API `evaluate_javascript()`, which allows embedders to execute JavaScript code and wait for a reply asynchronously. Ongoing script execution is tracked by a libservo `JavaScriptEvaluator` struct, which maps an id to the callback passed to the `evaluate_javascript()` method. The id is used to track the script and its execution through the other parts of Servo. Testing: This changes includes `WebView` unit tests. --------- Signed-off-by: Narfinger <Narfinger@users.noreply.github.com> Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
91c4c7b998
commit
991be359a3
12 changed files with 391 additions and 18 deletions
|
@ -77,6 +77,7 @@ mod from_compositor {
|
|||
Self::SetWebViewThrottled(_, _) => target!("SetWebViewThrottled"),
|
||||
Self::SetScrollStates(..) => target!("SetScrollStates"),
|
||||
Self::PaintMetric(..) => target!("PaintMetric"),
|
||||
Self::EvaluateJavaScript(..) => target!("EvaluateJavaScript"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -176,6 +177,7 @@ mod from_script {
|
|||
Self::TitleChanged(..) => target!("TitleChanged"),
|
||||
Self::IFrameSizes(..) => target!("IFrameSizes"),
|
||||
Self::ReportMemory(..) => target!("ReportMemory"),
|
||||
Self::FinishJavaScriptEvaluation(..) => target!("FinishJavaScriptEvaluation"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -238,6 +240,9 @@ mod from_script {
|
|||
Self::ShutdownComplete => target_variant!("ShutdownComplete"),
|
||||
Self::ShowNotification(..) => target_variant!("ShowNotification"),
|
||||
Self::ShowSelectElementMenu(..) => target_variant!("ShowSelectElementMenu"),
|
||||
Self::FinishJavaScriptEvaluation(..) => {
|
||||
target_variant!("FinishJavaScriptEvaluation")
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue