Bug 1685279 - Change QuotaManager::ParseOrigin to return a Result<PrincipalInfo, nsresult>. r=dom-workers-and-storage-reviewers,janv

ParseOrigin is only used to construct a PrincipalInfo, so it makes sense to
return it directly.

Differential Revision: https://phabricator.services.mozilla.com/D100889
This commit is contained in:
Simon Giesecke 2021-01-15 10:53:02 +00:00
Родитель 9d4e29c97f
Коммит 1575347021
3 изменённых файлов: 22 добавлений и 37 удалений

Просмотреть файл

@ -8800,37 +8800,21 @@ QuotaClient::CreateArchivedOriginScope(const OriginScope& aOriginScope) {
AssertIsOnIOThread();
if (aOriginScope.IsOrigin()) {
nsCString spec;
OriginAttributes attrs;
LS_TRY(
OkIf(QuotaManager::ParseOrigin(aOriginScope.GetOrigin(), spec, &attrs)),
Err(NS_ERROR_FAILURE));
LS_TRY_INSPECT(const auto& principalInfo,
QuotaManager::ParseOrigin(aOriginScope.GetOrigin()));
ContentPrincipalInfo contentPrincipalInfo;
contentPrincipalInfo.attrs() = std::move(attrs);
contentPrincipalInfo.spec() = std::move(spec);
LS_TRY_INSPECT(
(const auto& [originAttrSuffix, originKey]),
GenerateOriginKey2(PrincipalInfo(std::move(contentPrincipalInfo))));
LS_TRY_INSPECT((const auto& [originAttrSuffix, originKey]),
GenerateOriginKey2(principalInfo));
return ArchivedOriginScope::CreateFromOrigin(originAttrSuffix, originKey);
}
if (aOriginScope.IsPrefix()) {
nsCString spec;
OriginAttributes attrs;
LS_TRY(OkIf(QuotaManager::ParseOrigin(aOriginScope.GetOriginNoSuffix(),
spec, &attrs)),
Err(NS_ERROR_FAILURE));
LS_TRY_INSPECT(const auto& principalInfo,
QuotaManager::ParseOrigin(aOriginScope.GetOriginNoSuffix()));
ContentPrincipalInfo contentPrincipalInfo;
contentPrincipalInfo.attrs() = std::move(attrs);
contentPrincipalInfo.spec() = std::move(spec);
LS_TRY_INSPECT(
(const auto& [originAttrSuffix, originKey]),
GenerateOriginKey2(PrincipalInfo(std::move(contentPrincipalInfo))));
LS_TRY_INSPECT((const auto& [originAttrSuffix, originKey]),
GenerateOriginKey2(principalInfo));
Unused << originAttrSuffix;

Просмотреть файл

@ -6960,23 +6960,25 @@ bool QuotaManager::AreOriginsEqualOnDisk(const nsACString& aOrigin1,
}
// static
bool QuotaManager::ParseOrigin(const nsACString& aOrigin, nsCString& aSpec,
OriginAttributes* aAttrs) {
MOZ_ASSERT(aAttrs);
Result<PrincipalInfo, nsresult> QuotaManager::ParseOrigin(
const nsACString& aOrigin) {
// An origin string either corresponds to a SystemPrincipalInfo or a
// ContentPrincipalInfo, see
// QuotaManager::GetOriginFromValidatedPrincipalInfo.
if (aOrigin.Equals(kChromeOrigin)) {
aSpec = kChromeOrigin;
return true;
return PrincipalInfo{SystemPrincipalInfo{}};
}
ContentPrincipalInfo contentPrincipalInfo;
nsCString originalSuffix;
OriginParser::ResultType result = OriginParser::ParseOrigin(
MakeSanitizedOriginCString(aOrigin), aSpec, aAttrs, originalSuffix);
if (NS_WARN_IF(result != OriginParser::ValidOrigin)) {
return false;
}
const OriginParser::ResultType result = OriginParser::ParseOrigin(
MakeSanitizedOriginCString(aOrigin), contentPrincipalInfo.spec(),
&contentPrincipalInfo.attrs(), originalSuffix);
QM_TRY(OkIf(result == OriginParser::ValidOrigin), Err(NS_ERROR_FAILURE));
return true;
return PrincipalInfo{std::move(contentPrincipalInfo)};
}
// static

Просмотреть файл

@ -469,8 +469,7 @@ class QuotaManager final : public BackgroundThreadObject {
static bool AreOriginsEqualOnDisk(const nsACString& aOrigin1,
const nsACString& aOrigin2);
static bool ParseOrigin(const nsACString& aOrigin, nsCString& aSpec,
OriginAttributes* aAttrs);
static Result<PrincipalInfo, nsresult> ParseOrigin(const nsACString& aOrigin);
static void InvalidateQuotaCache();