diff --git a/components/net/indexeddb/idb_thread.rs b/components/net/indexeddb/idb_thread.rs index 57de888a71e..3cea4e948b9 100644 --- a/components/net/indexeddb/idb_thread.rs +++ b/components/net/indexeddb/idb_thread.rs @@ -224,9 +224,6 @@ impl IndexedDBManager { impl IndexedDBManager { fn start(&mut self) { - if !pref!(dom_indexeddb_enabled) { - return; - } loop { // FIXME:(arihant2math) No message *most likely* means that // the ipc sender has been dropped, so we break the look diff --git a/components/script/dom/idbfactory.rs b/components/script/dom/idbfactory.rs index da9d77c5320..39d801be1b9 100644 --- a/components/script/dom/idbfactory.rs +++ b/components/script/dom/idbfactory.rs @@ -58,7 +58,9 @@ impl IDBFactoryMethods for IDBFactory { let request = IDBOpenDBRequest::new(&self.global(), CanGc::note()); // Step 5: Runs in parallel - request.open_database(name, version); + if request.open_database(name, version).is_err() { + return Err(Error::Operation); + } // Step 6 Ok(request) @@ -81,7 +83,9 @@ impl IDBFactoryMethods for IDBFactory { let request = IDBOpenDBRequest::new(&self.global(), CanGc::note()); // Step 4: Runs in parallel - request.delete_database(name.to_string()); + if request.delete_database(name.to_string()).is_err() { + return Err(Error::Operation); + } // Step 5: Return request Ok(request) diff --git a/components/script/dom/idbopendbrequest.rs b/components/script/dom/idbopendbrequest.rs index 5373546f86c..62fe1b648b8 100644 --- a/components/script/dom/idbopendbrequest.rs +++ b/components/script/dom/idbopendbrequest.rs @@ -224,7 +224,7 @@ impl IDBOpenDBRequest { self.idbrequest.set_error(error, can_gc); } - pub fn open_database(&self, name: DOMString, version: Option) { + pub fn open_database(&self, name: DOMString, version: Option) -> Result<(), ()> { let global = self.global(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); @@ -286,13 +286,17 @@ impl IDBOpenDBRequest { }), ); - global + if global .resource_threads() .send(IndexedDBThreadMsg::Sync(open_operation)) - .unwrap(); + .is_err() + { + return Err(()); + } + Ok(()) } - pub fn delete_database(&self, name: String) { + pub fn delete_database(&self, name: String) -> Result<(), ()> { let global = self.global(); let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap(); @@ -317,10 +321,14 @@ impl IDBOpenDBRequest { }), ); - global + if global .resource_threads() .send(IndexedDBThreadMsg::Sync(delete_operation)) - .unwrap(); + .is_err() + { + return Err(()); + } + Ok(()) } pub fn dispatch_success(&self, result: &IDBDatabase) {