diff options
-rw-r--r-- | components/net/storage_thread.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/components/net/storage_thread.rs b/components/net/storage_thread.rs index c314dbdd8cd..cc329f08922 100644 --- a/components/net/storage_thread.rs +++ b/components/net/storage_thread.rs @@ -144,12 +144,15 @@ impl StorageManager { value: String) { let origin = self.origin_as_string(url); - let current_total_size = { + let (this_storage_size, other_storage_size) = { let local_data = self.select_data(StorageType::Local); let session_data = self.select_data(StorageType::Session); let local_data_size = local_data.get(&origin).map_or(0, |&(total, _)| total); let session_data_size = session_data.get(&origin).map_or(0, |&(total, _)| total); - local_data_size + session_data_size + match storage_type { + StorageType::Local => (local_data_size, session_data_size), + StorageType::Session => (session_data_size, local_data_size), + } }; let data = self.select_data_mut(storage_type); @@ -158,14 +161,14 @@ impl StorageManager { } let message = data.get_mut(&origin).map(|&mut (ref mut total, ref mut entry)| { - let mut new_total_size = current_total_size + value.as_bytes().len(); + let mut new_total_size = this_storage_size + value.as_bytes().len(); if let Some(old_value) = entry.get(&name) { new_total_size -= old_value.as_bytes().len(); } else { new_total_size += name.as_bytes().len(); } - if new_total_size > QUOTA_SIZE_LIMIT { + if (new_total_size + other_storage_size) > QUOTA_SIZE_LIMIT { return Err(()); } |