mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
remove option for origin and mirror changes to layout_thread_2020
This commit is contained in:
parent
a5b43b7df1
commit
4a3bf52a7c
7 changed files with 62 additions and 46 deletions
|
@ -3227,14 +3227,14 @@ where
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
AnimationTickType::Layout => {
|
AnimationTickType::Layout => match self.pipelines.get(&pipeline_id) {
|
||||||
let msg = LayoutControlMsg::TickAnimations;
|
Some(pipeline) => {
|
||||||
match self.pipelines.get(&pipeline_id) {
|
let msg = LayoutControlMsg::TickAnimations(pipeline.load_data.url.origin());
|
||||||
Some(pipeline) => pipeline.layout_chan.send(msg),
|
pipeline.layout_chan.send(msg)
|
||||||
None => {
|
},
|
||||||
return warn!("Pipeline {:?} got layout tick after closure.", pipeline_id);
|
None => {
|
||||||
},
|
return warn!("Pipeline {:?} got layout tick after closure.", pipeline_id);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
if let Err(e) = result {
|
if let Err(e) = result {
|
||||||
|
|
|
@ -88,6 +88,7 @@ impl<'a> LayoutContext<'a> {
|
||||||
state: PendingImageState::Unrequested(url),
|
state: PendingImageState::Unrequested(url),
|
||||||
node: node.into(),
|
node: node.into(),
|
||||||
id: id,
|
id: id,
|
||||||
|
origin: self.origin.clone(),
|
||||||
};
|
};
|
||||||
self.pending_images
|
self.pending_images
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
@ -108,6 +109,7 @@ impl<'a> LayoutContext<'a> {
|
||||||
state: PendingImageState::PendingResponse,
|
state: PendingImageState::PendingResponse,
|
||||||
node: node.into(),
|
node: node.into(),
|
||||||
id: id,
|
id: id,
|
||||||
|
origin: self.origin.clone(),
|
||||||
};
|
};
|
||||||
pending_images.lock().unwrap().push(image);
|
pending_images.lock().unwrap().push(image);
|
||||||
}
|
}
|
||||||
|
|
|
@ -644,18 +644,14 @@ impl LayoutThread {
|
||||||
guards: StylesheetGuards<'a>,
|
guards: StylesheetGuards<'a>,
|
||||||
script_initiated_layout: bool,
|
script_initiated_layout: bool,
|
||||||
snapshot_map: &'a SnapshotMap,
|
snapshot_map: &'a SnapshotMap,
|
||||||
origin: Option<ImmutableOrigin>,
|
origin: ImmutableOrigin,
|
||||||
) -> LayoutContext<'a> {
|
) -> LayoutContext<'a> {
|
||||||
let thread_local_style_context_creation_data =
|
let thread_local_style_context_creation_data =
|
||||||
ThreadLocalStyleContextCreationInfo::new(self.new_animations_sender.clone());
|
ThreadLocalStyleContextCreationInfo::new(self.new_animations_sender.clone());
|
||||||
|
|
||||||
LayoutContext {
|
LayoutContext {
|
||||||
id: self.id,
|
id: self.id,
|
||||||
origin: if let Some(origin) = origin {
|
origin,
|
||||||
origin
|
|
||||||
} else {
|
|
||||||
self.url.origin()
|
|
||||||
},
|
|
||||||
style_context: SharedStyleContext {
|
style_context: SharedStyleContext {
|
||||||
stylist: &self.stylist,
|
stylist: &self.stylist,
|
||||||
options: GLOBAL_STYLE_DATA.options.clone(),
|
options: GLOBAL_STYLE_DATA.options.clone(),
|
||||||
|
@ -693,7 +689,7 @@ impl LayoutThread {
|
||||||
Msg::SetQuirksMode(..) => LayoutHangAnnotation::SetQuirksMode,
|
Msg::SetQuirksMode(..) => LayoutHangAnnotation::SetQuirksMode,
|
||||||
Msg::Reflow(..) => LayoutHangAnnotation::Reflow,
|
Msg::Reflow(..) => LayoutHangAnnotation::Reflow,
|
||||||
Msg::GetRPC(..) => LayoutHangAnnotation::GetRPC,
|
Msg::GetRPC(..) => LayoutHangAnnotation::GetRPC,
|
||||||
Msg::TickAnimations => LayoutHangAnnotation::TickAnimations,
|
Msg::TickAnimations(..) => LayoutHangAnnotation::TickAnimations,
|
||||||
Msg::AdvanceClockMs(..) => LayoutHangAnnotation::AdvanceClockMs,
|
Msg::AdvanceClockMs(..) => LayoutHangAnnotation::AdvanceClockMs,
|
||||||
Msg::ReapStyleAndLayoutData(..) => LayoutHangAnnotation::ReapStyleAndLayoutData,
|
Msg::ReapStyleAndLayoutData(..) => LayoutHangAnnotation::ReapStyleAndLayoutData,
|
||||||
Msg::CollectReports(..) => LayoutHangAnnotation::CollectReports,
|
Msg::CollectReports(..) => LayoutHangAnnotation::CollectReports,
|
||||||
|
@ -739,8 +735,8 @@ impl LayoutThread {
|
||||||
Msg::SetScrollStates(new_scroll_states),
|
Msg::SetScrollStates(new_scroll_states),
|
||||||
possibly_locked_rw_data,
|
possibly_locked_rw_data,
|
||||||
),
|
),
|
||||||
Request::FromPipeline(LayoutControlMsg::TickAnimations) => {
|
Request::FromPipeline(LayoutControlMsg::TickAnimations(origin)) => {
|
||||||
self.handle_request_helper(Msg::TickAnimations, possibly_locked_rw_data)
|
self.handle_request_helper(Msg::TickAnimations(origin), possibly_locked_rw_data)
|
||||||
},
|
},
|
||||||
Request::FromPipeline(LayoutControlMsg::GetCurrentEpoch(sender)) => {
|
Request::FromPipeline(LayoutControlMsg::GetCurrentEpoch(sender)) => {
|
||||||
self.handle_request_helper(Msg::GetCurrentEpoch(sender), possibly_locked_rw_data)
|
self.handle_request_helper(Msg::GetCurrentEpoch(sender), possibly_locked_rw_data)
|
||||||
|
@ -813,7 +809,9 @@ impl LayoutThread {
|
||||||
|| self.handle_reflow(&mut data, possibly_locked_rw_data),
|
|| self.handle_reflow(&mut data, possibly_locked_rw_data),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
Msg::TickAnimations => self.tick_all_animations(possibly_locked_rw_data),
|
Msg::TickAnimations(origin) => {
|
||||||
|
self.tick_all_animations(possibly_locked_rw_data, origin)
|
||||||
|
},
|
||||||
Msg::SetScrollStates(new_scroll_states) => {
|
Msg::SetScrollStates(new_scroll_states) => {
|
||||||
self.set_scroll_states(new_scroll_states, possibly_locked_rw_data);
|
self.set_scroll_states(new_scroll_states, possibly_locked_rw_data);
|
||||||
},
|
},
|
||||||
|
@ -841,8 +839,8 @@ impl LayoutThread {
|
||||||
let _rw_data = possibly_locked_rw_data.lock();
|
let _rw_data = possibly_locked_rw_data.lock();
|
||||||
sender.send(self.epoch.get()).unwrap();
|
sender.send(self.epoch.get()).unwrap();
|
||||||
},
|
},
|
||||||
Msg::AdvanceClockMs(how_many, do_tick) => {
|
Msg::AdvanceClockMs(how_many, do_tick, origin) => {
|
||||||
self.handle_advance_clock_ms(how_many, possibly_locked_rw_data, do_tick);
|
self.handle_advance_clock_ms(how_many, possibly_locked_rw_data, do_tick, origin);
|
||||||
},
|
},
|
||||||
Msg::GetWebFontLoadState(sender) => {
|
Msg::GetWebFontLoadState(sender) => {
|
||||||
let _rw_data = possibly_locked_rw_data.lock();
|
let _rw_data = possibly_locked_rw_data.lock();
|
||||||
|
@ -1022,10 +1020,11 @@ impl LayoutThread {
|
||||||
how_many_ms: i32,
|
how_many_ms: i32,
|
||||||
possibly_locked_rw_data: &mut RwData<'a, 'b>,
|
possibly_locked_rw_data: &mut RwData<'a, 'b>,
|
||||||
tick_animations: bool,
|
tick_animations: bool,
|
||||||
|
origin: ImmutableOrigin,
|
||||||
) {
|
) {
|
||||||
self.timer.increment(how_many_ms as f64 / 1000.0);
|
self.timer.increment(how_many_ms as f64 / 1000.0);
|
||||||
if tick_animations {
|
if tick_animations {
|
||||||
self.tick_all_animations(possibly_locked_rw_data);
|
self.tick_all_animations(possibly_locked_rw_data, origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1489,8 +1488,7 @@ impl LayoutThread {
|
||||||
self.stylist.flush(&guards, Some(element), Some(&map));
|
self.stylist.flush(&guards, Some(element), Some(&map));
|
||||||
|
|
||||||
// Create a layout context for use throughout the following passes.
|
// Create a layout context for use throughout the following passes.
|
||||||
let mut layout_context =
|
let mut layout_context = self.build_layout_context(guards.clone(), true, &map, origin);
|
||||||
self.build_layout_context(guards.clone(), true, &map, Some(origin));
|
|
||||||
|
|
||||||
let pool;
|
let pool;
|
||||||
let (thread_pool, num_threads) = if self.parallel_flag {
|
let (thread_pool, num_threads) = if self.parallel_flag {
|
||||||
|
@ -1718,12 +1716,16 @@ impl LayoutThread {
|
||||||
rw_data.scroll_offsets = layout_scroll_states
|
rw_data.scroll_offsets = layout_scroll_states
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tick_all_animations<'a, 'b>(&mut self, possibly_locked_rw_data: &mut RwData<'a, 'b>) {
|
fn tick_all_animations<'a, 'b>(
|
||||||
|
&mut self,
|
||||||
|
possibly_locked_rw_data: &mut RwData<'a, 'b>,
|
||||||
|
origin: ImmutableOrigin,
|
||||||
|
) {
|
||||||
let mut rw_data = possibly_locked_rw_data.lock();
|
let mut rw_data = possibly_locked_rw_data.lock();
|
||||||
self.tick_animations(&mut rw_data);
|
self.tick_animations(&mut rw_data, origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tick_animations(&mut self, rw_data: &mut LayoutThreadData) {
|
fn tick_animations(&mut self, rw_data: &mut LayoutThreadData, origin: ImmutableOrigin) {
|
||||||
if self.relayout_event {
|
if self.relayout_event {
|
||||||
println!(
|
println!(
|
||||||
"**** pipeline={}\tForDisplay\tSpecial\tAnimationTick",
|
"**** pipeline={}\tForDisplay\tSpecial\tAnimationTick",
|
||||||
|
@ -1746,7 +1748,7 @@ impl LayoutThread {
|
||||||
ua_or_user: &ua_or_user_guard,
|
ua_or_user: &ua_or_user_guard,
|
||||||
};
|
};
|
||||||
let snapshots = SnapshotMap::new();
|
let snapshots = SnapshotMap::new();
|
||||||
let mut layout_context = self.build_layout_context(guards, false, &snapshots, None);
|
let mut layout_context = self.build_layout_context(guards, false, &snapshots, origin);
|
||||||
|
|
||||||
let invalid_nodes = {
|
let invalid_nodes = {
|
||||||
// Perform an abbreviated style recalc that operates without access to the DOM.
|
// Perform an abbreviated style recalc that operates without access to the DOM.
|
||||||
|
|
|
@ -74,7 +74,7 @@ use servo_arc::Arc as ServoArc;
|
||||||
use servo_atoms::Atom;
|
use servo_atoms::Atom;
|
||||||
use servo_config::opts;
|
use servo_config::opts;
|
||||||
use servo_config::pref;
|
use servo_config::pref;
|
||||||
use servo_url::ServoUrl;
|
use servo_url::{ImmutableOrigin, ServoUrl};
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
|
@ -589,13 +589,14 @@ impl LayoutThread {
|
||||||
guards: StylesheetGuards<'a>,
|
guards: StylesheetGuards<'a>,
|
||||||
script_initiated_layout: bool,
|
script_initiated_layout: bool,
|
||||||
snapshot_map: &'a SnapshotMap,
|
snapshot_map: &'a SnapshotMap,
|
||||||
|
origin: ImmutableOrigin,
|
||||||
) -> LayoutContext<'a> {
|
) -> LayoutContext<'a> {
|
||||||
let thread_local_style_context_creation_data =
|
let thread_local_style_context_creation_data =
|
||||||
ThreadLocalStyleContextCreationInfo::new(self.new_animations_sender.clone());
|
ThreadLocalStyleContextCreationInfo::new(self.new_animations_sender.clone());
|
||||||
|
|
||||||
LayoutContext {
|
LayoutContext {
|
||||||
id: self.id,
|
id: self.id,
|
||||||
origin: self.url.origin(),
|
origin,
|
||||||
style_context: SharedStyleContext {
|
style_context: SharedStyleContext {
|
||||||
stylist: &self.stylist,
|
stylist: &self.stylist,
|
||||||
options: GLOBAL_STYLE_DATA.options.clone(),
|
options: GLOBAL_STYLE_DATA.options.clone(),
|
||||||
|
@ -628,7 +629,7 @@ impl LayoutThread {
|
||||||
Msg::SetQuirksMode(..) => LayoutHangAnnotation::SetQuirksMode,
|
Msg::SetQuirksMode(..) => LayoutHangAnnotation::SetQuirksMode,
|
||||||
Msg::Reflow(..) => LayoutHangAnnotation::Reflow,
|
Msg::Reflow(..) => LayoutHangAnnotation::Reflow,
|
||||||
Msg::GetRPC(..) => LayoutHangAnnotation::GetRPC,
|
Msg::GetRPC(..) => LayoutHangAnnotation::GetRPC,
|
||||||
Msg::TickAnimations => LayoutHangAnnotation::TickAnimations,
|
Msg::TickAnimations(..) => LayoutHangAnnotation::TickAnimations,
|
||||||
Msg::AdvanceClockMs(..) => LayoutHangAnnotation::AdvanceClockMs,
|
Msg::AdvanceClockMs(..) => LayoutHangAnnotation::AdvanceClockMs,
|
||||||
Msg::ReapStyleAndLayoutData(..) => LayoutHangAnnotation::ReapStyleAndLayoutData,
|
Msg::ReapStyleAndLayoutData(..) => LayoutHangAnnotation::ReapStyleAndLayoutData,
|
||||||
Msg::CollectReports(..) => LayoutHangAnnotation::CollectReports,
|
Msg::CollectReports(..) => LayoutHangAnnotation::CollectReports,
|
||||||
|
@ -674,8 +675,8 @@ impl LayoutThread {
|
||||||
Msg::SetScrollStates(new_scroll_states),
|
Msg::SetScrollStates(new_scroll_states),
|
||||||
possibly_locked_rw_data,
|
possibly_locked_rw_data,
|
||||||
),
|
),
|
||||||
Request::FromPipeline(LayoutControlMsg::TickAnimations) => {
|
Request::FromPipeline(LayoutControlMsg::TickAnimations(origin)) => {
|
||||||
self.handle_request_helper(Msg::TickAnimations, possibly_locked_rw_data)
|
self.handle_request_helper(Msg::TickAnimations(origin), possibly_locked_rw_data)
|
||||||
},
|
},
|
||||||
Request::FromPipeline(LayoutControlMsg::GetCurrentEpoch(sender)) => {
|
Request::FromPipeline(LayoutControlMsg::GetCurrentEpoch(sender)) => {
|
||||||
self.handle_request_helper(Msg::GetCurrentEpoch(sender), possibly_locked_rw_data)
|
self.handle_request_helper(Msg::GetCurrentEpoch(sender), possibly_locked_rw_data)
|
||||||
|
@ -748,7 +749,7 @@ impl LayoutThread {
|
||||||
|| self.handle_reflow(&mut data, possibly_locked_rw_data),
|
|| self.handle_reflow(&mut data, possibly_locked_rw_data),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
Msg::TickAnimations => self.tick_all_animations(),
|
Msg::TickAnimations(origin) => self.tick_all_animations(origin),
|
||||||
Msg::SetScrollStates(new_scroll_states) => {
|
Msg::SetScrollStates(new_scroll_states) => {
|
||||||
self.set_scroll_states(new_scroll_states, possibly_locked_rw_data);
|
self.set_scroll_states(new_scroll_states, possibly_locked_rw_data);
|
||||||
},
|
},
|
||||||
|
@ -776,8 +777,8 @@ impl LayoutThread {
|
||||||
let _rw_data = possibly_locked_rw_data.lock();
|
let _rw_data = possibly_locked_rw_data.lock();
|
||||||
sender.send(self.epoch.get()).unwrap();
|
sender.send(self.epoch.get()).unwrap();
|
||||||
},
|
},
|
||||||
Msg::AdvanceClockMs(how_many, do_tick) => {
|
Msg::AdvanceClockMs(how_many, do_tick, origin) => {
|
||||||
self.handle_advance_clock_ms(how_many, do_tick);
|
self.handle_advance_clock_ms(how_many, do_tick, origin);
|
||||||
},
|
},
|
||||||
Msg::GetWebFontLoadState(sender) => {
|
Msg::GetWebFontLoadState(sender) => {
|
||||||
let _rw_data = possibly_locked_rw_data.lock();
|
let _rw_data = possibly_locked_rw_data.lock();
|
||||||
|
@ -914,10 +915,15 @@ impl LayoutThread {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Advances the animation clock of the document.
|
/// Advances the animation clock of the document.
|
||||||
fn handle_advance_clock_ms<'a, 'b>(&mut self, how_many_ms: i32, tick_animations: bool) {
|
fn handle_advance_clock_ms<'a, 'b>(
|
||||||
|
&mut self,
|
||||||
|
how_many_ms: i32,
|
||||||
|
tick_animations: bool,
|
||||||
|
origin: ImmutableOrigin,
|
||||||
|
) {
|
||||||
self.timer.increment(how_many_ms as f64 / 1000.0);
|
self.timer.increment(how_many_ms as f64 / 1000.0);
|
||||||
if tick_animations {
|
if tick_animations {
|
||||||
self.tick_all_animations();
|
self.tick_all_animations(origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -995,6 +1001,8 @@ impl LayoutThread {
|
||||||
Au::from_f32_px(initial_viewport.height),
|
Au::from_f32_px(initial_viewport.height),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let origin = data.origin.clone();
|
||||||
|
|
||||||
// Calculate the actual viewport as per DEVICE-ADAPT § 6
|
// Calculate the actual viewport as per DEVICE-ADAPT § 6
|
||||||
// If the entire flow tree is invalid, then it will be reflowed anyhow.
|
// If the entire flow tree is invalid, then it will be reflowed anyhow.
|
||||||
let document_shared_lock = document.style_shared_lock();
|
let document_shared_lock = document.style_shared_lock();
|
||||||
|
@ -1117,7 +1125,7 @@ impl LayoutThread {
|
||||||
self.stylist.flush(&guards, Some(element), Some(&map));
|
self.stylist.flush(&guards, Some(element), Some(&map));
|
||||||
|
|
||||||
// Create a layout context for use throughout the following passes.
|
// Create a layout context for use throughout the following passes.
|
||||||
let mut layout_context = self.build_layout_context(guards.clone(), true, &map);
|
let mut layout_context = self.build_layout_context(guards.clone(), true, &map, origin);
|
||||||
|
|
||||||
let traversal = RecalcStyle::new(layout_context);
|
let traversal = RecalcStyle::new(layout_context);
|
||||||
let token = {
|
let token = {
|
||||||
|
@ -1324,11 +1332,11 @@ impl LayoutThread {
|
||||||
rw_data.scroll_offsets = layout_scroll_states
|
rw_data.scroll_offsets = layout_scroll_states
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tick_all_animations<'a, 'b>(&mut self) {
|
fn tick_all_animations<'a, 'b>(&mut self, origin: ImmutableOrigin) {
|
||||||
self.tick_animations();
|
self.tick_animations(origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tick_animations(&mut self) {
|
fn tick_animations(&mut self, origin: ImmutableOrigin) {
|
||||||
if self.relayout_event {
|
if self.relayout_event {
|
||||||
println!(
|
println!(
|
||||||
"**** pipeline={}\tForDisplay\tSpecial\tAnimationTick",
|
"**** pipeline={}\tForDisplay\tSpecial\tAnimationTick",
|
||||||
|
@ -1347,7 +1355,7 @@ impl LayoutThread {
|
||||||
ua_or_user: &ua_or_user_guard,
|
ua_or_user: &ua_or_user_guard,
|
||||||
};
|
};
|
||||||
let snapshots = SnapshotMap::new();
|
let snapshots = SnapshotMap::new();
|
||||||
let mut layout_context = self.build_layout_context(guards, false, &snapshots);
|
let mut layout_context = self.build_layout_context(guards, false, &snapshots, origin);
|
||||||
|
|
||||||
self.perform_post_style_recalc_layout_passes(
|
self.perform_post_style_recalc_layout_passes(
|
||||||
root,
|
root,
|
||||||
|
|
|
@ -1548,7 +1548,11 @@ impl Window {
|
||||||
/// forces a reflow if `tick` is true.
|
/// forces a reflow if `tick` is true.
|
||||||
pub fn advance_animation_clock(&self, delta: i32, tick: bool) {
|
pub fn advance_animation_clock(&self, delta: i32, tick: bool) {
|
||||||
self.layout_chan
|
self.layout_chan
|
||||||
.send(Msg::AdvanceClockMs(delta, tick))
|
.send(Msg::AdvanceClockMs(
|
||||||
|
delta,
|
||||||
|
tick,
|
||||||
|
self.origin().immutable().clone(),
|
||||||
|
))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,13 +47,13 @@ pub enum Msg {
|
||||||
GetRPC(Sender<Box<dyn LayoutRPC + Send>>),
|
GetRPC(Sender<Box<dyn LayoutRPC + Send>>),
|
||||||
|
|
||||||
/// Requests that the layout thread render the next frame of all animations.
|
/// Requests that the layout thread render the next frame of all animations.
|
||||||
TickAnimations,
|
TickAnimations(ImmutableOrigin),
|
||||||
|
|
||||||
/// Updates layout's timer for animation testing from script.
|
/// Updates layout's timer for animation testing from script.
|
||||||
///
|
///
|
||||||
/// The inner field is the number of *milliseconds* to advance, and the bool
|
/// The inner field is the number of *milliseconds* to advance, and the bool
|
||||||
/// field is whether animations should be force-ticked.
|
/// field is whether animations should be force-ticked.
|
||||||
AdvanceClockMs(i32, bool),
|
AdvanceClockMs(i32, bool, ImmutableOrigin),
|
||||||
|
|
||||||
/// Destroys layout data associated with a DOM node.
|
/// Destroys layout data associated with a DOM node.
|
||||||
///
|
///
|
||||||
|
|
|
@ -124,7 +124,7 @@ pub enum LayoutControlMsg {
|
||||||
/// Requests the current epoch (layout counter) from this layout.
|
/// Requests the current epoch (layout counter) from this layout.
|
||||||
GetCurrentEpoch(IpcSender<Epoch>),
|
GetCurrentEpoch(IpcSender<Epoch>),
|
||||||
/// Asks layout to run another step in its animation.
|
/// Asks layout to run another step in its animation.
|
||||||
TickAnimations,
|
TickAnimations(ImmutableOrigin),
|
||||||
/// Tells layout about the new scrolling offsets of each scrollable stacking context.
|
/// Tells layout about the new scrolling offsets of each scrollable stacking context.
|
||||||
SetScrollStates(Vec<ScrollState>),
|
SetScrollStates(Vec<ScrollState>),
|
||||||
/// Requests the current load state of Web fonts. `true` is returned if fonts are still loading
|
/// Requests the current load state of Web fonts. `true` is returned if fonts are still loading
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue