diff options
-rw-r--r-- | components/net/storage_thread.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/components/net/storage_thread.rs b/components/net/storage_thread.rs index 88726d5702b..5a336d2ea7a 100644 --- a/components/net/storage_thread.rs +++ b/components/net/storage_thread.rs @@ -67,21 +67,22 @@ impl StorageManager { self.keys(sender, url, storage_type) } StorageThreadMsg::SetItem(sender, url, storage_type, name, value) => { - self.set_item(sender, url, storage_type, name, value) + self.set_item(sender, url, storage_type, name, value); + self.save_state() } StorageThreadMsg::GetItem(sender, url, storage_type, name) => { self.request_item(sender, url, storage_type, name) } StorageThreadMsg::RemoveItem(sender, url, storage_type, name) => { - self.remove_item(sender, url, storage_type, name) + self.remove_item(sender, url, storage_type, name); + self.save_state() } StorageThreadMsg::Clear(sender, url, storage_type) => { - self.clear(sender, url, storage_type) + self.clear(sender, url, storage_type); + self.save_state() } StorageThreadMsg::Exit(sender) => { - if let Some(ref config_dir) = self.config_dir { - resource_thread::write_json_to_file(&self.local_data, config_dir, "local_data.json"); - } + // Nothing to do since we save localstorage set eagerly. let _ = sender.send(()); break } @@ -89,6 +90,12 @@ impl StorageManager { } } + fn save_state(&self) { + if let Some(ref config_dir) = self.config_dir { + resource_thread::write_json_to_file(&self.local_data, config_dir, "local_data.json"); + } + } + fn select_data(&self, storage_type: StorageType) -> &HashMap<String, (usize, BTreeMap<String, String>)> { match storage_type { |