diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index afd4124cf87..a4afeb01b3c 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -973,7 +973,11 @@ impl IOCompositor { warn!("Sending response to get screen size failed ({error:?})."); } }, - CompositorMsg::Viewport(_webview_id, _viewport_description) => {}, + CompositorMsg::Viewport(webview_id, viewport_description) => { + if let Some(webview) = self.webview_renderers.get_mut(webview_id) { + webview.set_viewport_description(viewport_description); + } + }, } } diff --git a/components/compositing/webview_renderer.rs b/components/compositing/webview_renderer.rs index 84d5fd877e6..b80e3422dd3 100644 --- a/components/compositing/webview_renderer.rs +++ b/components/compositing/webview_renderer.rs @@ -8,6 +8,7 @@ use std::collections::{HashMap, VecDeque}; use std::rc::Rc; use base::id::{PipelineId, WebViewId}; +use compositing_traits::viewport_description::ViewportDescription; use compositing_traits::{SendableFrameTree, WebViewTrait}; use constellation_traits::{EmbedderToConstellationMessage, ScrollState, WindowSizeType}; use embedder_traits::{ @@ -58,7 +59,7 @@ pub(crate) struct ScrollResult { pub offset: LayoutVector2D, } -#[derive(PartialEq)] +#[derive(Debug, PartialEq)] pub(crate) enum PinchZoomResult { DidPinchZoom, DidNotPinchZoom, @@ -102,6 +103,8 @@ pub(crate) struct WebViewRenderer { pending_point_input_events: RefCell>, /// WebRender is not ready between `SendDisplayList` and `WebRenderFrameReady` messages. pub webrender_frame_ready: Cell, + /// Viewport Description + viewport_description: Option, } impl Drop for WebViewRenderer { @@ -138,6 +141,7 @@ impl WebViewRenderer { animating: false, pending_point_input_events: Default::default(), webrender_frame_ready: Cell::default(), + viewport_description: None, } } @@ -1042,6 +1046,10 @@ impl WebViewRenderer { let screen_geometry = self.webview.screen_geometry().unwrap_or_default(); (screen_geometry.available_size.to_f32() / self.hidpi_scale_factor).to_i32() } + + pub fn set_viewport_description(&mut self, viewport_description: ViewportDescription) { + self.viewport_description = Some(viewport_description); + } } #[derive(Clone, Copy, Debug, PartialEq)]