mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-25 20:01:50 +00:00
Bug 1731546 - Replace existing ToResultGet uses with MOZ_TO_RESULT_GET_TYPED; r=dom-storage-reviewers,jstutte,jari
Differential Revision: https://phabricator.services.mozilla.com/D125325
This commit is contained in:
parent
a2602f840c
commit
5a11502111
10
dom/cache/DBAction.cpp
vendored
10
dom/cache/DBAction.cpp
vendored
@ -163,11 +163,11 @@ Result<nsCOMPtr<mozIStorageConnection>, nsresult> OpenDBConnection(
|
||||
.SetQuery("cache=private"_ns + directoryLockIdClause)
|
||||
.Finalize(dbFileUrl)));
|
||||
|
||||
QM_TRY_INSPECT(
|
||||
const auto& storageService,
|
||||
ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService), MOZ_STORAGE_SERVICE_CONTRACTID),
|
||||
Err(NS_ERROR_UNEXPECTED));
|
||||
QM_TRY_INSPECT(const auto& storageService,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID),
|
||||
Err(NS_ERROR_UNEXPECTED));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
auto conn,
|
||||
|
6
dom/cache/DBSchema.cpp
vendored
6
dom/cache/DBSchema.cpp
vendored
@ -1034,7 +1034,8 @@ Result<EntryIds, nsresult> QueryCache(mozIStorageConnection& aConn,
|
||||
|
||||
QM_TRY(MOZ_TO_RESULT(state->BindInt64ByName("cache_id"_ns, aCacheId)));
|
||||
|
||||
QM_TRY_INSPECT(const auto& crypto, ToResultGet<nsCOMPtr<nsICryptoHash>>(
|
||||
QM_TRY_INSPECT(const auto& crypto,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsICryptoHash>,
|
||||
MOZ_SELECT_OVERLOAD(do_CreateInstance),
|
||||
NS_CRYPTO_HASH_CONTRACTID));
|
||||
|
||||
@ -1498,7 +1499,8 @@ nsresult InsertEntry(mozIStorageConnection& aConn, CacheId aCacheId,
|
||||
const nsID* aResponseBodyId) {
|
||||
MOZ_ASSERT(!NS_IsMainThread());
|
||||
|
||||
QM_TRY_INSPECT(const auto& crypto, ToResultGet<nsCOMPtr<nsICryptoHash>>(
|
||||
QM_TRY_INSPECT(const auto& crypto,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsICryptoHash>,
|
||||
MOZ_SELECT_OVERLOAD(do_CreateInstance),
|
||||
NS_CRYPTO_HASH_CONTRACTID));
|
||||
|
||||
|
7
dom/cache/FileUtils.cpp
vendored
7
dom/cache/FileUtils.cpp
vendored
@ -131,9 +131,10 @@ Result<std::pair<nsID, nsCOMPtr<nsISupports>>, nsresult> BodyStartWriteStream(
|
||||
MOZ_DIAGNOSTIC_ASSERT(aClosure);
|
||||
MOZ_DIAGNOSTIC_ASSERT(aCallback);
|
||||
|
||||
QM_TRY_INSPECT(const auto& idGen, ToResultGet<nsCOMPtr<nsIUUIDGenerator>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
"@mozilla.org/uuid-generator;1"));
|
||||
QM_TRY_INSPECT(const auto& idGen,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsIUUIDGenerator>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
"@mozilla.org/uuid-generator;1"));
|
||||
|
||||
nsID id;
|
||||
QM_TRY(MOZ_TO_RESULT(idGen->GenerateUUIDInPlace(&id)));
|
||||
|
@ -589,14 +589,16 @@ Result<nsCOMPtr<nsIFileURL>, nsresult> GetDatabaseFileURL(
|
||||
const Maybe<CipherKey>& aMaybeKey) {
|
||||
MOZ_ASSERT(aDirectoryLockId >= -1);
|
||||
|
||||
QM_TRY_INSPECT(const auto& protocolHandler,
|
||||
ToResultGet<nsCOMPtr<nsIProtocolHandler>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "file"));
|
||||
QM_TRY_INSPECT(
|
||||
const auto& protocolHandler,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsIProtocolHandler>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "file"));
|
||||
|
||||
QM_TRY_INSPECT(const auto& fileHandler,
|
||||
ToResultGet<nsCOMPtr<nsIFileProtocolHandler>>(
|
||||
MOZ_SELECT_OVERLOAD(do_QueryInterface), protocolHandler));
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsIFileProtocolHandler>,
|
||||
MOZ_SELECT_OVERLOAD(do_QueryInterface),
|
||||
protocolHandler));
|
||||
|
||||
QM_TRY_INSPECT(const auto& mutator, MOZ_TO_RESULT_INVOKE_TYPED(
|
||||
nsCOMPtr<nsIURIMutator>, fileHandler,
|
||||
@ -843,10 +845,10 @@ CreateStorageConnection(nsIFile& aDBFile, nsIFile& aFMDirectory,
|
||||
QM_TRY_INSPECT(const auto& dbFileUrl,
|
||||
GetDatabaseFileURL(aDBFile, aDirectoryLockId, aMaybeKey));
|
||||
|
||||
QM_TRY_INSPECT(
|
||||
const auto& storageService,
|
||||
ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService), MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& storageService,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
auto connection,
|
||||
@ -1101,10 +1103,10 @@ GetStorageConnection(nsIFile& aDatabaseFile, const int64_t aDirectoryLockId,
|
||||
const auto& dbFileUrl,
|
||||
GetDatabaseFileURL(aDatabaseFile, aDirectoryLockId, aMaybeKey));
|
||||
|
||||
QM_TRY_INSPECT(
|
||||
const auto& storageService,
|
||||
ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService), MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& storageService,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
nsCOMPtr<mozIStorageConnection> connection,
|
||||
|
@ -103,10 +103,10 @@ Result<StructuredCloneFileParent, nsresult> DeserializeStructuredCloneFile(
|
||||
const StructuredCloneFileBase::FileType type =
|
||||
ToStructuredCloneFileType(aText.First());
|
||||
|
||||
QM_TRY_INSPECT(
|
||||
const auto& id,
|
||||
ToResultGet<int32_t>(
|
||||
ToInteger, type == StructuredCloneFileBase::eBlob
|
||||
QM_TRY_INSPECT(const auto& id,
|
||||
MOZ_TO_RESULT_GET_TYPED(
|
||||
int32_t, ToInteger,
|
||||
type == StructuredCloneFileBase::eBlob
|
||||
? aText
|
||||
: static_cast<const nsAString&>(Substring(aText, 1))));
|
||||
|
||||
|
@ -468,10 +468,10 @@ Result<nsCOMPtr<mozIStorageConnection>, nsresult> CreateStorageConnection(
|
||||
// XXX Common logic should be refactored out of this method and
|
||||
// cache::DBAction::OpenDBConnection, and maybe other similar functions.
|
||||
|
||||
QM_TRY_INSPECT(
|
||||
const auto& storageService,
|
||||
ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService), MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& storageService,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
// XXX We can't use QM_OR_ELSE_WARN_IF because base-toolchains builds fail
|
||||
// with: error: use of 'tryResult28' before deduction of 'auto'
|
||||
@ -651,9 +651,10 @@ Result<nsCOMPtr<mozIStorageConnection>, nsresult> GetStorageConnection(
|
||||
|
||||
QM_TRY(OkIf(exists), Err(NS_ERROR_FAILURE));
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(auto connection,
|
||||
MOZ_TO_RESULT_INVOKE_TYPED(nsCOMPtr<mozIStorageConnection>, ss,
|
||||
@ -697,9 +698,10 @@ CreateArchiveStorageConnection(const nsAString& aStoragePath) {
|
||||
return nsCOMPtr<mozIStorageConnection>{};
|
||||
}
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
auto connection,
|
||||
@ -832,9 +834,10 @@ Result<nsCOMPtr<mozIStorageConnection>, nsresult> CreateShadowStorageConnection(
|
||||
|
||||
QM_TRY_INSPECT(const auto& shadowFile, GetShadowFile(aBasePath));
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
auto connection,
|
||||
@ -904,9 +907,10 @@ Result<nsCOMPtr<mozIStorageConnection>, nsresult> GetShadowStorageConnection(
|
||||
|
||||
QM_TRY(OkIf(exists), Err(NS_ERROR_FAILURE));
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_RETURN(MOZ_TO_RESULT_INVOKE_TYPED(nsCOMPtr<mozIStorageConnection>, ss,
|
||||
OpenUnsharedDatabase, shadowFile));
|
||||
|
@ -5612,9 +5612,10 @@ Result<Ok, nsresult> QuotaManager::CopyLocalStorageArchiveFromWebAppsStore(
|
||||
#endif
|
||||
|
||||
// Get the storage service first, we will need it at multiple places.
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
// Get the web apps store file.
|
||||
QM_TRY_INSPECT(const auto& webAppsStoreFile, QM_NewLocalFile(mBasePath));
|
||||
@ -5739,9 +5740,10 @@ QuotaManager::CreateLocalStorageArchiveConnection(
|
||||
// (similarly as wrong content of the file).
|
||||
QM_TRY(OkIf(!isDirectory), Err(NS_ERROR_FILE_CORRUPTED));
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
// This may return NS_ERROR_FILE_CORRUPTED too.
|
||||
QM_TRY_UNWRAP(auto connection, MOZ_TO_RESULT_INVOKE_TYPED(
|
||||
@ -6108,9 +6110,10 @@ Result<Ok, nsresult> QuotaManager::CreateEmptyLocalStorageArchive(
|
||||
// words, finishing what was started here).
|
||||
}
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
const auto connection,
|
||||
@ -6142,9 +6145,10 @@ nsresult QuotaManager::EnsureStorageIsInitialized() {
|
||||
|
||||
QM_TRY(MOZ_TO_RESULT(MaybeUpgradeToDefaultStorageDirectory(*storageFile)));
|
||||
|
||||
QM_TRY_INSPECT(const auto& ss, ToResultGet<nsCOMPtr<mozIStorageService>>(
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
QM_TRY_INSPECT(const auto& ss,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<mozIStorageService>,
|
||||
MOZ_SELECT_OVERLOAD(do_GetService),
|
||||
MOZ_STORAGE_SERVICE_CONTRACTID));
|
||||
|
||||
QM_TRY_UNWRAP(
|
||||
auto connection,
|
||||
@ -6350,8 +6354,9 @@ nsresult QuotaManager::EnsureTemporaryStorageIsInitialized() {
|
||||
|
||||
QM_TRY_INSPECT(
|
||||
const auto& storageDir,
|
||||
ToResultGet<nsCOMPtr<nsIFile>>(MOZ_SELECT_OVERLOAD(do_CreateInstance),
|
||||
NS_LOCAL_FILE_CONTRACTID));
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsIFile>,
|
||||
MOZ_SELECT_OVERLOAD(do_CreateInstance),
|
||||
NS_LOCAL_FILE_CONTRACTID));
|
||||
|
||||
QM_TRY(MOZ_TO_RESULT(storageDir->InitWithPath(GetStoragePath())));
|
||||
|
||||
|
@ -130,9 +130,10 @@ Result<nsCOMPtr<nsIFile>, nsresult> QM_NewLocalFile(const nsAString& aPath) {
|
||||
MOZ_ASSERT(gUseDOSDevicePathSyntax != -1);
|
||||
|
||||
if (gUseDOSDevicePathSyntax) {
|
||||
QM_TRY_INSPECT(const auto& winFile,
|
||||
ToResultGet<nsCOMPtr<nsILocalFileWin>>(
|
||||
MOZ_SELECT_OVERLOAD(do_QueryInterface), file));
|
||||
QM_TRY_INSPECT(
|
||||
const auto& winFile,
|
||||
MOZ_TO_RESULT_GET_TYPED(nsCOMPtr<nsILocalFileWin>,
|
||||
MOZ_SELECT_OVERLOAD(do_QueryInterface), file));
|
||||
|
||||
MOZ_ASSERT(winFile);
|
||||
winFile->SetUseDOSDevicePathSyntax(true);
|
||||
|
@ -1061,6 +1061,9 @@ Result<R, nsresult> ToResultGet(const Func& aFunc, Args&&... aArgs) {
|
||||
return res;
|
||||
}
|
||||
|
||||
#define MOZ_TO_RESULT_GET_TYPED(resultType, ...) \
|
||||
::mozilla::ToResultGet<MOZ_REMOVE_PAREN(resultType)>(__VA_ARGS__)
|
||||
|
||||
// Like Rust's collect with a step function, not a generic iterator/range.
|
||||
//
|
||||
// Cond must be a function type with a return type to Result<V, E>, where
|
||||
|
@ -1601,6 +1601,80 @@ TEST(QuotaCommon_ToResultGet, Lambda_WithInput_Err)
|
||||
EXPECT_EQ(res.unwrapErr(), NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
TEST(QuotaCommon_ToResultGet, Lambda_NoInput_Macro_Typed)
|
||||
{
|
||||
auto res = MOZ_TO_RESULT_GET_TYPED(int32_t, [](nsresult* aRv) -> int32_t {
|
||||
*aRv = NS_OK;
|
||||
return 42;
|
||||
});
|
||||
|
||||
static_assert(std::is_same_v<decltype(res), Result<int32_t, nsresult>>);
|
||||
|
||||
EXPECT_TRUE(res.isOk());
|
||||
EXPECT_EQ(res.unwrap(), 42);
|
||||
}
|
||||
|
||||
TEST(QuotaCommon_ToResultGet, Lambda_NoInput_Macro_Typed_Parens)
|
||||
{
|
||||
auto res =
|
||||
MOZ_TO_RESULT_GET_TYPED((std::pair<int32_t, int32_t>),
|
||||
[](nsresult* aRv) -> std::pair<int32_t, int32_t> {
|
||||
*aRv = NS_OK;
|
||||
return std::pair{42, 42};
|
||||
});
|
||||
|
||||
static_assert(std::is_same_v<decltype(res),
|
||||
Result<std::pair<int32_t, int32_t>, nsresult>>);
|
||||
|
||||
EXPECT_TRUE(res.isOk());
|
||||
EXPECT_EQ(res.unwrap(), (std::pair{42, 42}));
|
||||
}
|
||||
|
||||
TEST(QuotaCommon_ToResultGet, Lambda_NoInput_Err_Macro_Typed)
|
||||
{
|
||||
auto res = MOZ_TO_RESULT_GET_TYPED(int32_t, [](nsresult* aRv) -> int32_t {
|
||||
*aRv = NS_ERROR_FAILURE;
|
||||
return -1;
|
||||
});
|
||||
|
||||
static_assert(std::is_same_v<decltype(res), Result<int32_t, nsresult>>);
|
||||
|
||||
EXPECT_TRUE(res.isErr());
|
||||
EXPECT_EQ(res.unwrapErr(), NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
TEST(QuotaCommon_ToResultGet, Lambda_WithInput_Macro_Typed)
|
||||
{
|
||||
auto res = MOZ_TO_RESULT_GET_TYPED(
|
||||
int32_t,
|
||||
[](int32_t aValue, nsresult* aRv) -> int32_t {
|
||||
*aRv = NS_OK;
|
||||
return aValue * 2;
|
||||
},
|
||||
42);
|
||||
|
||||
static_assert(std::is_same_v<decltype(res), Result<int32_t, nsresult>>);
|
||||
|
||||
EXPECT_TRUE(res.isOk());
|
||||
EXPECT_EQ(res.unwrap(), 84);
|
||||
}
|
||||
|
||||
TEST(QuotaCommon_ToResultGet, Lambda_WithInput_Err_Macro_Typed)
|
||||
{
|
||||
auto res = MOZ_TO_RESULT_GET_TYPED(
|
||||
int32_t,
|
||||
[](int32_t aValue, nsresult* aRv) -> int32_t {
|
||||
*aRv = NS_ERROR_FAILURE;
|
||||
return -1;
|
||||
},
|
||||
42);
|
||||
|
||||
static_assert(std::is_same_v<decltype(res), Result<int32_t, nsresult>>);
|
||||
|
||||
EXPECT_TRUE(res.isErr());
|
||||
EXPECT_EQ(res.unwrapErr(), NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
// BEGIN COPY FROM mfbt/tests/TestResult.cpp
|
||||
struct Failed {};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user