devtools/actors/inspector/
css_properties.rs1use std::collections::HashMap;
9
10use devtools_traits::CssDatabaseProperty;
11use serde::Serialize;
12use serde_json::{Map, Value};
13
14use crate::StreamId;
15use crate::actor::{Actor, ActorError, ActorRegistry};
16use crate::protocol::ClientRequest;
17
18pub struct CssPropertiesActor {
19 name: String,
20 properties: HashMap<String, CssDatabaseProperty>,
21}
22
23#[derive(Serialize)]
24struct GetCssDatabaseReply<'a> {
25 from: String,
26 properties: &'a HashMap<String, CssDatabaseProperty>,
27}
28
29impl Actor for CssPropertiesActor {
30 fn name(&self) -> String {
31 self.name.clone()
32 }
33
34 fn handle_message(
39 &self,
40 request: ClientRequest,
41 _registry: &ActorRegistry,
42 msg_type: &str,
43 _msg: &Map<String, Value>,
44 _id: StreamId,
45 ) -> Result<(), ActorError> {
46 match msg_type {
47 "getCSSDatabase" => request.reply_final(&GetCssDatabaseReply {
48 from: self.name(),
49 properties: &self.properties,
50 })?,
51 _ => return Err(ActorError::UnrecognizedPacketType),
52 };
53 Ok(())
54 }
55}
56
57impl CssPropertiesActor {
58 pub fn new(name: String, properties: HashMap<String, CssDatabaseProperty>) -> Self {
59 Self { name, properties }
60 }
61}