diff --git a/components/devtools/actors/preference.rs b/components/devtools/actors/preference.rs index ce3123ce5dd..1c8e9129787 100644 --- a/components/devtools/actors/preference.rs +++ b/components/devtools/actors/preference.rs @@ -67,11 +67,50 @@ impl Actor for PreferenceActor { let _ = stream.write_json_packet(&reply); ActorMessageStatus::Processed }, - PrefValue::Missing => ActorMessageStatus::Ignored, + PrefValue::Missing => handle_missing_preference(self.name(), msg_type, stream), }) } } +// if the preferences are missing from pref_map then we return a +// fake preference response based on msg_type. +fn handle_missing_preference( + name: String, + msg_type: &str, + stream: &mut TcpStream, +) -> ActorMessageStatus { + match msg_type { + "getBoolPref" => { + let reply = BoolReply { + from: name, + value: false, + }; + let _ = stream.write_json_packet(&reply); + ActorMessageStatus::Processed + }, + + "getCharPref" => { + let reply = CharReply { + from: name, + value: "".to_owned(), + }; + let _ = stream.write_json_packet(&reply); + ActorMessageStatus::Processed + }, + + "getIntPref" => { + let reply = IntReply { + from: name, + value: 0, + }; + let _ = stream.write_json_packet(&reply); + ActorMessageStatus::Processed + }, + + _ => ActorMessageStatus::Ignored, + } +} + #[derive(Serialize)] struct BoolReply { from: String,