Bug 1619592 - Refactor client type checks using new Client::IsValidType method; r=dom-workers-and-storage-reviewers,sg

This patch moves client type checks to the parameter validation phase. The checks are now done using new Client::IsValidType method.

Differential Revision: https://phabricator.services.mozilla.com/D66948

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jan Varga 2020-03-17 13:06:30 +00:00
Родитель 5cebbc21b1
Коммит c0757a0c2c
3 изменённых файлов: 42 добавлений и 4 удалений

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

@ -8590,6 +8590,13 @@ bool Quota::VerifyRequestParams(const RequestParams& aParams) const {
return false;
}
if (params.clientTypeIsExplicit()) {
if (NS_WARN_IF(!Client::IsValidType(params.clientType()))) {
ASSERT_UNLESS_FUZZING();
return false;
}
}
break;
}
@ -8610,6 +8617,13 @@ bool Quota::VerifyRequestParams(const RequestParams& aParams) const {
}
}
if (params.clientTypeIsExplicit()) {
if (NS_WARN_IF(!Client::IsValidType(params.clientType()))) {
ASSERT_UNLESS_FUZZING();
return false;
}
}
break;
}
@ -8630,6 +8644,13 @@ bool Quota::VerifyRequestParams(const RequestParams& aParams) const {
}
}
if (params.clientTypeIsExplicit()) {
if (NS_WARN_IF(!Client::IsValidType(params.clientType()))) {
ASSERT_UNLESS_FUZZING();
return false;
}
}
break;
}
@ -9533,8 +9554,6 @@ void InitStorageAndOriginOp::Init(Quota* aQuota) {
mPersistenceType.SetValue(mParams.persistenceType());
if (mParams.clientTypeIsExplicit()) {
MOZ_ASSERT(mParams.clientType() != Client::TYPE_MAX);
mClientType.SetValue(mParams.clientType());
}
@ -9866,8 +9885,6 @@ void ClearOriginOp::Init(Quota* aQuota) {
}
if (mParams.clientTypeIsExplicit()) {
MOZ_ASSERT(mParams.clientType() != Client::TYPE_MAX);
mClientType.SetValue(mParams.clientType());
}
}

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

@ -148,6 +148,25 @@ void BadType() { MOZ_CRASH("Bad client type value!"); }
} // namespace
// static
bool Client::IsValidType(Type aType) {
switch (aType) {
case Client::IDB:
case Client::DOMCACHE:
case Client::SDB:
return true;
case Client::LS:
if (CachedNextGenLocalStorageEnabled()) {
return true;
}
[[fallthrough]];
default:
return false;
}
}
// static
bool Client::TypeToText(Type aType, nsAString& aText, const fallible_t&) {
nsString text;

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

@ -54,6 +54,8 @@ class Client {
return LS;
}
static bool IsValidType(Type aType);
static bool TypeToText(Type aType, nsAString& aText, const fallible_t&);
static void TypeToText(Type aType, nsAString& aText);