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 user_navigation_input = input_requests_history_navigation(&input);
|
||||||
let next_scroll_offset = input.scroll_offset;
|
let next_scroll_offset = input.scroll_offset;
|
||||||
|
|
||||||
|
let submitted_at = Instant::now();
|
||||||
let started_loading = {
|
let started_loading = {
|
||||||
let session = session_for_scope(&mut self.sessions, tab.id(), scope.clone());
|
let session = session_for_scope(&mut self.sessions, tab.id(), scope.clone());
|
||||||
let started_loading = session.started_loading(&requested_url, size, zoom_percent);
|
let started_loading = session.started_loading(&requested_url, size, zoom_percent);
|
||||||
@@ -75,7 +76,7 @@ impl WebSurfaceRuntime {
|
|||||||
session.size = size;
|
session.size = size;
|
||||||
session.zoom_percent = zoom_percent;
|
session.zoom_percent = zoom_percent;
|
||||||
session.scroll_offset = next_scroll_offset;
|
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
|
started_loading
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -103,6 +104,9 @@ impl WebSurfaceRuntime {
|
|||||||
return Err("Servo worker was created but is no longer registered".to_string());
|
return Err("Servo worker was created but is no longer registered".to_string());
|
||||||
};
|
};
|
||||||
scoped.worker.submit_ensure(request);
|
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);
|
log_ensure_submitted(tab, size, input_kind.label(), enqueued_at, started_loading);
|
||||||
|
|
||||||
Ok(WebSurfaceEnsureResult { requested_url, started_loading })
|
Ok(WebSurfaceEnsureResult { requested_url, started_loading })
|
||||||
|
|||||||
@@ -128,7 +128,9 @@ fn store_tick_delay_tracks_runtime_cadence() -> Result<(), String> {
|
|||||||
WebSurfaceInputOutcome::Applied,
|
WebSurfaceInputOutcome::Applied,
|
||||||
);
|
);
|
||||||
assert!(store.ensure_surface(&tab, ProfileDataMode::Transient, &[]));
|
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 _ = store.tick(&visible);
|
||||||
let delay = store.next_tick_delay(&visible);
|
let delay = store.next_tick_delay(&visible);
|
||||||
|
|||||||
Reference in New Issue
Block a user