Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(798)

Unified Diff: third_party/WebKit/Source/modules/indexeddb/IDBIndex.h

Issue 2314933005: Align IndexedDB metadata rollback on transaction abort to spec. (Closed)
Patch Set: Rebased. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/indexeddb/IDBIndex.h
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBIndex.h b/third_party/WebKit/Source/modules/indexeddb/IDBIndex.h
index 77c907c495641f8871b9c0721d06f2e45d7b9065..b01a82014b8fb86eaa5e7e6522eae92d75c697cd 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBIndex.h
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBIndex.h
@@ -46,20 +46,22 @@ class IDBObjectStore;
class IDBIndex final : public GarbageCollectedFinalized<IDBIndex>, public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
- static IDBIndex* create(const IDBIndexMetadata& metadata, IDBObjectStore* objectStore, IDBTransaction* transaction)
+ static IDBIndex* create(RefPtr<IDBIndexMetadata> metadata, IDBObjectStore* objectStore, IDBTransaction* transaction)
{
- return new IDBIndex(metadata, objectStore, transaction);
+ return new IDBIndex(std::move(metadata), objectStore, transaction);
}
~IDBIndex();
DECLARE_TRACE();
+ const IDBIndexMetadata& metadata() const { return *m_metadata; }
+
// Implement the IDL
- const String& name() const { return m_metadata.name; }
+ const String& name() const { return metadata().name; }
void setName(const String& name, ExceptionState&);
IDBObjectStore* objectStore() const { return m_objectStore.get(); }
ScriptValue keyPath(ScriptState*) const;
- bool unique() const { return m_metadata.unique; }
- bool multiEntry() const { return m_metadata.multiEntry; }
+ bool unique() const { return metadata().unique; }
+ bool multiEntry() const { return metadata().multiEntry; }
IDBRequest* openCursor(ScriptState*, const ScriptValue& key, const String& direction, ExceptionState&);
IDBRequest* openKeyCursor(ScriptState*, const ScriptValue& range, const String& direction, ExceptionState&);
@@ -72,8 +74,9 @@ public:
IDBRequest* getAllKeys(ScriptState*, const ScriptValue& range, uint32_t maxCount, ExceptionState&);
void markDeleted() { m_deleted = true; }
- bool isDeleted() const;
- int64_t id() const { return m_metadata.id; }
+ bool isDeleted() const { return m_deleted; }
+ int64_t id() const { return metadata().id; }
+ void revertMetadata(RefPtr<IDBIndexMetadata> oldMetadata);
// Used internally and by InspectorIndexedDBAgent:
IDBRequest* openCursor(ScriptState*, IDBKeyRange*, WebIDBCursorDirection);
@@ -81,12 +84,12 @@ public:
WebIDBDatabase* backendDB() const;
private:
- IDBIndex(const IDBIndexMetadata&, IDBObjectStore*, IDBTransaction*);
+ IDBIndex(RefPtr<IDBIndexMetadata>, IDBObjectStore*, IDBTransaction*);
IDBRequest* getInternal(ScriptState*, const ScriptValue& key, ExceptionState&, bool keyOnly);
IDBRequest* getAllInternal(ScriptState*, const ScriptValue& range, unsigned long maxCount, ExceptionState&, bool keyOnly);
- IDBIndexMetadata m_metadata;
+ RefPtr<IDBIndexMetadata> m_metadata;
Member<IDBObjectStore> m_objectStore;
Member<IDBTransaction> m_transaction;
bool m_deleted = false;

Powered by Google App Engine
This is Rietveld 408576698