perf(app): defer web poll after ensure
This commit is contained in:
@@ -62,6 +62,7 @@ impl WebSurfaceRuntime {
|
||||
let user_navigation_input = input_requests_history_navigation(&input);
|
||||
let next_scroll_offset = input.scroll_offset;
|
||||
|
||||
let submitted_at = Instant::now();
|
||||
let started_loading = {
|
||||
let session = session_for_scope(&mut self.sessions, tab.id(), scope.clone());
|
||||
let started_loading = session.started_loading(&requested_url, size, zoom_percent);
|
||||
@@ -75,7 +76,7 @@ impl WebSurfaceRuntime {
|
||||
session.size = size;
|
||||
session.zoom_percent = zoom_percent;
|
||||
session.scroll_offset = next_scroll_offset;
|
||||
session.cadence.note_ensure(input_kind, started_loading, Instant::now());
|
||||
session.cadence.note_ensure(input_kind, started_loading, submitted_at);
|
||||
started_loading
|
||||
};
|
||||
|
||||
@@ -103,6 +104,9 @@ impl WebSurfaceRuntime {
|
||||
return Err("Servo worker was created but is no longer registered".to_string());
|
||||
};
|
||||
scoped.worker.submit_ensure(request);
|
||||
if let Some(session) = self.sessions.get_mut(tab.id()) {
|
||||
session.cadence.note_poll_submitted(submitted_at);
|
||||
}
|
||||
log_ensure_submitted(tab, size, input_kind.label(), enqueued_at, started_loading);
|
||||
|
||||
Ok(WebSurfaceEnsureResult { requested_url, started_loading })
|
||||
|
||||
@@ -128,7 +128,9 @@ fn store_tick_delay_tracks_runtime_cadence() -> Result<(), String> {
|
||||
WebSurfaceInputOutcome::Applied,
|
||||
);
|
||||
assert!(store.ensure_surface(&tab, ProfileDataMode::Transient, &[]));
|
||||
assert_eq!(store.next_tick_delay(&visible), Duration::ZERO);
|
||||
let ensure_delay = store.next_tick_delay(&visible);
|
||||
assert!(ensure_delay > Duration::ZERO);
|
||||
assert!(ensure_delay <= ACTIVE_POLL_INTERVAL);
|
||||
|
||||
let _ = store.tick(&visible);
|
||||
let delay = store.next_tick_delay(&visible);
|
||||
|
||||
Reference in New Issue
Block a user