diff options
Diffstat (limited to 'components/servo/lib.rs')
-rw-r--r-- | components/servo/lib.rs | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 624110cc0ad..3bd0e1443a8 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -58,12 +58,11 @@ use constellation::{ Constellation, FromCompositorLogger, FromScriptLogger, InitialConstellationState, UnprivilegedContent, }; -use constellation_traits::{ConstellationMsg, WindowSizeData}; +use constellation_traits::ConstellationMsg; use crossbeam_channel::{Receiver, Sender, unbounded}; use embedder_traits::user_content_manager::UserContentManager; pub use embedder_traits::*; use env_logger::Builder as EnvLoggerBuilder; -use euclid::Scale; use fonts::SystemFontService; #[cfg(all( not(target_os = "windows"), @@ -321,9 +320,6 @@ impl Servo { None }; - let device_pixel_ratio = window.hidpi_factor().get(); - let viewport_size = rendering_context.size2d(); - let (mut webrender, webrender_api_sender) = { let mut debug_flags = webrender::DebugFlags::empty(); debug_flags.set( @@ -389,7 +385,7 @@ impl Servo { }; let webrender_api = webrender_api_sender.create_api(); - let webrender_document = webrender_api.add_document(viewport_size.to_i32()); + let webrender_document = webrender_api.add_document(rendering_context.size2d().to_i32()); // Important that this call is done in a single-threaded fashion, we // can't defer it after `create_constellation` has started. @@ -451,14 +447,6 @@ impl Servo { webrender.set_external_image_handler(external_image_handlers); - // The division by 1 represents the page's default zoom of 100%, - // and gives us the appropriate CSSPixel type for the viewport. - let scaled_viewport_size = viewport_size.to_f32().to_untyped() / device_pixel_ratio; - let window_size = WindowSizeData { - initial_viewport: scaled_viewport_size / Scale::new(1.0), - device_pixel_ratio: Scale::new(device_pixel_ratio), - }; - // Create the constellation, which maintains the engine pipelines, including script and // layout, as well as the navigation context. let mut protocols = ProtocolRegistry::with_internal_protocols(); @@ -476,7 +464,6 @@ impl Servo { #[cfg(feature = "webxr")] webxr_main_thread.registry(), Some(webgl_threads), - window_size, external_images, #[cfg(feature = "webgpu")] wgpu_image_map, @@ -654,8 +641,12 @@ impl Servo { self.webviews .borrow_mut() .insert(webview.id(), webview.weak_handle()); - self.constellation_proxy - .send(ConstellationMsg::NewWebView(url.into(), webview.id())); + let viewport_details = self.compositor.borrow().default_webview_viewport_details(); + self.constellation_proxy.send(ConstellationMsg::NewWebView( + url.into(), + webview.id(), + viewport_details, + )); webview } @@ -724,8 +715,19 @@ impl Servo { }, EmbedderMsg::AllowOpeningWebView(webview_id, response_sender) => { if let Some(webview) = self.get_webview_handle(webview_id) { - let new_webview = webview.delegate().request_open_auxiliary_webview(webview); - let _ = response_sender.send(new_webview.map(|webview| webview.id())); + let webview_id_and_viewport_details = webview + .delegate() + .request_open_auxiliary_webview(webview) + .map(|webview| { + let mut viewport = + self.compositor.borrow().default_webview_viewport_details(); + let rect = webview.rect(); + if !rect.is_empty() { + viewport.size = rect.size() / viewport.hidpi_scale_factor; + } + (webview.id(), viewport) + }); + let _ = response_sender.send(webview_id_and_viewport_details); } }, EmbedderMsg::WebViewClosed(webview_id) => { @@ -1042,7 +1044,6 @@ fn create_constellation( webrender_api_sender: RenderApiSender, #[cfg(feature = "webxr")] webxr_registry: webxr_api::Registry, webgl_threads: Option<WebGLThreads>, - initial_window_size: WindowSizeData, external_images: Arc<Mutex<WebrenderExternalImageRegistry>>, #[cfg(feature = "webgpu")] wgpu_image_map: WGPUImageMap, protocols: ProtocolRegistry, @@ -1105,7 +1106,6 @@ fn create_constellation( Constellation::<script::ScriptThread, script::ServiceWorkerManager>::start( initial_state, layout_factory, - initial_window_size, opts.random_pipeline_closure_probability, opts.random_pipeline_closure_seed, opts.hard_fail, |