Index: content/browser/indexed_db/indexed_db_connection.cc |
diff --git a/content/browser/indexed_db/indexed_db_connection.cc b/content/browser/indexed_db/indexed_db_connection.cc |
index 216786a1d365f783f207895b0158fbce7808eab7..d698307002b37d3b62ad76267dadbb11890fdc25 100644 |
--- a/content/browser/indexed_db/indexed_db_connection.cc |
+++ b/content/browser/indexed_db/indexed_db_connection.cc |
@@ -15,7 +15,7 @@ |
namespace content { |
namespace { |
- |
+static const int64_t kMaxObserverTransactionId = -1ll; |
cmumford
2017/01/17 20:58:10
Add newline before.
dmurph
2017/01/17 23:28:04
Done.
Actually, as per working with Victor, we re
|
static int32_t next_id; |
} // namespace |
@@ -158,4 +158,13 @@ void IndexedDBConnection::RemoveTransaction(int64_t id) { |
transactions_.erase(id); |
} |
+int64_t IndexedDBConnection::NewObserverTransactionId() { |
+ // If we ever overflow, just reset the ID. |
+ if (next_observer_transaction_id_ == kMaxObserverTransactionId) |
+ next_observer_transaction_id_ = 1ll << 32; |
+ DCHECK_EQ(next_observer_transaction_id_ & 0xFFFFFFFF, 0) |
+ << "Highest order bits reserved for renderer-created transactions"; |
+ return next_observer_transaction_id_++; |
+} |
+ |
} // namespace content |