mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Auto merge of #25211 - kunalmohan:6631-Worker-Id, r=jdm
`worker_id` type changed to uuid <!-- Please describe your changes on the following line: --> Fixes #6631 `worker_id` is now generate as uuid and saved as string. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #6631 (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. -->
This commit is contained in:
commit
c9baa5b9fc
10 changed files with 24 additions and 17 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -1144,6 +1144,7 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"servo_url",
|
"servo_url",
|
||||||
"time",
|
"time",
|
||||||
|
"uuid",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3141,6 +3142,7 @@ dependencies = [
|
||||||
"thin-slice",
|
"thin-slice",
|
||||||
"time",
|
"time",
|
||||||
"url",
|
"url",
|
||||||
|
"uuid",
|
||||||
"void",
|
"void",
|
||||||
"webrender_api",
|
"webrender_api",
|
||||||
"xml5ever",
|
"xml5ever",
|
||||||
|
|
|
@ -20,3 +20,4 @@ msg = {path = "../msg"}
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
servo_url = {path = "../url"}
|
servo_url = {path = "../url"}
|
||||||
time = "0.1"
|
time = "0.1"
|
||||||
|
uuid = {version = "0.8", features = ["v4", "serde"]}
|
||||||
|
|
|
@ -25,6 +25,7 @@ use msg::constellation_msg::PipelineId;
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
use time::{self, Duration, Tm};
|
use time::{self, Duration, Tm};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
// Information would be attached to NewGlobal to be received and show in devtools.
|
// Information would be attached to NewGlobal to be received and show in devtools.
|
||||||
// Extend these fields if we need more information.
|
// Extend these fields if we need more information.
|
||||||
|
@ -357,4 +358,4 @@ impl PreciseTime {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, MallocSizeOf, PartialEq, Serialize)]
|
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, MallocSizeOf, PartialEq, Serialize)]
|
||||||
pub struct WorkerId(pub u32);
|
pub struct WorkerId(pub Uuid);
|
||||||
|
|
|
@ -22,6 +22,7 @@ servo = [
|
||||||
"webrender_api",
|
"webrender_api",
|
||||||
"xml5ever",
|
"xml5ever",
|
||||||
"content-security-policy",
|
"content-security-policy",
|
||||||
|
"uuid"
|
||||||
]
|
]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
@ -47,3 +48,4 @@ url = { version = "2.0", optional = true }
|
||||||
webrender_api = { git = "https://github.com/servo/webrender", optional = true }
|
webrender_api = { git = "https://github.com/servo/webrender", optional = true }
|
||||||
xml5ever = { version = "0.16", optional = true }
|
xml5ever = { version = "0.16", optional = true }
|
||||||
void = "1.0.2"
|
void = "1.0.2"
|
||||||
|
uuid = {version = "0.8", features = ["v4"], optional = true}
|
||||||
|
|
|
@ -75,6 +75,8 @@ extern crate thin_slice;
|
||||||
extern crate time;
|
extern crate time;
|
||||||
#[cfg(feature = "url")]
|
#[cfg(feature = "url")]
|
||||||
extern crate url;
|
extern crate url;
|
||||||
|
#[cfg(feature = "servo")]
|
||||||
|
extern crate uuid;
|
||||||
extern crate void;
|
extern crate void;
|
||||||
#[cfg(feature = "webrender_api")]
|
#[cfg(feature = "webrender_api")]
|
||||||
extern crate webrender_api;
|
extern crate webrender_api;
|
||||||
|
@ -90,6 +92,8 @@ use std::mem::size_of;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
use std::os::raw::c_void;
|
use std::os::raw::c_void;
|
||||||
|
#[cfg(feature = "servo")]
|
||||||
|
use uuid::Uuid;
|
||||||
use void::Void;
|
use void::Void;
|
||||||
|
|
||||||
/// A C function that takes a pointer to a heap allocation and returns its size.
|
/// A C function that takes a pointer to a heap allocation and returns its size.
|
||||||
|
@ -840,6 +844,9 @@ malloc_size_of_is_0!(cssparser::RGBA, cssparser::TokenSerializationType);
|
||||||
#[cfg(feature = "servo")]
|
#[cfg(feature = "servo")]
|
||||||
malloc_size_of_is_0!(csp::Destination);
|
malloc_size_of_is_0!(csp::Destination);
|
||||||
|
|
||||||
|
#[cfg(feature = "servo")]
|
||||||
|
malloc_size_of_is_0!(Uuid);
|
||||||
|
|
||||||
#[cfg(feature = "url")]
|
#[cfg(feature = "url")]
|
||||||
impl MallocSizeOf for url::Host {
|
impl MallocSizeOf for url::Host {
|
||||||
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
|
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
|
||||||
|
|
|
@ -110,7 +110,7 @@ time = "0.1.12"
|
||||||
unicode-segmentation = "1.1.0"
|
unicode-segmentation = "1.1.0"
|
||||||
url = "2.0"
|
url = "2.0"
|
||||||
utf-8 = "0.7"
|
utf-8 = "0.7"
|
||||||
uuid = {version = "0.8", features = ["v4"]}
|
uuid = {version = "0.8", features = ["v4", "serde"]}
|
||||||
xml5ever = "0.16"
|
xml5ever = "0.16"
|
||||||
webdriver = "0.40"
|
webdriver = "0.40"
|
||||||
webgpu = {path = "../webgpu"}
|
webgpu = {path = "../webgpu"}
|
||||||
|
|
|
@ -46,7 +46,7 @@ use crate::task_source::TaskSourceName;
|
||||||
use crate::timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle};
|
use crate::timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle};
|
||||||
use crate::timers::{OneshotTimers, TimerCallback};
|
use crate::timers::{OneshotTimers, TimerCallback};
|
||||||
use content_security_policy::CspList;
|
use content_security_policy::CspList;
|
||||||
use devtools_traits::{PageError, ScriptToDevtoolsControlMsg, WorkerId};
|
use devtools_traits::{PageError, ScriptToDevtoolsControlMsg};
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use ipc_channel::router::ROUTER;
|
use ipc_channel::router::ROUTER;
|
||||||
|
@ -94,7 +94,6 @@ impl Drop for AutoCloseWorker {
|
||||||
pub struct GlobalScope {
|
pub struct GlobalScope {
|
||||||
eventtarget: EventTarget,
|
eventtarget: EventTarget,
|
||||||
crypto: MutNullableDom<Crypto>,
|
crypto: MutNullableDom<Crypto>,
|
||||||
next_worker_id: Cell<WorkerId>,
|
|
||||||
|
|
||||||
/// The message-port router id for this global, if it is managing ports.
|
/// The message-port router id for this global, if it is managing ports.
|
||||||
message_port_state: DomRefCell<MessagePortState>,
|
message_port_state: DomRefCell<MessagePortState>,
|
||||||
|
@ -347,7 +346,6 @@ impl GlobalScope {
|
||||||
message_port_state: DomRefCell::new(MessagePortState::UnManaged),
|
message_port_state: DomRefCell::new(MessagePortState::UnManaged),
|
||||||
eventtarget: EventTarget::new_inherited(),
|
eventtarget: EventTarget::new_inherited(),
|
||||||
crypto: Default::default(),
|
crypto: Default::default(),
|
||||||
next_worker_id: Cell::new(WorkerId(0)),
|
|
||||||
pipeline_id,
|
pipeline_id,
|
||||||
devtools_wants_updates: Default::default(),
|
devtools_wants_updates: Default::default(),
|
||||||
console_timers: DomRefCell::new(Default::default()),
|
console_timers: DomRefCell::new(Default::default()),
|
||||||
|
@ -926,14 +924,6 @@ impl GlobalScope {
|
||||||
self.crypto.or_init(|| Crypto::new(self))
|
self.crypto.or_init(|| Crypto::new(self))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get next worker id.
|
|
||||||
pub fn get_next_worker_id(&self) -> WorkerId {
|
|
||||||
let worker_id = self.next_worker_id.get();
|
|
||||||
let WorkerId(id_num) = worker_id;
|
|
||||||
self.next_worker_id.set(WorkerId(id_num + 1));
|
|
||||||
worker_id
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn live_devtools_updates(&self) -> bool {
|
pub fn live_devtools_updates(&self) -> bool {
|
||||||
self.devtools_wants_updates.get()
|
self.devtools_wants_updates.get()
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,10 +16,12 @@ use crate::dom::globalscope::GlobalScope;
|
||||||
use crate::dom::navigationpreloadmanager::NavigationPreloadManager;
|
use crate::dom::navigationpreloadmanager::NavigationPreloadManager;
|
||||||
use crate::dom::serviceworker::ServiceWorker;
|
use crate::dom::serviceworker::ServiceWorker;
|
||||||
use crate::dom::workerglobalscope::prepare_workerscope_init;
|
use crate::dom::workerglobalscope::prepare_workerscope_init;
|
||||||
|
use devtools_traits::WorkerId;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use script_traits::{ScopeThings, WorkerScriptLoadOrigin};
|
use script_traits::{ScopeThings, WorkerScriptLoadOrigin};
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct ServiceWorkerRegistration {
|
pub struct ServiceWorkerRegistration {
|
||||||
|
@ -111,7 +113,7 @@ impl ServiceWorkerRegistration {
|
||||||
pipeline_id: Some(global.pipeline_id()),
|
pipeline_id: Some(global.pipeline_id()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let worker_id = global.get_next_worker_id();
|
let worker_id = WorkerId(Uuid::new_v4());
|
||||||
let devtools_chan = global.devtools_chan().cloned();
|
let devtools_chan = global.devtools_chan().cloned();
|
||||||
let init = prepare_workerscope_init(&global, None);
|
let init = prepare_workerscope_init(&global, None);
|
||||||
ScopeThings {
|
ScopeThings {
|
||||||
|
|
|
@ -26,7 +26,7 @@ use crate::dom::workerglobalscope::prepare_workerscope_init;
|
||||||
use crate::script_runtime::JSContext;
|
use crate::script_runtime::JSContext;
|
||||||
use crate::task::TaskOnce;
|
use crate::task::TaskOnce;
|
||||||
use crossbeam_channel::{unbounded, Sender};
|
use crossbeam_channel::{unbounded, Sender};
|
||||||
use devtools_traits::{DevtoolsPageInfo, ScriptToDevtoolsControlMsg};
|
use devtools_traits::{DevtoolsPageInfo, ScriptToDevtoolsControlMsg, WorkerId};
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use ipc_channel::ipc;
|
use ipc_channel::ipc;
|
||||||
use js::jsapi::{Heap, JSObject, JS_RequestInterruptCallback};
|
use js::jsapi::{Heap, JSObject, JS_RequestInterruptCallback};
|
||||||
|
@ -36,6 +36,7 @@ use script_traits::{StructuredSerializedData, WorkerScriptLoadOrigin};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
pub type TrustedWorkerAddress = Trusted<Worker>;
|
pub type TrustedWorkerAddress = Trusted<Worker>;
|
||||||
|
|
||||||
|
@ -100,7 +101,7 @@ impl Worker {
|
||||||
};
|
};
|
||||||
|
|
||||||
let (devtools_sender, devtools_receiver) = ipc::channel().unwrap();
|
let (devtools_sender, devtools_receiver) = ipc::channel().unwrap();
|
||||||
let worker_id = global.get_next_worker_id();
|
let worker_id = WorkerId(Uuid::new_v4());
|
||||||
if let Some(ref chan) = global.devtools_chan() {
|
if let Some(ref chan) = global.devtools_chan() {
|
||||||
let pipeline_id = global.pipeline_id();
|
let pipeline_id = global.pipeline_id();
|
||||||
let title = format!("Worker for {}", worker_url);
|
let title = format!("Worker for {}", worker_url);
|
||||||
|
|
|
@ -58,6 +58,7 @@ use std::rc::Rc;
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use time::precise_time_ns;
|
use time::precise_time_ns;
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
pub fn prepare_workerscope_init(
|
pub fn prepare_workerscope_init(
|
||||||
global: &GlobalScope,
|
global: &GlobalScope,
|
||||||
|
@ -71,7 +72,7 @@ pub fn prepare_workerscope_init(
|
||||||
from_devtools_sender: devtools_sender,
|
from_devtools_sender: devtools_sender,
|
||||||
script_to_constellation_chan: global.script_to_constellation_chan().clone(),
|
script_to_constellation_chan: global.script_to_constellation_chan().clone(),
|
||||||
scheduler_chan: global.scheduler_chan().clone(),
|
scheduler_chan: global.scheduler_chan().clone(),
|
||||||
worker_id: global.get_next_worker_id(),
|
worker_id: WorkerId(Uuid::new_v4()),
|
||||||
pipeline_id: global.pipeline_id(),
|
pipeline_id: global.pipeline_id(),
|
||||||
origin: global.origin().immutable().clone(),
|
origin: global.origin().immutable().clone(),
|
||||||
is_headless: global.is_headless(),
|
is_headless: global.is_headless(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue