mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Auto merge of #22802 - gterzian:only_run_tasks_for_fully_active_docs, r=nox
In BC event-loop, only run tasks related to fully-active documents <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [ ] `./mach build -d` does not report any errors - [ ] `./mach test-tidy` does not report any errors - [ ] These changes fix #22792 (GitHub issue number if applicable) <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22802) <!-- Reviewable:end -->
This commit is contained in:
commit
f2ea73f360
9 changed files with 219 additions and 14 deletions
|
@ -35,7 +35,7 @@ use js::jsapi::JS_AddInterruptCallback;
|
|||
use js::jsapi::{JSAutoCompartment, JSContext};
|
||||
use js::jsval::UndefinedValue;
|
||||
use js::rust::HandleValue;
|
||||
use msg::constellation_msg::TopLevelBrowsingContextId;
|
||||
use msg::constellation_msg::{PipelineId, TopLevelBrowsingContextId};
|
||||
use net_traits::request::{CredentialsMode, Destination, RequestInit};
|
||||
use net_traits::{load_whole_resource, IpcSend};
|
||||
use script_traits::{TimerEvent, TimerSource, WorkerGlobalScopeInit, WorkerScriptLoadOrigin};
|
||||
|
@ -101,10 +101,16 @@ impl QueuedTaskConversion for DedicatedWorkerScriptMsg {
|
|||
CommonScriptMsg::Task(_category, _boxed, _pipeline_id, source_name) => {
|
||||
Some(&source_name)
|
||||
},
|
||||
_ => return None,
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn pipeline_id(&self) -> Option<PipelineId> {
|
||||
// Workers always return None, since the pipeline_id is only used to check for document activity,
|
||||
// and this check does not apply to worker event-loops.
|
||||
None
|
||||
}
|
||||
|
||||
fn into_queued_task(self) -> Option<QueuedTask> {
|
||||
let (worker, common_worker_msg) = match self {
|
||||
DedicatedWorkerScriptMsg::CommonWorker(worker, common_worker_msg) => {
|
||||
|
@ -131,6 +137,11 @@ impl QueuedTaskConversion for DedicatedWorkerScriptMsg {
|
|||
DedicatedWorkerScriptMsg::CommonWorker(worker.unwrap(), WorkerScriptMsg::Common(script_msg))
|
||||
}
|
||||
|
||||
fn inactive_msg() -> Self {
|
||||
// Inactive is only relevant in the context of a browsing-context event-loop.
|
||||
panic!("Workers should never receive messages marked as inactive");
|
||||
}
|
||||
|
||||
fn wake_up_msg() -> Self {
|
||||
DedicatedWorkerScriptMsg::WakeUp
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
|
|||
use ipc_channel::router::ROUTER;
|
||||
use js::jsapi::{JSAutoCompartment, JSContext, JS_AddInterruptCallback};
|
||||
use js::jsval::UndefinedValue;
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use net_traits::request::{CredentialsMode, Destination, RequestInit};
|
||||
use net_traits::{load_whole_resource, CustomResponseMediator, IpcSend};
|
||||
use script_traits::{
|
||||
|
@ -61,10 +62,16 @@ impl QueuedTaskConversion for ServiceWorkerScriptMsg {
|
|||
CommonScriptMsg::Task(_category, _boxed, _pipeline_id, task_source) => {
|
||||
Some(&task_source)
|
||||
},
|
||||
_ => return None,
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn pipeline_id(&self) -> Option<PipelineId> {
|
||||
// Workers always return None, since the pipeline_id is only used to check for document activity,
|
||||
// and this check does not apply to worker event-loops.
|
||||
None
|
||||
}
|
||||
|
||||
fn into_queued_task(self) -> Option<QueuedTask> {
|
||||
let script_msg = match self {
|
||||
ServiceWorkerScriptMsg::CommonWorker(WorkerScriptMsg::Common(script_msg)) => script_msg,
|
||||
|
@ -85,6 +92,11 @@ impl QueuedTaskConversion for ServiceWorkerScriptMsg {
|
|||
ServiceWorkerScriptMsg::CommonWorker(WorkerScriptMsg::Common(script_msg))
|
||||
}
|
||||
|
||||
fn inactive_msg() -> Self {
|
||||
// Inactive is only relevant in the context of a browsing-context event-loop.
|
||||
panic!("Workers should never receive messages marked as inactive");
|
||||
}
|
||||
|
||||
fn wake_up_msg() -> Self {
|
||||
ServiceWorkerScriptMsg::WakeUp
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue