From 9048185a10104380ff6e2052d3183c1849eb5d77 Mon Sep 17 00:00:00 2001 From: Sudarsan Date: Sat, 12 Sep 2020 21:57:08 +0800 Subject: [PATCH] Returns fake preferences if PrefValue::Missing. If the pref_map().get() enum returns PrefValue::Missing, then fake values are returned just like before. --- components/devtools/actors/preference.rs | 41 +++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) 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,