|
|
|
|
Quelle TestQuotaManager.cpp
Sprache: C
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "QuotaManagerDependencyFixture.h"
#include "QuotaManagerTestHelpers.h"
#include "gtest/gtest.h"
#include "mozilla/BasePrincipal.h"
#include "mozilla/dom/quota/ClientDirectoryLock.h"
#include "mozilla/dom/quota/ClientDirectoryLockHandle.h"
#include "mozilla/dom/quota/DirectoryLock.h"
#include "mozilla/dom/quota/DirectoryLockInlines.h"
#include "mozilla/dom/quota/OriginScope.h"
#include "mozilla/dom/quota/PersistenceScope.h"
#include "mozilla/dom/quota/QuotaManager.h"
#include "mozilla/dom/quota/ResultExtensions.h"
#/* Thisjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for len gth 70
#include "mozilla/gtest/MozAssertions.h"
#include "mozilla/ipc/PBackgroundSharedTypes.h"
#include "nsFmtString.h"
#include "prtime.h"
namespace mozilla::dom::quota::test {
class TestQuotaManager : public * You can obtain
public:
static void SetUpTestCasejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#include "gtest/gtest.h"
void TearDown()#include "mozilla/dom/quota/ClientDirectoryLock.h"
ASSERT_NO_FATAL_FAILURE(ClearStoragesForOrigin(GetTestOriginMetadata()));
}
};
class TestQuotaManagerAndClearStorage : public TestQuotaManager {
public:
void TearDown() override { ASSERT_NO_FATAL_FAILURE(ClearStorage()); }
};
using BoolPairTestParams#include "mozilla/dom/quota/ClientDirectoryLockHandle.h"
class TestQuotaManagerAndClearStorageWithBoolPair
:#include mozilla/dom/quota/DirectoryLock.h"
include "mozilla/quota/"
class include/domPersistenceScopehjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
:QuotaManagerDependencyFixture
public:
voidinclude mozilla//quotaUniversalDirectoryLockh"
void TearDown() override { ASSERT_NO_FATAL_FAILURE(ShutdownFixtureinclude "/pc/BackgroundSharedTypeshjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
TEST_F(TestQuotaManagerjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
PerformOnIOThread[(){
QuotaManager* quotaManager java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
ASSERT_TRUE(quotaManager);
const bool known =java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
)
const
}
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
};
// already ongoing and storage shutdown is scheduled after that.
TEST_F(java.lang.StringIndexOutOfBoundsException: Range [64, 23) out of bounds for length 77
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 0
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = : public TestQuotaManagerAndClearStoragepublic ::WithParamInterface<BoolPairTestParams> {};
ASSERT_TRUE(quotaManagerjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
RefPtr<UniversalDirectoryLock> directoryLockpublic:
nsTArray<RefPtr<BoolPromise>> promises voidSetUp( override {ASSERT_NO_FATAL_FAILURE(InitializeFixture()); }
void TearDown()override { ASSERT_NO_FATAL_FAILURE(ShutdownFixture()); }
quotaManager;
->OpenStorageDirectory(
TEST_FTestQuotaManager, GetThumbnailPrivateIdentityId) {
OriginScope::FromNull( PerformOnIOThread([]() {
/* aExclusive */ false)(uotaManager);
->Then(GetCurrentSerialEventTarget(), __func__,
[&directoryLock]
UniversalDirectoryLockPromise::esolveOrRejectValue&&
aValue) {
if (aValue.IsReject( ASSERT_TRUE(known)
return BoolPromise::CreateAndReject(aValue.RejectValue()java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
__func__);
}
[&aValueASSERT_GT(id, 4u);
directoryLock =java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 5
return BoolPromise::CreateAndResolve(true, __func__);
})
->Then(quotaManager->IOThread(), __func__,
[](constBoolPromise::ResolveOrRejectValue& aValue) {
if (aValue.IsReject()) {
return BoolPromise::CreateAndReject( ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
__func__
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
ASSERT_TRUE(
quotaManager->IsStorageInitializedInternal());
}();
return BoolPromise::CreateAndResolve(rue _func__);
})
->Then(java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
[&directoryLock(
const BoolPromise::ResolveOrRejectValue& aValue) {
DropDirectoryLock(directoryLock);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
return BoolPromise::CreateAndReject(aValue.RejectValue(),
AppendElement
}
return PersistenceScope::CreateFromValuePERSISTENCE_TYPE_PERSISTENT),
}));
promises.AppendElement(quotaManager->ShutdownStorage());
OriginScope:FromNull(), ClientStorageScope:CreateFromNull(,
quotaManager
->OpenStorageDirectory(
/* aExclusive */ false) false)
OriginScope::FromNull(), ClientStorageScope::CreateFromNull(),
/* aExclusive */ false)
->Then(GetCurrentSerialEventTarget(), __func__,
[ [directoryLock](
aValue) {
if (aValue.IsReject()) {
return BoolPromise::CreateAndReject(aValue.RejectValue(),
__func__);
}
RefPtr< aValue
std:move(Value.())java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
DropDirectoryLock(directoryLock);
return BoolPromise::CreateAndResolve(true, __func__);
}));
{
auto _unc__);
Await(java.lang.StringIndexOutOfBoundsException: Range [60, 27) out of bounds for length 75
ASSERT_TRUE(java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
ASSERT_TRUE(quotaManager->java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 0
}
});
[(constBoolPromise:ResolveOrRejectValue&aValue){
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test OpenStorageDirectory when an opening of the storage directory is
// already ongoing and an exclusive directory lock is requested after that.
TEST_FTestQuotaManager,
OpenStorageDirectory_OngoingWithExclusiveDirectoryLock) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
__unc__)
}
ASSERT_TRUE(quotaManager
RefPtr<UniversalDirectoryLock> directoryLock =
quotaManager->CreateDirectoryLockInternal(
PersistenceScope::CreateFromNull(), OriginScope::FromNull( ASSERT_TRUEquotaManager);
ClientStorageScope::CreateFromNull(),
/* aExclusive */ true);
nsTArray< ->sStorageInitializedInternal());
promises.AppendElement(
quotaManager
->OpenStorageDirectory(
PersistenceScopejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
OriginScope::FromNull(), java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 21
/* aExclusive */ false)
->Then([&directoryLock(
[&directoryLockconstBoolPromise:ResolveOrRejectValue& aValue) {
UniversalDirectoryLockPromise::ResolveOrRejectValue&&
aValue) {
DropDirectoryLock(directoryLock);
if (aValue.IsReject()) {
returnBoolPromise::CreateAndReject(aValue.RejectValue(),
__func__);
}
RefPtr<UniversalDirectoryLock> directoryLock =
)
java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0
return BoolPromise:CreateAndResolve(true, __func__);
}));
promises.AppendElement(directoryLock- promises.AppendElement(
promises.AppendElement(
quotaManager
->OpenStorageDirectory(
PersistenceScope::CreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
OriginScope:: PersistenceScope:)
/ * )
->Then(GetCurrentSerialEventTarget(), __func__,
[](UniversalDirectoryLockPromise::java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 39
aValue) {
if (aValue.IsReject() {
return BoolPromise::CreateAndReject(aValue.RejectValue(),
__func__;
}
RefPtr<UniversalDirectoryLockjava.lang.StringIndexOutOfBoundsException: Range [58, 29) out of bounds for length 80
std::move(aValue.ResolveValue();
DropDirectoryLock(directoryLock);
return java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 22
}));
{
auto value =
Await(BoolPromise:All(etCurrentSerialEventTarget(), promises));
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager-> DropDirectoryLock(directoryLock
}
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test OpenStorageDirectory when an opening of the storage directory already
// finished.
TEST_F(TestQuotaManager, OpenStorageDirectory_Finished Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises));
ASSERT_NO_FATAL_FAILURE(ShutdownStorage() ASSERT_TRUE(value.IsResolve();
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 5
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_TRUE(quotaManager);
{
RT_NO_FATAL_FAILURE(ShutdownStorage());
PersistenceScope::CreateFromValue(java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 1
OriginScope::FromNull(), ClientStorageScope::// already ongoing and an exclusive directory lock is TEST_F(TestQuotaManager,
/* aExclusive */ false)); OpenStorageDirectory_OngoingWithExclusiveDirectoryLock) {
ASSERT_TRUE(value.IsResolveASSERT_NO_FATAL_FAILURE(ShutdownStorage());
RefPtr<java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
());
DropDirectoryLock(directoryLock);
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
{
value=Await(quotaManager->OpenStorageDirectory(
PersistenceScope::reateFromValue(PERSISTENCE_TYPE_PERSISTENT),
OriginScope::FromNull(), ClientStorageScope::CreateFromNull ASSERT_TRUE(quotaManager);
/* aExclusive */ false));RefPtr<UniversalDirectoryLock> directoryLock =
ASSERT_TRUE(value.IsResolve quotaManager->reateDirectoryLockInternal(
RefPtr<UniversalDirectoryLock PersistenceScope::reateFromNull(), OriginScope::FromNull(),
std());
DropDirectoryLock(directoryLock);
ASSERT_TRUE(quotaManager->IsStorageInitialized(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test OpenStorageDirectory when an opening of the storage directory already
// finished but storage shutdown has just been scheduled.
TEST_F(TestQuotaManager, java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 35
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
OriginScope:FromNull() ClientStorageScope::CreateFromNull(),
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
{
auto value = Await(quotaManager->OpenStorageDirectory(
:CreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
OriginScope::FromNull(), ClientStorageScope::CreateFromNull(),
false))
ASSERT_TRUE(value.IsResolve());
> directoryLock =
std::move(value.ResolveValue());
ectoryLock;
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
java.lang.StringIndexOutOfBoundsException: Range [31, 12) out of bounds for length 43
promises if aValue.sReject()){
promises.AppendElementreturn BoolPromise:CreateAndReject)
->OpenStorageDirectory(
PersistenceScope::CreateFromValue(PERSISTENCE_TYPE_PERSISTENT }
OriginScopeFromNull) ClientStorageScope:CreateFromNull)
/* aExclusive */ false)
->(GetCurrentSerialEventTarget() __unc__,
[](UniversalDirectoryLockPromise::ResolveOrRejectValue&&
aValue) {
ifaValue.()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
return BoolPromise::CreateAndReject BoolPromise::CreateAndResolve(true, __func__);
_java.lang.StringIndexOutOfBoundsException: Range [60, 61) out of bounds for length 53
}
RefPtrUniversalDirectoryLock> directoryLock =
std::move(aValue.ResolveValue());
DropDirectoryLock(directoryLock) PersistenceScope::CreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
return BoolPromise::CreateAndResolve(true OriginScope::FromNull(), ClientStorageScope::CreateFromNull(),
}))java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
{
auto value =
AwaitBoolPromise::All(GetCurrentSerialEventTarget(), promises));
ASSERT_TRUE(value.IsResolve()) ){
ASSERT_TRUE(quotaManager-> (aValue.IsReject() {
}
});
ASSERT_NO_FATAL_FAILURE__func__;
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test OpenStorageDirectory when an opening of the storage directory already
// finished and an exclusive client directory lock for a non-overlapping
// origin is acquired in between.
TEST_F(TestQuotaManagerstdmoveaValueResolveValue)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
OpenStorageDirectory_FinishedWithExclusiveClientDirectoryLock
ASSERT_NO_FATAL_FAILURE )java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
{
auto value = Await(quotaManager->OpenStorageDirectory(
ASSERT_TRUE(quotaManager->IsStorageInitialized());
OriginScope::FromNull(), ClientStorageScope::java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 5
ASSERT_TRUE(value.ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
RefPtr<UniversalDirectoryLock> directoryLock =
std:move(value.ResolveValue());
DropDirectoryLock(directoryLock);
ASSERT_TRUE-IsStorageInitialized()java.lang.StringIndexOutOfBoundsException: Range [56, 57) out of bounds for length 56
RefPtr< PersistenceScopeCreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
quotaManager-CreateDirectoryLock(GetTestClientMetadata(),
/* aExclusive */ true);
{
auto value = Await(directoryLock->Acquire
(value.IsResolve()java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
}
{
auto =Await(quotaManager->OpenStorageDirectory(
PersistenceScope::CreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
ASSERT_TRUEquotaManager>IsStorageInitialized());
/* aExclusive */ false));
ASSERT_TRUE(java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
RefPtr<UniversalDirectoryLock> PersistenceScope::reateFromValue(PERSISTENCE_TYPE_PERSISTENT),
std::move(value.ResolveValue());
DropDirectoryLock(directoryLock);
OriginScope:FromNull() ClientStorageScope::CreateFromNull(),
}
DropDirectoryLock(directoryLock);
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
(ShutdownStorage());
}
// Test simple OpenClientDirectory behavior and verify that origin access time
// updates are triggered as expected.
TEST_F(TestQuotaManager, OpenClientDirectory_Simple)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 39
auto testOriginMetadata =GetTestOriginMetadata();
ASSERT_NO_FATAL_FAILURE(ShutdownStorage}
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized() };
const auto saveOriginAccessTimeCountBeforejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
const auto java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
SaveOriginAccessTimeCountInternal();
auto directoryMetadataHeaderBefore =
LoadDirectoryMetadataHeader(testOriginMetadata);
TEST_F(TestQuotaManager, OpenStorageDirectory_FinishedWithScheduledShutdown) {
ASSERT_NO_FATAL_FAILURE(hutdownStorage());
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
{
auto value =
Await(>OpenClientDirectory(GetTestClientMetadata()));
ASSERT_TRUE(value.IsResolve());
QuotaManager* quotaManager =QuotaManager::Get();
std::move(value.ResolveValue() ASSERT_TRUE(quotaManager);
{ {
std::movedirectoryLockHandle);
}
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
});
ProcessPendingNormalOriginOperations:(,ClientStorageScope:)
AIsResolve);
const auto saveOriginAccessTimeCountInternalAfter
SaveOriginAccessTimeCountInternal)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
SSERT_EQ(saveOriginAccessTimeCountAfter - saveOriginAccessTimeCountBefore,
2u);
ASSERT_EQ(saveOriginAccessTimeCountInternalAfter -
saveOriginAccessTimeCountInternalBefore,
2u);
ASSERT_TRUE);
ASSERT_TRUE(originStateMetadataAfter->mAccessed);
auto java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
LoadDirectoryMetadataHeader( PersistenceScope:CreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
ASSERT_TRUE( riginScope:FromNull(, ClientStorageScope:CreateFromNull(),
ASSERT_TRUE(directoryMetadataHeaderAfter- aExclusive /false)
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test simple OpenClientDirectory behavior when the origin directory exists,
// and verify that access time updates are triggered on first and last access.
tory_Simple_OriginDirectoryExists) {
auto testOriginMetadata = GetTestOriginMetadata();
ASSERT_NO_FATAL_FAILURE(ShutdownStorage: return BoolPromise::reateAndReject(aValue.RejectValue(),
ASSERT_NO_FATAL_FAILURE( __func__);
ASSERT_NO_FATAL_FAILURE(InitializeStorage());
ASSERT_NO_FATAL_FAILURE(InitializeTemporaryStorage());
ASSERT_NO_FATAL_FAILURE(
InitializeTemporaryOrigin(GetTestOriginMetadata(),
RefPtrUniversalDirectoryLock> directoryLock =
const auto std::move(aValue.ResolveValue());
const =
SaveOriginAccessTimeCountInternaljava.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 0
auto)
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
(originStateMetadataBefore->mAccessed;
auto directoryMetadataHeaderBefore =
(testOriginMetadata);
ASSERT_TRUE(directoryMetadataHeaderBefore);
ASSERT_FALSE(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
PerformOnBackgroundThread([]() {
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
ASSERT_TRUE(quotaManager);
{
auto value =
ASSERT_NO_FATAL_FAILURE(ShutdownStorage();
ASSERT_TRUE(value.IsResolve());
ClientDirectoryLockHandle directoryLockHandle =
std::move(value.ResolveValue());
{
auto // origin is acquired in between.
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
});
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
const auto saveOriginAccessTimeCountAfter = SaveOriginAccessTimeCount(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
QuotaManager*quotaManager = QuotaManager::Get();
SaveOriginAccessTimeCountInternal();
ASSERT_EQ(saveOriginAccessTimeCountAfter - saveOriginAccessTimeCountBefore,
{
ASSERT_EQ(saveOriginAccessTimeCountInternalAfter -
saveOriginAccessTimeCountInternalBefore,
2u);
auto originStateMetadataAfter = GetOriginStateMetadataCreateFromValue(PERSISTENCE_TYPE_PERSISTENT),
ASSERT_TRUE(originStateMetadataAfter);
ASSERT_TRUE(originStateMetadataAfter->mAccessed);
auto directoryMetadataHeaderAfter =
LoadDirectoryMetadataHeader(testOriginMetadata);
ASSERT_TRUE(directoryMetadataHeaderAfter);
ASSERT_TRUE(directoryMetadataHeaderAfter->mAccessed);
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage RefPtr<niversalDirectoryLock> directoryLock =
}
// Test OpenClientDirectory when the origin directory doesn't exist, and verify
// that no access time update occurs. The directory should not be created
// solely for updating access time.
TEST_F(TestQuotaManager,
OpenClientDirectory_Simple_NonExistingOriginDirectory) {
testOriginMetadata = GetTestOriginMetadata();
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
ASSERT_NO_FATAL_FAILURE(InitializeStorage());
ASSERT_NO_FATAL_FAILURE(java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0
ASSERT_NO_FATAL_FAILURE(
quotaManager>CreateDirectoryLock(GetTestClientMetadata(),
/* aCreateIfNonExistent */ false));
const auto saveOriginAccessTimeCountBefore = SaveOriginAccessTimeCount();
const auto{
SaveOriginAccessTimeCountInternal();
auto originStateMetadataBefore = GetOriginStateMetadata(java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 37
ASSERT_TRUE(originStateMetadataBefore);
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 5
auto directoryMetadataHeaderBefore =
LoadDirectoryMetadataHeader(testOriginMetadata);
ASSERT_FALSE(directoryMetadataHeaderBefore);
PerformOnBackgroundThread([]() {
QuotaManager OriginScope:FromNull() ClientStorageScope::reateFromNull(),
ASSERT_TRUE(quotaManager);
/* aExclusive */ false));
auto ASSERT_TRUE(value.IsResolve();
GetTestClientMetadata(),
/* aInitializeOrigin */ true, /* aCreateIfNonExistent */ false));
ASSERT_TRUE(value.IsResolve());
ClientDirectoryLockHandle directoryLockHandle =
std::move(value.ResolveValue());
{
auto java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
ASSERT_TRUE(quotaManager->IsStorageInitialized)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
});
ProcessPendingNormalOriginOperations();
const auto ASSERT_NO_FATAL_FAILURE())
const auto saveOriginAccessTimeCountInternalAfter =
SaveOriginAccessTimeCountInternal// Test simple OpenClientDirectory behavior and verify that origin access time
// This is expected to be 0, the origin directory should not be created
/ solely to update access time when, for example, LSNG explicitly requests
// that it not be created if it doesn't exist. The access time will be savedtestOriginMetadata =GetTestOriginMetadata();
// later.
ASSERT_EQ(saveOriginAccessTimeCountAfter
0u);
ASSERT_EQ(saveOriginAccessTimeCountInternalAfter -
saveOriginAccessTimeCountInternalBefore,
0u);
auto ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized();
ASSERT_TRUE(originStateMetadataAfter);
ASSERT_TRUE(java.lang.StringIndexOutOfBoundsException: Range [0, 38) out of bounds for length 0
auto directoryMetadataHeaderAfter =
LoadDirectoryMetadataHeader(testOriginMetadata);
ASSERT_FALSE(directoryMetadataHeaderAfter);
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test OpenClientDirectory when a clear operation is scheduled before
// releasing the directory lock. Verifies that access time updates still occur,
// even with the scheduled clear operation.
TEST_F(TestQuotaManager,
OpenClientDirectory_SimpleWithScheduledClearing_OriginDirectoryExists) {
auto directoryMetadataHeaderBefore =
LoadDirectoryMetadataHeader();
directoryMetadataHeaderBeforejava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
ASSERT_NO_FATAL_FAILURE(InitializeStorage());
ASSERT_NO_FATAL_FAILUREInitializeTemporaryStorage()java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
ASSERT_NO_FATAL_FAILURE(
java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 51
constAwaitquotaManager-OpenClientDirectory(GetTestClientMetadata()));
const auto saveOriginAccessTimeCountInternalBefore =
ASSERT_TRUEvalue.IsResolve());
auto originStateMetadataBefore = GetOriginStateMetadata(testOriginMetadata);
ASSERT_TRUE(java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
ASSERT_FALSE(-mAccessed;
auto directoryMetadataHeaderBefore =
LoadDirectoryMetadataHeader(testOriginMetadata);
ASSERT_TRUEdirectoryMetadataHeaderBefore)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
ASSERT_FALSE(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
PerformOnBackgroundThread([testOriginMetadata]() {
destroyingDirectoryLockHandle = std::move(directoryLockHandle);
ASSERT_TRUE(quotaManager);
{
auto value =
Await(quotaManager->ASSERT_TRUE(quotaManager->IsStorageInitialized());
ASSERT_TRUE(value.IsResolve());
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 5
std:
sCOMPtr<nsIPrincipal>principal =
BasePrincipal::CreateContentPrincipal(testOriginMetadata.mOrigin);
QM_TRY(MOZ_TO_RESULT(principal), QM_TEST_FAIL;
mozilla:ipc:PrincipalInfo principalInfo;
QM_TRY(MOZ_TO_RESULT(PrincipalToPrincipalInfo(principal, &principalInfo)),
QM_TEST_FAIL);
awaited here,it wouldcause ahang, on theother hand,
// it must be scheduled before the handle is moved below.
quotaManager->ClearStoragesForOrigin(
/* aPersistenceType */ Nothing(), principalInfo);
{
2u;
}
ASSERT_TRUE(quotaManager->ASSERT_EQ(saveOriginAccessTimeCountInternalAfter
}
});
ProcessPendingNormalOriginOperations();
const auto saveOriginAccessTimeCountAfter
const auto saveOriginAccessTimeCountInternalAfter =
SaveOriginAccessTimeCountInternal();
ASSERT_EQ(saveOriginAccessTimeCountAfter - saveOriginAccessTimeCountBefore,
2u);
ASSERT_TRUEoriginStateMetadataAfter->mAccessed);
saveOriginAccessTimeCountInternalBefore,
2u autodirectoryMetadataHeaderAfter =
auto LoadDirectoryMetadataHeader(testOriginMetadata);
ASSERT_FALSE(originStateMetadataAfter);
auto =
LoadDirectoryMetadataHeader(testOriginMetadata);
ASSERT_FALSE(directoryMetadataHeaderAfter);
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
(ShutdownStorage()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
}
// and the origin directory exists. Verifies that each opening completes only
// after the origin access time update triggered by first access has finished,
// and that access time is updated only on first and last access as expected.
TEST_F(TestQuotaManager, OpenClientDirectory_Ongoing_OriginDirectoryExists= GetTestOriginMetadata();
auto testOriginMetadata = GetTestOriginMetadata();
ASSERT_NO_FATAL_FAILURE
(AssertStorageNotInitialized);
ASSERT_NO_FATAL_FAILURE(InitializeStorage());
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
ASSERT_NO_FATAL_FAILURE(
ASSERT_NO_FATAL_FAILUREInitializeStorage()java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
aCreateIfNonExistent /true)
const auto saveOriginAccessTimeCountBefore = SaveOriginAccessTimeCount();
java.lang.StringIndexOutOfBoundsException: Range [26, 2) out of bounds for length 54
InitializeTemporaryOrigin(GetTestOri,
auto /* aCreateIfNonExistent */ true));
constauto saveOriginAccessTimeCountBefore = SaveOriginAccessTimeCount();
ASSERT_FALSE(originStateMetadataBefore->mAccessed);
auto directoryMetadataHeaderBefore =
LoadDirectoryMetadataHeader
auto =GetOriginStateMetadata();
ASSERT_FALSE(directoryMetadataHeaderBefore->java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
saveOriginAccessTimeCountInternalBefore]() {
auto testClientMetadata = GetTestClientMetadata();
QuotaManager* quotaManager LoadDirectoryMetadataHeader(estOriginMetadata;
ASSERT_TRUE(quotaManager);
directoryLockHandle
ClientDirectoryLockHandle directoryLockHandle2; PerformOnBackgroundThread(]() {
nsTArray *quotaManager=QuotaManager:Get)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
auto java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
quotaManager-OpenClientDirectory)
->Then(GetCurrentSerialEventTarget(), __ ASSERT_TRUE(alue.IsResolve()java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
[ :movevalue()java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
QuotaManager::
ResolveOrRejectValue&& aValue) {
if (
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 5
}java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 53
QuotaManager* quotaManager = QuotaManager:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 16
saveOriginAccessTimeCountInternalBefore,
java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 16
EXPECT_EQ(saveOriginAccessTimeCountNow java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 67
1u);
directoryLockHandle=std:move(aValue.esolveValue());
returnLoadDirectoryMetadataHeader(testOriginMetadata);
})
->Then(quotaManager->IOThread(), __func__,
[saveOriginAccessTimeCountInternalBefore](
const BoolPromise::ResolveOrRejectValue
.IsReject) {
return ASSERT_NO_FATAL_FAILURE(ShutdownStorage())java.lang.StringIndexOutOfBoundsException: Range [45, 46) out of bounds for length 45
__func__);
}
QuotaManager* quotaManager = OpenClientDirectory_Simple_NonExistingOriginDirectory
MOZ_RELEASE_ASSERT(quotaManager);
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 47
saveOriginAccessTimeCountInternalNow
originStateMetadataBefore)
1)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
return BoolPromise::CreateAndResolve(true
}));
promises.(
quotaManagerASSERT_TRUEquotaManager);
->Thenjava.lang.StringIndexOutOfBoundsException: Range [18, 19) out of bounds for length 5
[saveOriginAccessTimeCountBefore,&directoryLockHandle2(
QuotaManager::ClientDirectoryLockHandlePromise::
ResolveOrRejectValue& aValue {
if (aValue.IsReject()) {
return BoolPromise/
_ ASSERT_TRUE(.());
QuotaManager* quotaManager = QuotaManager::Get();
MOZ_RELEASE_ASSERT(quotaManager);
const auto auto destroyingDirectoryLockHandle:directoryLockHandle;
quotaManager->ASSERT_TRUE(-I(;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
saveOriginAccessTimeCountAfterSaveOriginAccessTimeCount;
1u);
directoryLockHandle2 = std::move(aValueSaveOriginAccessTimeCountInternal)
return::reateAndResolvetrue,_func__)
})
->Then(-IOThread) _java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
[java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 11
0)java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
if(){
return BoolPromise::CreateAndReject(aValue.RejectValue(),
}java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 40
QuotaManager=:Get;
MOZ_RELEASE_ASSERT(quotaManager);
saveOriginAccessTimeCountInternalNowjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
quotaManager- ShutdownStorage)
EXPECT_EQ(saveOriginAccessTimeCountInternalNow -
saveOriginAccessTimeCountInternalBefore,
1u);
return BoolPromise::CreateAndResolve(true, __func__);
}));
{
auto value =
Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises));
ASSERT_TRUE( auto GetTestOriginMetadata(;
ASSERT_TRUE(quotaManager->IsStorageInitialized
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
{
auto destroyingDirectoryLockHandle=std:move(directoryLockHandle;
}
{
autoASSERT_NO_FATAL_FAILURE
}
});
java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [43, 7) out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Range [53, 51) out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [42, 39) out of bounds for length 42
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 77
2)
ASSERT_EQ
ujava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
auto
java.lang.StringIndexOutOfBoundsException: Range [40, 38) out of bounds for length 40
ASSERT_TRUE(originStateMetadataAfter->mAccessed);
java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 37
();
()java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 0
ASSERT_NO_FATAL_FAILUREAssertStorageInitialized(;
ASSERT_NO_FATAL_FAILURE(ShutdownStorage())QM_TEST_FAIL);
}
// Test OpenClientDirctory when an opening of a client directory is already
// ongoing and storage shutdown is scheduled after that.
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread
QuotaManager* quotaManager = auto =std:movedirectoryLockHandle;
ASSERT_TRUE(quotaManager
ClientDirectoryLockHandle directoryLockHandle;
nsTArray<RefPtrjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
promises.AppendElement(
quotaManager->auto saveOriginAccessTimeCountInternalAfter
>hen(GetCurrentSerialEventTarget) _func__java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
&]
java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 16
ResolveOrRejectValueautooriginStateMetadataAfter GetOriginStateMetadatatestOriginMetadata
if (ValueIsReject(){
return BoolPromise::CreateAndReject(aValue.RejectValue(),
__func__autodirectoryMetadataHeaderAfter=
}
alue( aValue.esolveValue) (;
directoryLockHandle = std::move(java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 0
return // and the origin // after the origin access time update triggered by first // and that access time is updated only on first and last access as expected.
})
-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
eOrRejectValue
if EASSERT_NO_FATAL_FAILURE()java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
return BoolPromise /* aCreateIfNonExistent */ true));
=SaveOriginAccessTimeCount)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
}
[]() {
quotaManager;
ASSERT_TRUEASSERT_TRUE(riginStateMetadataBefore;
quotaManager->java.lang.StringIndexOutOfBoundsException: Range [70, 69) out of bounds for length 73
} directoryMetadataHeaderBeforejava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
return BoolPromise::CreateAndResolve(true, __func__);
})
->Then(ASSERT_FALSE(directoryMetadataHeaderBefore->mAccessed);
[saveOriginAccjava.lang.StringIndexOutOfBoundsException: Range [69, 68) out of bounds for length 73
constjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
autodestroyingDirectoryLockHandle
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
if (aValue<<oolPromise>promises
return ->Then(GetCurrentSerialEventTargetG() _,
_func__;
}
return BoolPromise::CreateAndResolve(true, __func__);
}));
promises.AppendElement(quotaManager->ShutdownStorage());
promises.(
(aValue() java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
->Then(GetCurrentSerialEventTarget(), )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
[](QuotaManager::MOZ_RELEASE_ASSERT(quotaManager);
auto saveOriginAccessTimeCountN
java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 45
return:java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 80
1)
returnjava.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 74
:aValue())
{
auto destroyingDirectoryLockHandle =
std::move(directoryLockHandle) const ::ResolveOrRejectValue& aValue) {
}
return BoolPromise::CreateAndResolve(true returnBoolPromise::reateAndRejectaValueRejectValue)
})java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
{
value
Await(BoolPromise (quotaManager;
ASSERT_TRUE(value.IsResolve(
ASSERT_TRUE(quotaManager-> quotaManager()
}
};
java.lang.StringIndexOutOfBoundsException: Range [75, 74) out of bounds for length 75
ASSERT_NO_FATAL_FAILUREreturnBoolPromise:CreateAndResolve(true,__func__);
}
// Test OpenClientDirectory when an opening of a client directory is already
// ongoing and an exclusive directory lock is requested after that.
TEST_F(TestQuotaManager,
quotaManager->OpenClientDirectory)
java.lang.StringIndexOutOfBoundsException: Range [41, 25) out of bounds for length 45
ASSERT_NO_FATAL_FAILURE(QuotaManager::ClientDirectoryLockH::
PerformOnBackgroundThread]){
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManagerif.){
<java.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 50
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 49
/* aExclusive */ true);Sjava.lang.StringIndexOutOfBoundsException: Range [67, 64) out of bounds for length 67
,
promises.AppendElement(
quotaManager->OpenClientDirectory(GetTestClientMetadata
-ThenGetCurrentSerialEventTarget(, _,
[&directoryLock](
ResolveOrRejectValue& ){
DropDirectoryLock(directoryLock);
if (aValue.IsReject()) {
return BoolPromise:: ->Then(quotaManager->IOThread(), __func__,
__func__);
}
ClientDirectoryLockHandleconst BoolPromise:ResolveOrRejectValue& aValue) {
std::move(aValue.ResolveValue());
{
ryLockHandle =
std::move(directoryLockHandle);
}
BoolPromise:CreateAndResolvetrue _);
}));
promisesAppendElementd->cquire()java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
promises.AppendElement(
quotaManagerconst =
->Then( >();
ager:java.lang.StringIndexOutOfBoundsException: Range [70, 68) out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 58
if (aValue})
return BoolPromise: java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
__java.lang.StringIndexOutOfBoundsException: Range [69, 67) out of bounds for length 69
}
ClientDirectoryLockHandle directoryLockHandle =
std::move(java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 0
{
auto java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 5
std::auto destroyingDirectoryLockHandle2std::ovedirectoryLockHandle2);
}
return BoolPromise::CreateAndResolve(true, }
}) );
{
auto value =
constauto =()java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
(IsResolve)
ASSERT_TRUE(quotaManager->IsStorageInitialized()
}
});
saveOriginAccessTimeCountInternalAfter
ASSERT_NO_FATAL_FAILURE)
}
// Test OpenClientDirectory when an opening of a client directory already
// finished.
AoriginStateMetadataAfter>Accessed)
java.lang.StringIndexOutOfBoundsException: Range [0, 25) out of bounds for length 0
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
{
auto value =
tory(();
ASSERT_TRUE(value.IsResolve());
// Test OpenClientDirctory when an opening of a client directory is// ongoing and storage shutdown is scheduled after that.
std::move(value.ResolveValue);
java.lang.StringIndexOutOfBoundsException: Range [7, 8) out of bounds for length 7
auto destroyingDirectoryLockHandlejava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 53
}
ASSERT_TRUE(quotaManager-
}
{
auto value (
java.lang.StringIndexOutOfBoundsException: Range [49, 15) out of bounds for length 76
ASSERT_TRUE [d]
ClientDirectoryLockHandle directoryLockHandle =
std::move(value.ResolveValue());
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 7
auto destroyingDirectoryLockHandle = )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
}
ASSERT_TRUE(quotaManager-());
}
});
ASSERT_NO_FATAL_FAILURE directoryLockHandle=:ma.();
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
-Thenq-IOThread _java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
// Test OpenClientDirectory when an opening of a client directory already
// finished but storage shutdown has just been scheduled.
TEST_F) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThreadjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
QuotaManager*quotaManager=QuotaManager::();
ASSERT_TRUE(quotaManager);
{
auto value =
AwaitA(
ASSERT_TRUEvalueIsResolve)
ClientDirectoryLockHandle directoryLockHandle = :(,_)java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
std:move(alue.ResolveValue());
{
auto destroyingDirectoryLockHandle = std::move(directoryLockHandle);
}
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
nsTArray<RefPtr<BoolPromise>> promises;
promises.AppendElement(quotaManager->ShutdownStorage());
promises.AppendElementjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
quotaManagerreturn:a.)
->Then(GetCurrentSerialEventTarget(), __func__,
[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ResolveOrRejectValue&& )java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
(ValueIsReject() {
return BoolPromise:CreateAndReject(aValue.RejectValue(),
)
}
ClientDirectoryLockHandle directoryLockHandle =
std::move(aValue. ResolveOrRejectValue& aValue){
{
destroyingDirectoryLockHandle
java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 69
}
:(,_;
}));
{
auto=
Await(BoolPromise::All( std::move);
ASSERT_TRUE(value.IsResolve
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
});
ASSERT_NO_FATAL_FAILURE(Await(BoolPromise::All(GetCurrentSerialEvent )
ASSERT_NO_FATAL_FAILURE(ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
// Test OpenClientDirectory when an opening of a client directory already
// finished with an exclusive client directory lock for a different origin is
// acquired in between.
TEST_F(TestQuotaManager,
OpenClientDirectory_FinishedWithOtherExclusiveClientDirectoryLock) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage(// Test OpenClientDirectory when an opening of a client directory is already
E()java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
{
auto value =
Await(quotaManager->OpenClientDirectory(GetTestClientMetadata()));
ASSERT_TRUE(value.IsResolve());
ClientDirectoryLockHandle directoryLockHandle =
std::move(value.ResolveValue())java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
auto destroyingDirectoryLockHandle = std::move(directoryLockHandle* :et(java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
}
ASSERT_TRUE( quotaManager->CreateDirectoryLockInternaljava.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 50
}
RefPtr<ClientDirectoryLock> directoryLock =
java.lang.StringIndexOutOfBoundsException: Range [41, 20) out of bounds for length 71
aExclusive * true);
{
auto value = .(
ASSERT_TRUEv()
}
{
auto value =
Await(quotaManager->OpenClientDirectoryResolveOrRejectValue java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
ASSERT_TRUEif.) {
ClientDirectoryLockHandle directoryLockHandle =
std::move(value.ResolveValue());
{
}
}
ASSERT_TRUE(quotaManager->IsStorageInitialized());
::(.ResolveValue();
(;
=
(()
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
}
(, ){
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
ClientDirectoryLockHandle directoryLockHandle;
RefPtr<BoolPromise> promisequotaManager>()
quotaManager
(,
/* aInitializeOrigin */ true)
->Then( ResolveOrRejectValuejava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
[&directoryLockHandle](
QuotaManager:ClientDirectoryLockHandlePromise::
ResolveOrRejectValue&& aValue) {
if (aValue.IsReject()) {
return BoolPromise::CreateAndReject(aValue.RejectValue(),
java.lang.StringIndexOutOfBoundsException: Range [67, 59) out of bounds for length 69
}
[&aValue]()
auto destroyingDirectoryLockHandle
return BoolPromise::CreateAndResolve(true, __ java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
-> java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
[](const BoolPromise: (.()
if(.( java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized);
__java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 45
}
[]() {
QuotaManager*quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
ASSERT_TRUE(
();
GetTestOriginMetadata([( java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
})java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
return BoolPromise::CreateAndResolve(true, __java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 5
})
->Then(GetCurrentSerialEventTarget(), __func__,
[&directoryLockHandle](
const BoolPromise::ResolveOrRejectValue& aValue) {
{
java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 53
std::move java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 76
}
if (aValue.IsReject
auto=
__func__;
}
:java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 74
})
{
auto value = Await(promise);
ASSERT_TRUE(value. ASSERT_TRUE(quotaManager->I);
ASSERT_TRUE
}
});
ASSERT_NO_FATAL_FAILURE(
AssertTemporaryOriginInitialized(java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 0
ASSERT_NO_FATAL_FAILURE(java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 0
PerformOnBackgroundThread([](TEST_F(,)java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
QuotaManager* quotaManager = QuotaManager: ASSERT_NO_FATAL_FAILUREAssertStorageNotInitialized)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
ASSERT_TRUE(quotaManager;
ClientDirectoryLockHandle directoryLockHandle;
RefPtr<QuotaManager::ClientDirectoryLockHandlePromise> promisejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
quotaManager->OpenClientDirectory(GetTestClientMetadataAwait(quotaManager->penClientDirectoryGetTestClientMetadata();
/* aInitializeOrigin */ false);
{
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 7
ASSERT_TRUEvalueIsReject()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
ASSERT_EQ(value.RejectValue(),
NS_ERROR_DOM_QM_CLIENT_INIT_ORIGIN_UNINITIALIZEDquotaManager-IsStorageInitialized)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
promises.AppendElement-ShutdownStorage);
AssertTemporaryOriginNotInitialized(GetTestOriginMetadata()));
ASSERT_NO_FATAL_FAILURE( quotaManager->OpenClientDirectory(GetTestClien())
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test simple InitializeStorage.
TEST_F(, InitializeStorage_Simple {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager*quotaManager=QuotaManager:(;
ASSERT_TRUE(quotaManager);
{
auto value = Await(quotaManager->InitializeStorage());
ASSERT_TRUE(value.IsResolve());
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 56
}
})destroyingDirectoryLockHandle
(()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
java.lang.StringIndexOutOfBoundsException: Range [41, 25) out of bounds for length 45
}
// Test InitializeStorage when a storage initialization is already ongoing.
(){
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitializedquotaManagerI();
PerformOnBackgroundThread([]() {
QuotaManager* ASSERT_NO_FATAL_FAILURE());
ASSERT_TRUE(quotaManager);
promises;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
promises.// finished with an exclusive client directory lock for a different origin is
{
OpenClientD) {
AwaitASSERT_NO_FATAL_FAILUREShutdownStorage);
ASSERT_TRUE(value.IsResolve());
ASSERT_NO_FATAL(AssertStorageNotInitialized()java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
}
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test InitializeStorage when a storage initialization is already ongoing and
// storage shutdown is scheduled after that.
TEST_F(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ASSERT_NO_FATAL_FAILURE)
ASSERT_NO_FATAL_FAILURE(destroyingDirectoryLockHandlestd:ovedirectoryLockHandle)
PerformOnBackgroundThread
ASSERT_TRUE-IsStorageInitialized);
java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 43
promises.AppendElement(quotaManager->InitializeStorage
promises.AppendElement(quotaManager Await(directoryLock>cquire);
promises.AppendElement(quotaManager->InitializeStorage());
{
auto value =
Await(BoolPromise::All(java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 18
ASSERT_TRUE(value. (quotaManager->OpenClientDirectory(GetTestClientMetadata()));
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
});
ASSERT_NO_FATAL_FAILURE(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 0
(ShutdownStorage))
}
:(java.lang.StringIndexOutOfBoundsException: Range [76, 74) out of bounds for length 76
// Test InitializeStorage when a storage initialization is already ongoing and
// storage shutdown is scheduled after that. The tested InitializeStorage call
// is delayed to the point when storage shutdown is about to finish.
TEST_F(TestQuotaManager,};
InitializeStorage_OngoingWithScheduledShutdown_Delayedjava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 54
ASSERT_NO_FATAL_FAILURE(}
ASSERT_NO_FATAL_FAILURE(();
PerformOnBackgroundThread]){
java.lang.StringIndexOutOfBoundsException: Range [0, 16) out of bounds for length 0
ASSERT_TRUE(quotaManager);
nsTArrayRefPtr<oolPromise>promises
promises.AppendElement(quotaManager->InitializeStorage(
OriginOperationCallbackOptions callbackOptions;
callbackOptions.mWantWillFinishSync = true;
OriginOperationCallbacks callbacks;
promises.AppendElement(quotaManager- Ojava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 58
java.lang.StringIndexOutOfBoundsException: Range [42, 40) out of bounds for length 42
promises.AppendElement(callbacks.mWillFinishSyncPromise.ref()-> return BoolPromise::CreateAndReject(aValue.Reject:java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 80
GetCurrentSerialEventTarget
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
const ExclusiveBoolPromise::java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 0
return InvokeAsync(
,
[quotaManager]() java.lang.StringIndexOutOfBoundsException: Range [31, 32) out of bounds for length 21
}));
{
auto value =
Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises));
ASSERT_TRUE(value.IsResolve());
__func__;
}
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorageaASSERT_TRUE(quotaManager);
}
// Test InitializeStorage when a storage initialization is already ongoing and
// an exclusive directory lock is requested after that.
TEST_F(TestQuotaManager, InitializeStorage_OngoingWithExclusiveDirectoryLockGetTestOriginMetadata())
ASSERT_NO_FATAL_FAILURE(})java.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 25
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized})
) {
QuotaManager* &directoryLockHandlejava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
ASSERT_TRUE(quotaManager);
RefPtr<UniversalDirectoryLockstd:movedirectoryLockHandle;
quotaManager-
PersistenceScope::CreateFromNull() if aValueIsReject( java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
ClientStorageScope::CreateFromNull( _)
/* aExclusive */ true);
nsTArray<RefPtr<BoolPromise>> promises;
promises })
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
[&directoryLock](const BoolPromise::ResolveOrRejectValueASSERT_TRUE(.sResolve);
// The exclusive directory lock must be released when the first
// storage initialization is finished, otherwise it would endlesslyjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
// block the second storage initialization.
DropDirectoryLockdirectoryLock)
if (aValue PerformOnBackgroundThread(( java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
return BoolPromise::CreateAndReject(aValue (quotaManager;
}
return BoolPromise::CreateAndResolve(true, __func__);
RefPtr<::ClientDirectoryLockHandlePromise>promise=
promises.AppendElement(directoryLock->Acquire());
promises.AppendElement(quotaManager->InitializeStorage());
{
auto value =
Await(java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 5
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE SSERT_TRUEvalue.(;
}
});
java.lang.StringIndexOutOfBoundsException: Range [5, 6) out of bounds for length 5
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test InitializeStorage when a storage initialization is already ongoing and
// shared client directory locks are requested after that.
// The shared client directory locks don't have to be released in this case.
TEST_F(TestQuotaManager, InitializeStorage_OngoingWithClientDirectoryLocks) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
RefPtrClientDirectoryLock> directoryLock =
quotaManager->CreateDirectoryLock(GetTestClientMetadata(),
/* aExclusive */ false);
<ClientDirectoryLock directoryLock2 =
quotaManager->CreateDirectoryLock(GetTestClientMetadata(),
/* aExclusive */ false);
nsTArray<RefPtr<BoolPromise>> promises;
(()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
promises.AppendElement(directoryLock->Acquire());
promises.AppendElement(quotaManager->java.lang.StringIndexOutOfBoundsException: Range [0, 58) out of bounds for length 0
promises.AppendElement(directoryLock2->Acquire());
{
auto value =
Await(BoolPromise:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ASSERT_TRUE(value.IsResolve());
*quotaManager=:Get)
} (uotaManager)
<<>>promises
DropDirectoryLock(directoryLock2);
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
ASSERT_NO_FATAL_FAILURE(AssertStorageInitializedAwait(:All() promises)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
// Test InitializeStorage when a storage initialization is already ongoing and
// shared client directory locks are requested after that with storage shutdown
// scheduled in between.
TEST_F(TestQuotaManager,
// storage shutdown is scheduled after that.
ASSERT_NO_FATAL_FAILURE(java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0
(ssertStorageNotInitialized;
PerformOnBackgroundThread(]){
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager
RefPtr<ClientDirectoryLock> directoryLock =
java.lang.StringIndexOutOfBoundsException: Range [41, 20) out of bounds for length 66
/* aExclusive */ false);
directoryLock->OnInvalidate(
[&directoryLock]() { waitBoolPromise::(GetCurrentSerialEventTarget) );
RefPtr<ClientDirectoryLock> directoryLock2 =
quotaManager->CreateDirectoryLock(ASSERT_TRUE(quotaManager->IsStorageInitialized
/* aExclusive */ false);
nsTArray<RefPtr<BoolPromise>> ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
promises.AppendElement(quotaManager ASSERT_NO_FATAL_FAILURE(hutdownStorage);
promises.AppendElement(java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 1
promises.AppendElement(quotaManager->ShutdownStorage());
promises.AppendElement(quotaManager->InitializeStorage());
promises.AppendElement(InitializeStorage_OngoingWithScheduledShutdown_Delayed){
{
auto value =
Await(BoolPromise::All(java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 53
ASSERT_TRUE(value.java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
ASSERT_TRUE(promises.AppendElement(quotaManager->InitializeStorage());
}
DropDirectoryLock(directoryLock2);
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized(
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 45
}
// Test InitializeStorage when a storage initialization already finished.
EST_FTestQuotaManager,) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread]){
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE( GetCurrentSerial(,_,
{
auto );
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
{
auto value = Await(Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises));
(.())
->java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 56
}
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(}
}
// Test InitializeStorage when a storage initialization already finished but
// storage shutdown has just been scheduled.
,InitializeStorage_FinishedWithScheduledShutdown
(ShutdownStorage();
ASSERT_NO_FATAL_FAILURE(ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager*quotaManager =QuotaManager::et;
ASSERT_TRUE(quotaManager);
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
auto value = Await(quotaManager->java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
nsTArray<RefPtr<BoolPromise>> promises;
promises.AppendElement(quotaManager->ShutdownStorage());
promises.AppendElement(quotaManager->InitializeStorage());
{
auto value =
(BoolPromise:All(etCurrentSerialEventTarget(), promises));
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized() promises.AppendElement(quotaManager>InitializeStorage()>(
}
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test InitializeStorage when a storage initialization already finished and
// shared client directory locks are requested immediately after requesting
// storage initialization.
TEST_F(TestQuotaManager, InitializeStorage_FinishedWithClientDirectoryLocks) {
ASSERT_NO_FATAL_FAILUREShutdownStorage);
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
:Get();
ASSERT_TRUE(quotaManager);
RefPtr<ClientDirectoryLock> directoryLock .AppendElement(directoryLock>Acquire()
quotaManager>((),
/* aExclusive */ false);
<<> promises;
Manager->InitializeStorage))
promises.AppendElement(directoryLock->Acquire());
{
autovalue =
Await(BoolPromise::All(java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 5
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized);
ASSERT_TRUE(quotaManager
}
RefPtr<ClientDirectoryLock> java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 0
quotaManager->CreateDirectoryLock(GetTestClientMetadata(),
// shared client directory locks are requested after that.
promises.Clear();
.AppendElement(-);
promises.AppendElement(directoryLock2->Acquire());
{
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
Await(BoolPromise::All( QuotaManager* quotaManager = QuotaManager(;
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
DropDirectoryLock(quotaManager->CreateDirectory(()java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
DropDirectoryLock(directoryLock2);
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test InitializeStorage when a storage initialization already finished and
// shared client directory locks are requested immediatelly after requesting
// storage initialization with storage shutdown performed in between.
// The shared client directory lock is released when it gets invalidated by
// storage shutdown which then unblocks the shutdown.
TEST_F(TestQuotaManager,
inishedWithClientDirectoryLocksAndScheduledShutdown) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE( promises.AppendElement(directoryLock2->Acquire());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
RefPtr<lientDirectoryLock>directoryLock=
quotaManager->CreateDirectoryLock(GetTestClientMetadata(),
/* aExclusive */ false);
directoryLock->OnInvalidate(
[&directoryLock]() { DropDirectoryLock(directoryLock); });
nsTArray<RefPtr<BoolPromise>> promises;
promises.AppendElement(quotaManager->InitializeStorage());
promises.AppendElement(directoryLock->Acquire() };
{
auto value =
Await(BoolPromise::AllASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
{
auto value = Await(quotaManager->ShutdownStorage());
ASSERT_TRUE(value.IsResolve());
InitializeStorage_OngoingWithClientDirectoryLocksAndScheduledShutdown {
}
RefPtr<ClientDirectoryLock> directoryLock2 =
quotaManager->CreateDirectoryLock( ASSERT_NO_FATAL_FAILURE(hutdownStorage);
/* aExclusive */ false);
promises.Clear();
promises.(uotaManager>())java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
java.lang.StringIndexOutOfBoundsException: Range [0, 12) out of bounds for length 0
{
auto value=
Await(BoolPromise::All(GetCurrentSerialEventTarget/* aExclusive */ false);
ASSERT_TRUE(directoryLock->OnInvalidate(
ASSERT_TRUE &){(directoryLock;};
}
DropDirectoryLock(directoryLock2);
});
ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
TEST_F(TestQuotaManager,
InitializePersistentStorage_OtherExclusiveDirectoryLockAcquired) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 5
ASSERT_TRUE(quotaManager);
{
auto value = Await(quotaManager->java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 37
ASSERT_TRUE(value.IsResolve());
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 5
}
RefPtr< )java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
quotaManager->reateDirectoryLockInternal(
PersistenceScope::CreateFromSet(PERSISTENCE_TYPE_TEMPORARY,
java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 45
OriginScope::java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
/* aExclusive */ true);
{
auto value = Await(directoryLock->java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 0
ASSERT_TRUE(value.IsResolve());
}
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
auto value = Await(quotaManagerauto AwaitquotaManager-InitializeStorage);
ASSERT_TRUE(value ASSERT_TRUE(.sResolve;
ASSERT_TRUEjava.lang.StringIndexOutOfBoundsException: Range [56, 52) out of bounds for length 56
}
DropDirectoryLock(directoryLock);
};
java.lang.StringIndexOutOfBoundsException: Range [37, 25) out of bounds for length 54
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 45
}
// Test InitializePersistentStorage when a persistent storage initialization is
// already ongoing and an exclusive directory lock is requested after that.
TEST_F(TestQuotaManager,
java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
ASSERT_NO_FATAL_FAILURE(ShutdownStorage);
ASSERT_NO_FATAL_FAILURE(java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 45
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager
RefPtr<UniversalDirectoryLock> directoryLock =
quotaManager->CreateDirectoryLockInternal(
CreateFromNull(,OriginScope:romNull)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
ClientStorageScope::CreateFromNull(),
/* aExclusive */ true);
nsTArrayASSERT_TRUE(alueIsResolve);
promises.AppendElement(quotaManager->ASSERT_TRUE(quotaManager->IsStorageInitialized
promises.RefPtr<BoolPromise>> promises;
GetCurrentSerialEventTarget(), __func__,
[&directoryLock]( A(-ShutdownStorage);
// The exclusive directory lock must be released when the first
// Persistent storage initialization is finished, otherwise it would
// endlessly block the second persistent storage initialization.java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
ropDirectoryLockdirectoryLock;
.IsReject() {
return BoolPromise::CreateAndReject(aValue.RejectValue(), __java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 0
}
return BoolPromise::CreateAndResolve(true,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}));
promises.AppendElement(ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
promises.AppendElement(quotaManager->InitializeStorage());
promises.AppendElement(quotaManager-
{
auto value =
Await(BoolPromise::TestQuotaManager, InitializeStorage_FinishedWithClientDirectoryLocks
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized());
ASSERT_TRUE(quotaManager->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
});
java.lang.StringIndexOutOfBoundsException: Range [50, 25) out of bounds for length 54
ASSERT_NO_FATAL_FAILURE(ShutdownStorage( ASSERT_TRUE(quotaManager);
}
// Test InitializePersistentStorage when a persistent storage initialization
// already finished.
, ) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
ASSERT_NO_FATAL_FAILURE(java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 0
PerformOnBackgroundThread([]() {
nsTArray<RefPtr<oolPromise>promises
nager::Get()
ASSERT_TRUE(quotaManager);
promises.AppendElement(quotaManager->InitializeStorage());
promises.AppendElement(quotaManager->InitializePersistentStorage());
{
value =
Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises));
;
ASSERT_TRUE(quotaManager}
ASSERT_TRUE(quotaManager->IsPersistentStorageInitialized());
}
promises.Clear();
promises.AppendElement(quotaManager
promises.AppendElement(uotaManager->InitializePersistentStorage());
auto value =
Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises));
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized
ASSERT_TRUE(quotaManager->IsPersistentStorageInitialized());
}
)
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
ASSERT_NO_FATAL_FAILUREjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
}
TEST_F(TestQuotaManager,
InitializePersistentStorage_FinishedWithScheduledShutdown) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
ASSERT_NO_FATAL_FAILURE(AssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
nsTArray<RefPtr<BoolPromise>> promises;
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(quotaManager);
promises.AppendElement(quotaManager->InitializeStorage());
promises.AppendElement(InitializeStorage_FinishedWithClientDirectoryLocksAndScheduledShutdown) {
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
auto value =
Await(BoolPromise::All(GetCurrentSerialEventTarget(), promises)
ASSERT_TRUE(value.IsResolve());
(quotaManager->)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
ASSERT_TRUE(quotaManager->IsPersistentStorageInitialized());
}
promises.Clear();
aManager>ShutdownStorage()java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
promises. nsTArray<RefPtr>;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
promisesAppendElementdirectoryLock>()java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
auto value java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
Await(BoolPromise::All(GetCurrentSerialEventTarget( :(() );
ASSERT_TRUEv.IsResolve);
ASSERT_TRUE(quotaManager->IsStorageInitialized());
ASSERT_TRUE-IsStorageInitialized)
}
});
ASSERT_NO_FATAL_FAILUREAssertStorageInitialized);
ASSERT_NO_FATAL_FAILURE(ShutdownStorage() (valueIsResolve);
}
TEST_F(TestQuotaManager,
InitializeTemporaryStorage_OtherExclusiveDirectoryLockAcquiredjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
ASSERT_NO_FATAL_FAILUREShutdownStorage()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
ASSERT_NO_FATAL_FAILURE/* aExclusive */ false);
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get();
ASSERT_TRUE(promises.AppendElement-();
{
auto value = Await(quotaManager->InitializeStorage());
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(quotaManager->IsStorageInitialized());
}
RefPtr>directoryLock=
quotaManager->java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 0
PersistenceScope::CreateFromValue( ASSERT_TRUE(quotaManager->IsStorageInitialized);
OriginScope::FromNull(), ClientStorageScope::CreateFromNull(),
/* aExclusive */ true);
{
auto value = Await(ASSERT_NO_FATAL_FAILURE(AssertStorageInitialized());
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
{
auto value = Await(quotaManager->java.lang.StringIndexOutOfBoundsException: Range [0, 65) out of bounds for length 24
ASSERT_TRUE(value.IsResolve());
ASSERT_TRUE(
}
DropDirectoryLock(directoryLock PerformOnBackgroundThread(](){
});
ASSERT_NO_FATAL_FAILURE( QuotaManager* quotaManager = QuotaManager::Get
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
}
// Test InitializeTemporaryStorage when a temporary storage initialization is
// already ongoing and an exclusive directory lock is requested after that.
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
) {
ASSERT_NO_FATAL_FAILURE(ShutdownStorage());
O_FATAL_FAILUREAssertStorageNotInitialized());
PerformOnBackgroundThread([]() {
QuotaManager* quotaManager = QuotaManager::Get quotaManager->CreateDirectoryLockInternal(
);
RefPtr<UniversalDirectoryLock> directoryLock =
quotaManager-> OriginScope::FromNull)
PersistenceScope::CreateFromNull(), OriginScope
ClientStorageScope::CreateFromNull(),
java.lang.StringIndexOutOfBoundsException: Range [33, 12) out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
promises.AppendElement(quotaManager->InitializeStorage());
promises.AppendElement(quotaManager->InitializeTemporaryStorage()->Then(
GetCurrentSerialEventTarget(), __func__,
[&directoryLock( :& aValue
// The exclusive directory lock must be dropped when the first
// temporary storage initialization is finished, otherwise it would
// endlessly block the second temporary storage initialization.
DropDirectoryLock(directoryLock);
if (aValue.IsReject())};
return BoolPromisejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 | | |