mirror of
https://github.com/servo/servo.git
synced 2025-08-18 03:45:33 +01:00
Basic webdriver support to servoshell on ohos (#38386)
Adding basic webdriver support to servoshell on ohos and basic communication between the ohos device and script. Testing: Manual testing and tracing logs Signed-off-by: abdelrahman1234567 <abdelrahman.hossameldin.awadalla@huawei.com>
This commit is contained in:
parent
f5b631e270
commit
2e2bfc6067
9 changed files with 113 additions and 17 deletions
|
@ -6,8 +6,11 @@ use std::cell::RefCell;
|
|||
use std::mem;
|
||||
use std::rc::Rc;
|
||||
|
||||
use constellation_traits::EmbedderToConstellationMessage;
|
||||
use crossbeam_channel::unbounded;
|
||||
use dpi::PhysicalSize;
|
||||
use raw_window_handle::{DisplayHandle, RawDisplayHandle, RawWindowHandle, WindowHandle};
|
||||
use servo::ipc_channel::ipc;
|
||||
pub use servo::webrender_api::units::DeviceIntRect;
|
||||
use servo::{self, EventLoopWaker, ServoBuilder, resources};
|
||||
pub use servo::{InputMethodType, MediaSessionPlaybackState, WindowRenderingContext};
|
||||
|
@ -84,21 +87,43 @@ pub fn init(
|
|||
let servo_builder = ServoBuilder::new(rendering_context.clone())
|
||||
.opts(opts)
|
||||
.preferences(preferences)
|
||||
.event_loop_waker(waker);
|
||||
.event_loop_waker(waker.clone());
|
||||
|
||||
#[cfg(feature = "webxr")]
|
||||
let servo_builder = servo_builder.webxr_registry(Box::new(XrDiscoveryWebXrRegistry::new(
|
||||
init_opts.xr_discovery,
|
||||
)));
|
||||
|
||||
let servo = servo_builder.build();
|
||||
|
||||
// Initialize WebDriver server if port is specified
|
||||
let webdriver_receiver = servoshell_preferences.webdriver_port.map(|port| {
|
||||
let (embedder_sender, embedder_receiver) = unbounded();
|
||||
let (webdriver_response_sender, webdriver_response_receiver) = ipc::channel().unwrap();
|
||||
|
||||
// Set the WebDriver response sender to constellation
|
||||
servo
|
||||
.constellation_sender()
|
||||
.send(EmbedderToConstellationMessage::SetWebDriverResponseSender(
|
||||
webdriver_response_sender,
|
||||
))
|
||||
.expect("Failed to set WebDriver response sender in constellation");
|
||||
|
||||
webdriver_server::start_server(port, embedder_sender, waker, webdriver_response_receiver);
|
||||
|
||||
log::info!("WebDriver server started on port {}", port);
|
||||
embedder_receiver
|
||||
});
|
||||
|
||||
APP.with(|app| {
|
||||
let app_state = RunningAppState::new(
|
||||
init_opts.url,
|
||||
init_opts.density,
|
||||
rendering_context,
|
||||
servo_builder.build(),
|
||||
servo,
|
||||
window_callbacks,
|
||||
servoshell_preferences,
|
||||
webdriver_receiver,
|
||||
);
|
||||
*app.borrow_mut() = Some(app_state);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue