From f663797d53d3c46989c4f4c573247c10b510c75d Mon Sep 17 00:00:00 2001 From: Simon Giesecke Date: Mon, 16 Dec 2019 13:17:53 +0000 Subject: [PATCH] Bug 1600283 - Remove uses of already_AddRefed. r=dom-workers-and-storage-reviewers,janv Differential Revision: https://phabricator.services.mozilla.com/D55482 --HG-- extra : moz-landing-system : lando --- dom/indexedDB/IDBObjectStore.cpp | 186 +++++++++++++++++++++++-------- dom/indexedDB/IDBObjectStore.h | 168 ++++++++++------------------ 2 files changed, 197 insertions(+), 157 deletions(-) diff --git a/dom/indexedDB/IDBObjectStore.cpp b/dom/indexedDB/IDBObjectStore.cpp index e152f2e08ea8..603aa72c9000 100644 --- a/dom/indexedDB/IDBObjectStore.cpp +++ b/dom/indexedDB/IDBObjectStore.cpp @@ -180,18 +180,15 @@ struct MOZ_STACK_CLASS GetAddInfoClosure final { ~GetAddInfoClosure() { MOZ_COUNT_DTOR(GetAddInfoClosure); } }; -already_AddRefed GenerateRequest(JSContext* aCx, - IDBObjectStore* aObjectStore) { +RefPtr GenerateRequest(JSContext* aCx, + IDBObjectStore* aObjectStore) { MOZ_ASSERT(aObjectStore); aObjectStore->AssertIsOnOwningThread(); IDBTransaction* const transaction = aObjectStore->Transaction(); - RefPtr request = IDBRequest::Create( - aCx, aObjectStore, transaction->Database(), transaction); - MOZ_ASSERT(request); - - return request.forget(); + return IDBRequest::Create(aCx, aObjectStore, transaction->Database(), + transaction); } bool StructuredCloneWriteCallback(JSContext* aCx, @@ -921,14 +918,12 @@ IDBObjectStore::~IDBObjectStore() { } // static -already_AddRefed IDBObjectStore::Create( - IDBTransaction* aTransaction, const ObjectStoreSpec& aSpec) { +RefPtr IDBObjectStore::Create(IDBTransaction* aTransaction, + const ObjectStoreSpec& aSpec) { MOZ_ASSERT(aTransaction); aTransaction->AssertIsOnOwningThread(); - RefPtr objectStore = new IDBObjectStore(aTransaction, &aSpec); - - return objectStore.forget(); + return new IDBObjectStore(aTransaction, &aSpec); } // static @@ -1488,9 +1483,11 @@ void IDBObjectStore::GetAddInfo(JSContext* aCx, ValueWrapper& aValueWrapper, } } -already_AddRefed IDBObjectStore::AddOrPut( - JSContext* aCx, ValueWrapper& aValueWrapper, JS::Handle aKey, - bool aOverwrite, bool aFromCursor, ErrorResult& aRv) { +RefPtr IDBObjectStore::AddOrPut(JSContext* aCx, + ValueWrapper& aValueWrapper, + JS::Handle aKey, + bool aOverwrite, bool aFromCursor, + ErrorResult& aRv) { AssertIsOnOwningThread(); MOZ_ASSERT(aCx); MOZ_ASSERT_IF(aFromCursor, aOverwrite); @@ -1655,7 +1652,7 @@ already_AddRefed IDBObjectStore::AddOrPut( ? RequestParams{ObjectStorePutParams(commonParams)} : RequestParams{ObjectStoreAddParams(commonParams)}; - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); if (!aFromCursor) { @@ -1682,10 +1679,10 @@ already_AddRefed IDBObjectStore::AddOrPut( mTransaction->InvalidateCursorCaches(); - return request.forget(); + return request; } -already_AddRefed IDBObjectStore::GetAllInternal( +RefPtr IDBObjectStore::GetAllInternal( bool aKeysOnly, JSContext* aCx, JS::Handle aKey, const Optional& aLimit, ErrorResult& aRv) { AssertIsOnOwningThread(); @@ -1724,7 +1721,7 @@ already_AddRefed IDBObjectStore::GetAllInternal( params = ObjectStoreGetAllParams(id, optionalKeyRange, limit); } - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); if (aKeysOnly) { @@ -1754,11 +1751,56 @@ already_AddRefed IDBObjectStore::GetAllInternal( mTransaction->StartRequest(request, params); - return request.forget(); + return request; } -already_AddRefed IDBObjectStore::Clear(JSContext* aCx, - ErrorResult& aRv) { +RefPtr IDBObjectStore::Add(JSContext* aCx, + JS::Handle aValue, + JS::Handle aKey, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + ValueWrapper valueWrapper(aCx, aValue); + + return AddOrPut(aCx, valueWrapper, aKey, false, /* aFromCursor */ false, aRv); +} + +RefPtr IDBObjectStore::Put(JSContext* aCx, + JS::Handle aValue, + JS::Handle aKey, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + ValueWrapper valueWrapper(aCx, aValue); + + return AddOrPut(aCx, valueWrapper, aKey, true, /* aFromCursor */ false, aRv); +} + +RefPtr IDBObjectStore::Delete(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return DeleteInternal(aCx, aKey, /* aFromCursor */ false, aRv); +} + +RefPtr IDBObjectStore::Get(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return GetInternal(/* aKeyOnly */ false, aCx, aKey, aRv); +} + +RefPtr IDBObjectStore::GetKey(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return GetInternal(/* aKeyOnly */ true, aCx, aKey, aRv); +} + +RefPtr IDBObjectStore::Clear(JSContext* aCx, ErrorResult& aRv) { AssertIsOnOwningThread(); if (mDeletedSpec) { @@ -1778,7 +1820,7 @@ already_AddRefed IDBObjectStore::Clear(JSContext* aCx, const ObjectStoreClearParams params = {Id()}; - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); IDB_LOG_MARK_CHILD_TRANSACTION_REQUEST( @@ -1792,13 +1834,59 @@ already_AddRefed IDBObjectStore::Clear(JSContext* aCx, mTransaction->StartRequest(request, params); - return request.forget(); + return request; } -already_AddRefed IDBObjectStore::Index(const nsAString& aName, +RefPtr IDBObjectStore::GetAll(JSContext* aCx, + JS::Handle aKey, + const Optional& aLimit, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return GetAllInternal(/* aKeysOnly */ false, aCx, aKey, aLimit, aRv); +} + +RefPtr IDBObjectStore::GetAllKeys(JSContext* aCx, + JS::Handle aKey, + const Optional& aLimit, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return GetAllInternal(/* aKeysOnly */ true, aCx, aKey, aLimit, aRv); +} + +RefPtr IDBObjectStore::OpenCursor(JSContext* aCx, + JS::Handle aRange, + IDBCursorDirection aDirection, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return OpenCursorInternal(/* aKeysOnly */ false, aCx, aRange, aDirection, + aRv); +} + +RefPtr IDBObjectStore::OpenCursor(JSContext* aCx, + IDBCursorDirection aDirection, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + + return OpenCursorInternal(/* aKeysOnly */ false, aCx, + JS::UndefinedHandleValue, aDirection, aRv); +} + +RefPtr IDBObjectStore::OpenKeyCursor(JSContext* aCx, + JS::Handle aRange, + IDBCursorDirection aDirection, ErrorResult& aRv) { AssertIsOnOwningThread(); + return OpenCursorInternal(/* aKeysOnly */ true, aCx, aRange, aDirection, aRv); +} + +RefPtr IDBObjectStore::Index(const nsAString& aName, + ErrorResult& aRv) { + AssertIsOnOwningThread(); + if (mTransaction->IsCommittingOrFinished() || mDeletedSpec) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); return nullptr; @@ -1838,7 +1926,7 @@ already_AddRefed IDBObjectStore::Index(const nsAString& aName, index = *foundIndex; } - return index.forget(); + return index; } NS_IMPL_CYCLE_COLLECTION_CLASS(IDBObjectStore) @@ -1908,16 +1996,16 @@ void IDBObjectStore::GetKeyPath(JSContext* aCx, aResult.set(mCachedKeyPath); } -already_AddRefed IDBObjectStore::IndexNames() { +RefPtr IDBObjectStore::IndexNames() { AssertIsOnOwningThread(); return CreateSortedDOMStringList( mSpec->indexes(), [](const auto& index) { return index.name(); }); } -already_AddRefed IDBObjectStore::GetInternal( - bool aKeyOnly, JSContext* aCx, JS::Handle aKey, - ErrorResult& aRv) { +RefPtr IDBObjectStore::GetInternal(bool aKeyOnly, JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv) { AssertIsOnOwningThread(); if (mDeletedSpec) { @@ -1951,7 +2039,7 @@ already_AddRefed IDBObjectStore::GetInternal( aKeyOnly ? RequestParams{ObjectStoreGetKeyParams(id, serializedKeyRange)} : RequestParams{ObjectStoreGetParams(id, serializedKeyRange)}; - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); IDB_LOG_MARK_CHILD_TRANSACTION_REQUEST( @@ -1969,12 +2057,13 @@ already_AddRefed IDBObjectStore::GetInternal( mTransaction->StartRequest(request, params); - return request.forget(); + return request; } -already_AddRefed IDBObjectStore::DeleteInternal( - JSContext* aCx, JS::Handle aKey, bool aFromCursor, - ErrorResult& aRv) { +RefPtr IDBObjectStore::DeleteInternal(JSContext* aCx, + JS::Handle aKey, + bool aFromCursor, + ErrorResult& aRv) { AssertIsOnOwningThread(); if (mDeletedSpec) { @@ -2008,7 +2097,7 @@ already_AddRefed IDBObjectStore::DeleteInternal( params.objectStoreId() = Id(); keyRange->ToSerialized(params.keyRange()); - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); if (!aFromCursor) { @@ -2025,10 +2114,10 @@ already_AddRefed IDBObjectStore::DeleteInternal( mTransaction->InvalidateCursorCaches(); - return request.forget(); + return request; } -already_AddRefed IDBObjectStore::CreateIndex( +RefPtr IDBObjectStore::CreateIndex( const nsAString& aName, const StringOrStringSequence& aKeyPath, const IDBIndexParameters& aOptionalParameters, ErrorResult& aRv) { AssertIsOnOwningThread(); @@ -2118,8 +2207,7 @@ already_AddRefed IDBObjectStore::CreateIndex( transaction->CreateIndex(this, *metadata); - RefPtr index = IDBIndex::Create(this, *metadata); - MOZ_ASSERT(index); + auto index = IDBIndex::Create(this, *metadata); mIndexes.AppendElement(index); @@ -2134,7 +2222,7 @@ already_AddRefed IDBObjectStore::CreateIndex( IDB_LOG_STRINGIFY(mTransaction), IDB_LOG_STRINGIFY(this), IDB_LOG_STRINGIFY(index)); - return index.forget(); + return index; } void IDBObjectStore::DeleteIndex(const nsAString& aName, ErrorResult& aRv) { @@ -2204,9 +2292,9 @@ void IDBObjectStore::DeleteIndex(const nsAString& aName, ErrorResult& aRv) { transaction->DeleteIndex(this, foundId); } -already_AddRefed IDBObjectStore::Count(JSContext* aCx, - JS::Handle aKey, - ErrorResult& aRv) { +RefPtr IDBObjectStore::Count(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv) { AssertIsOnOwningThread(); if (mDeletedSpec) { @@ -2234,7 +2322,7 @@ already_AddRefed IDBObjectStore::Count(JSContext* aCx, params.optionalKeyRange().emplace(serializedKeyRange); } - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); IDB_LOG_MARK_CHILD_TRANSACTION_REQUEST( @@ -2252,10 +2340,10 @@ already_AddRefed IDBObjectStore::Count(JSContext* aCx, mTransaction->StartRequest(request, params); - return request.forget(); + return request; } -already_AddRefed IDBObjectStore::OpenCursorInternal( +RefPtr IDBObjectStore::OpenCursorInternal( bool aKeysOnly, JSContext* aCx, JS::Handle aRange, IDBCursorDirection aDirection, ErrorResult& aRv) { AssertIsOnOwningThread(); @@ -2300,7 +2388,7 @@ already_AddRefed IDBObjectStore::OpenCursorInternal( aKeysOnly ? OpenCursorParams{ObjectStoreOpenKeyCursorParams{commonParams}} : OpenCursorParams{ObjectStoreOpenCursorParams{commonParams}}; - RefPtr request = GenerateRequest(aCx, this); + auto request = GenerateRequest(aCx, this); MOZ_ASSERT(request); if (aKeysOnly) { @@ -2333,7 +2421,7 @@ already_AddRefed IDBObjectStore::OpenCursorInternal( mTransaction->OpenCursor(actor, params); - return request.forget(); + return request; } void IDBObjectStore::RefreshSpec(bool aMayDelete) { diff --git a/dom/indexedDB/IDBObjectStore.h b/dom/indexedDB/IDBObjectStore.h index 89b86f5adea7..1fa8d900f86e 100644 --- a/dom/indexedDB/IDBObjectStore.h +++ b/dom/indexedDB/IDBObjectStore.h @@ -93,8 +93,8 @@ class IDBObjectStore final : public nsISupports, public nsWrapperCache { bool Clone(JSContext* aCx); }; - static already_AddRefed Create(IDBTransaction* aTransaction, - const ObjectStoreSpec& aSpec); + static MOZ_MUST_USE RefPtr Create( + IDBTransaction* aTransaction, const ObjectStoreSpec& aSpec); static void AppendIndexUpdateInfo(int64_t aIndexID, const KeyPath& aKeyPath, bool aMultiEntry, const nsCString& aLocale, @@ -153,7 +153,7 @@ class IDBObjectStore final : public nsISupports, public nsWrapperCache { void GetKeyPath(JSContext* aCx, JS::MutableHandle aResult, ErrorResult& aRv); - already_AddRefed IndexNames(); + MOZ_MUST_USE RefPtr IndexNames(); IDBTransaction* Transaction() const { AssertIsOnOwningThread(); @@ -161,110 +161,65 @@ class IDBObjectStore final : public nsISupports, public nsWrapperCache { return mTransaction; } - already_AddRefed Add(JSContext* aCx, JS::Handle aValue, - JS::Handle aKey, - ErrorResult& aRv) { - AssertIsOnOwningThread(); - - ValueWrapper valueWrapper(aCx, aValue); - - return AddOrPut(aCx, valueWrapper, aKey, false, /* aFromCursor */ false, - aRv); - } - - already_AddRefed Put(JSContext* aCx, JS::Handle aValue, - JS::Handle aKey, - ErrorResult& aRv) { - AssertIsOnOwningThread(); - - ValueWrapper valueWrapper(aCx, aValue); - - return AddOrPut(aCx, valueWrapper, aKey, true, /* aFromCursor */ false, - aRv); - } - - already_AddRefed Delete(JSContext* aCx, + MOZ_MUST_USE RefPtr Add(JSContext* aCx, + JS::Handle aValue, JS::Handle aKey, - ErrorResult& aRv) { - AssertIsOnOwningThread(); + ErrorResult& aRv); - return DeleteInternal(aCx, aKey, /* aFromCursor */ false, aRv); - } - - already_AddRefed Get(JSContext* aCx, JS::Handle aKey, - ErrorResult& aRv) { - AssertIsOnOwningThread(); - - return GetInternal(/* aKeyOnly */ false, aCx, aKey, aRv); - } - - already_AddRefed GetKey(JSContext* aCx, + MOZ_MUST_USE RefPtr Put(JSContext* aCx, + JS::Handle aValue, JS::Handle aKey, - ErrorResult& aRv) { - AssertIsOnOwningThread(); + ErrorResult& aRv); - return GetInternal(/* aKeyOnly */ true, aCx, aKey, aRv); - } + MOZ_MUST_USE RefPtr Delete(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv); - already_AddRefed Clear(JSContext* aCx, ErrorResult& aRv); + MOZ_MUST_USE RefPtr Get(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv); - already_AddRefed CreateIndex( + MOZ_MUST_USE RefPtr GetKey(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv); + + MOZ_MUST_USE RefPtr Clear(JSContext* aCx, ErrorResult& aRv); + + MOZ_MUST_USE RefPtr CreateIndex( const nsAString& aName, const StringOrStringSequence& aKeyPath, const IDBIndexParameters& aOptionalParameters, ErrorResult& aRv); - already_AddRefed Index(const nsAString& aName, ErrorResult& aRv); + MOZ_MUST_USE RefPtr Index(const nsAString& aName, ErrorResult& aRv); void DeleteIndex(const nsAString& aName, ErrorResult& aRv); - already_AddRefed Count(JSContext* aCx, JS::Handle aKey, - ErrorResult& aRv); + MOZ_MUST_USE RefPtr Count(JSContext* aCx, + JS::Handle aKey, + ErrorResult& aRv); - already_AddRefed GetAll(JSContext* aCx, - JS::Handle aKey, - const Optional& aLimit, - ErrorResult& aRv) { - AssertIsOnOwningThread(); + MOZ_MUST_USE RefPtr GetAll(JSContext* aCx, + JS::Handle aKey, + const Optional& aLimit, + ErrorResult& aRv); - return GetAllInternal(/* aKeysOnly */ false, aCx, aKey, aLimit, aRv); - } + MOZ_MUST_USE RefPtr GetAllKeys(JSContext* aCx, + JS::Handle aKey, + const Optional& aLimit, + ErrorResult& aRv); - already_AddRefed GetAllKeys(JSContext* aCx, - JS::Handle aKey, - const Optional& aLimit, - ErrorResult& aRv) { - AssertIsOnOwningThread(); - - return GetAllInternal(/* aKeysOnly */ true, aCx, aKey, aLimit, aRv); - } - - already_AddRefed OpenCursor(JSContext* aCx, - JS::Handle aRange, - IDBCursorDirection aDirection, - ErrorResult& aRv) { - AssertIsOnOwningThread(); - - return OpenCursorInternal(/* aKeysOnly */ false, aCx, aRange, aDirection, - aRv); - } - - already_AddRefed OpenCursor(JSContext* aCx, - IDBCursorDirection aDirection, - ErrorResult& aRv) { - AssertIsOnOwningThread(); - - return OpenCursorInternal(/* aKeysOnly */ false, aCx, - JS::UndefinedHandleValue, aDirection, aRv); - } - - already_AddRefed OpenKeyCursor(JSContext* aCx, + MOZ_MUST_USE RefPtr OpenCursor(JSContext* aCx, JS::Handle aRange, IDBCursorDirection aDirection, - ErrorResult& aRv) { - AssertIsOnOwningThread(); + ErrorResult& aRv); - return OpenCursorInternal(/* aKeysOnly */ true, aCx, aRange, aDirection, - aRv); - } + MOZ_MUST_USE RefPtr OpenCursor(JSContext* aCx, + IDBCursorDirection aDirection, + ErrorResult& aRv); + + MOZ_MUST_USE RefPtr OpenKeyCursor(JSContext* aCx, + JS::Handle aRange, + IDBCursorDirection aDirection, + ErrorResult& aRv); void RefreshSpec(bool aMayDelete); @@ -296,31 +251,28 @@ class IDBObjectStore final : public nsISupports, public nsWrapperCache { nsTArray& aUpdateInfoArray, ErrorResult& aRv); - already_AddRefed AddOrPut(JSContext* aCx, - ValueWrapper& aValueWrapper, - JS::Handle aKey, - bool aOverwrite, bool aFromCursor, - ErrorResult& aRv); - - already_AddRefed DeleteInternal(JSContext* aCx, - JS::Handle aKey, - bool aFromCursor, - ErrorResult& aRv); - - already_AddRefed GetInternal(bool aKeyOnly, JSContext* aCx, + MOZ_MUST_USE RefPtr AddOrPut(JSContext* aCx, + ValueWrapper& aValueWrapper, JS::Handle aKey, + bool aOverwrite, bool aFromCursor, ErrorResult& aRv); - already_AddRefed GetAllInternal(bool aKeysOnly, JSContext* aCx, + MOZ_MUST_USE RefPtr DeleteInternal(JSContext* aCx, + JS::Handle aKey, + bool aFromCursor, + ErrorResult& aRv); + + MOZ_MUST_USE RefPtr GetInternal(bool aKeyOnly, JSContext* aCx, JS::Handle aKey, - const Optional& aLimit, ErrorResult& aRv); - already_AddRefed OpenCursorInternal(bool aKeysOnly, - JSContext* aCx, - JS::Handle aRange, - IDBCursorDirection aDirection, - ErrorResult& aRv); + MOZ_MUST_USE RefPtr GetAllInternal( + bool aKeysOnly, JSContext* aCx, JS::Handle aKey, + const Optional& aLimit, ErrorResult& aRv); + + MOZ_MUST_USE RefPtr OpenCursorInternal( + bool aKeysOnly, JSContext* aCx, JS::Handle aRange, + IDBCursorDirection aDirection, ErrorResult& aRv); }; } // namespace dom