aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Desré <fabrice@desre.org>2018-05-20 12:15:02 -0700
committerFabrice Desré <fabrice@desre.org>2018-05-20 12:15:02 -0700
commit20266fa103f277531d8fc6fb92c52527f5c716f8 (patch)
treef8fa4d8e8c846c5071943aae26fcb0d7f85e5bd2
parentcb764be7cdb76b5bc23f21e86dac9e235de0b709 (diff)
downloadservo-20266fa103f277531d8fc6fb92c52527f5c716f8.tar.gz
servo-20266fa103f277531d8fc6fb92c52527f5c716f8.zip
Save local storage at every change and not just on shutdown
-rw-r--r--components/net/storage_thread.rs19
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 {