servo/
user_content_manager.rs1use constellation_traits::{EmbedderToConstellationMessage, UserContentManagerAction};
6use embedder_traits::user_contents::{UserContentManagerId, UserScript};
7
8use crate::Servo;
9
10#[derive(Clone)]
15pub struct UserContentManager {
16 pub(crate) id: UserContentManagerId,
17 pub(crate) servo: Servo,
18}
19
20impl UserContentManager {
21 pub fn new(servo: &Servo) -> Self {
22 Self {
23 id: UserContentManagerId::next(),
24 servo: servo.clone(),
25 }
26 }
27
28 pub(crate) fn id(&self) -> UserContentManagerId {
29 self.id
30 }
31
32 pub fn add_script(&self, user_script: UserScript) {
33 self.servo.constellation_proxy().send(
34 EmbedderToConstellationMessage::UserContentManagerAction(
35 self.id,
36 UserContentManagerAction::AddUserScript(user_script),
37 ),
38 );
39 }
40}
41
42impl Drop for UserContentManager {
43 fn drop(&mut self) {
44 self.servo.constellation_proxy().send(
45 EmbedderToConstellationMessage::UserContentManagerAction(
46 self.id,
47 UserContentManagerAction::DestroyUserContentManager,
48 ),
49 );
50 }
51}