Index: content/browser/indexed_db/indexed_db_callbacks.h |
diff --git a/content/browser/indexed_db/indexed_db_callbacks.h b/content/browser/indexed_db/indexed_db_callbacks.h |
index b72fc605e8cd53ff426a5fc3e80cafc062876907..45d9e0d25f8e5e341a8ec9c09999755c93862a8a 100644 |
--- a/content/browser/indexed_db/indexed_db_callbacks.h |
+++ b/content/browser/indexed_db/indexed_db_callbacks.h |
@@ -13,7 +13,7 @@ |
#include "base/logging.h" |
#include "base/macros.h" |
-#include "base/memory/ref_counted.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/strings/string16.h" |
#include "base/threading/thread_checker.h" |
#include "content/browser/indexed_db/indexed_db_database_error.h" |
@@ -23,6 +23,10 @@ |
#include "content/common/indexed_db/indexed_db_key_path.h" |
#include "url/origin.h" |
+namespace base { |
+class SequencedTaskRunner; |
+} |
+ |
namespace content { |
class IndexedDBConnection; |
class IndexedDBCursor; |
@@ -32,6 +36,7 @@ struct IndexedDBDatabaseMetadata; |
struct IndexedDBReturnValue; |
struct IndexedDBValue; |
+// Expected to be constructed on IO thread and called/deleted from IDB thread. |
class CONTENT_EXPORT IndexedDBCallbacks |
: public base::RefCounted<IndexedDBCallbacks> { |
public: |
@@ -40,9 +45,10 @@ class CONTENT_EXPORT IndexedDBCallbacks |
IndexedDBValue* value); |
IndexedDBCallbacks( |
- scoped_refptr<IndexedDBDispatcherHost> dispatcher_host, |
+ base::WeakPtr<IndexedDBDispatcherHost> dispatcher_host, |
const url::Origin& origin, |
- ::indexed_db::mojom::CallbacksAssociatedPtrInfo callbacks_info); |
+ ::indexed_db::mojom::CallbacksAssociatedPtrInfo callbacks_info, |
+ scoped_refptr<base::SequencedTaskRunner> idb_runner); |
virtual void OnError(const IndexedDBDatabaseError& error); |
@@ -106,18 +112,19 @@ class CONTENT_EXPORT IndexedDBCallbacks |
class IOThreadHelper; |
- // Originally from IndexedDBCallbacks: |
- scoped_refptr<IndexedDBDispatcherHost> dispatcher_host_; |
+ // Stores if this callbacks object is complete and should not be called again. |
+ bool complete_ = false; |
- // IndexedDBDatabase callbacks ------------------------ |
- url::Origin origin_; |
- bool database_sent_ = false; |
+ // Depending on whether the database needs upgrading, we create connections in |
+ // different spots. This stores if we've already created the connection so |
+ // OnSuccess(Connection) doesn't create an extra one. |
+ bool connection_created_ = false; |
// Used to assert that OnSuccess is only called if there was no data loss. |
blink::WebIDBDataLoss data_loss_; |
// The "blocked" event should be sent at most once per request. |
- bool sent_blocked_; |
+ bool sent_blocked_ = false; |
base::TimeTicks connection_open_start_time_; |
std::unique_ptr<IOThreadHelper, BrowserThread::DeleteOnIOThread> io_helper_; |