diff options
Diffstat (limited to 'chromium/storage/browser/database')
5 files changed, 67 insertions, 96 deletions
diff --git a/chromium/storage/browser/database/database_quota_client.cc b/chromium/storage/browser/database/database_quota_client.cc index 3d2cd6d6436..1708eaabbee 100644 --- a/chromium/storage/browser/database/database_quota_client.cc +++ b/chromium/storage/browser/database/database_quota_client.cc @@ -98,10 +98,6 @@ DatabaseQuotaClient::~DatabaseQuotaClient() { } } -storage::QuotaClientType DatabaseQuotaClient::type() const { - return storage::QuotaClientType::kDatabase; -} - void DatabaseQuotaClient::OnQuotaManagerDestroyed() {} void DatabaseQuotaClient::GetOriginUsage(const url::Origin& origin, @@ -109,12 +105,7 @@ void DatabaseQuotaClient::GetOriginUsage(const url::Origin& origin, GetUsageCallback callback) { DCHECK(!callback.is_null()); DCHECK(db_tracker_.get()); - - // All databases are in the default bucket. - if (type != StorageType::kTemporary) { - std::move(callback).Run(0); - return; - } + DCHECK_EQ(type, StorageType::kTemporary); base::PostTaskAndReplyWithResult( db_tracker_->task_runner(), FROM_HERE, @@ -127,12 +118,7 @@ void DatabaseQuotaClient::GetOriginsForType(StorageType type, GetOriginsCallback callback) { DCHECK(!callback.is_null()); DCHECK(db_tracker_.get()); - - // All databases are in the default bucket. - if (type != StorageType::kTemporary) { - std::move(callback).Run(std::set<url::Origin>()); - return; - } + DCHECK_EQ(type, StorageType::kTemporary); std::set<url::Origin>* origins_ptr = new std::set<url::Origin>(); db_tracker_->task_runner()->PostTaskAndReply( @@ -148,12 +134,7 @@ void DatabaseQuotaClient::GetOriginsForHost(StorageType type, GetOriginsCallback callback) { DCHECK(!callback.is_null()); DCHECK(db_tracker_.get()); - - // All databases are in the default bucket. - if (type != StorageType::kTemporary) { - std::move(callback).Run(std::set<url::Origin>()); - return; - } + DCHECK_EQ(type, StorageType::kTemporary); std::set<url::Origin>* origins_ptr = new std::set<url::Origin>(); db_tracker_->task_runner()->PostTaskAndReply( @@ -170,12 +151,7 @@ void DatabaseQuotaClient::DeleteOriginData(const url::Origin& origin, DeletionCallback callback) { DCHECK(!callback.is_null()); DCHECK(db_tracker_.get()); - - // All databases are in the default bucket. - if (type != StorageType::kTemporary) { - std::move(callback).Run(blink::mojom::QuotaStatusCode::kOk); - return; - } + DCHECK_EQ(type, StorageType::kTemporary); // DidDeleteOriginData() translates the net::Error response to a // blink::mojom::QuotaStatusCode if necessary, and no-ops as appropriate if @@ -195,11 +171,9 @@ void DatabaseQuotaClient::DeleteOriginData(const url::Origin& origin, void DatabaseQuotaClient::PerformStorageCleanup(blink::mojom::StorageType type, base::OnceClosure callback) { + DCHECK(!callback.is_null()); + DCHECK_EQ(type, StorageType::kTemporary); std::move(callback).Run(); } -bool DatabaseQuotaClient::DoesSupport(StorageType type) const { - return type == StorageType::kTemporary; -} - } // namespace storage diff --git a/chromium/storage/browser/database/database_quota_client.h b/chromium/storage/browser/database/database_quota_client.h index 12375de9b9e..1a64f083786 100644 --- a/chromium/storage/browser/database/database_quota_client.h +++ b/chromium/storage/browser/database/database_quota_client.h @@ -30,7 +30,6 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) DatabaseQuotaClient explicit DatabaseQuotaClient(scoped_refptr<DatabaseTracker> tracker); // QuotaClient method overrides - storage::QuotaClientType type() const override; void OnQuotaManagerDestroyed() override; void GetOriginUsage(const url::Origin& origin, blink::mojom::StorageType type, @@ -45,7 +44,6 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) DatabaseQuotaClient DeletionCallback callback) override; void PerformStorageCleanup(blink::mojom::StorageType type, base::OnceClosure callback) override; - bool DoesSupport(blink::mojom::StorageType type) const override; private: ~DatabaseQuotaClient() override; diff --git a/chromium/storage/browser/database/database_quota_client_unittest.cc b/chromium/storage/browser/database/database_quota_client_unittest.cc index b14a36dbaf1..d8420694d44 100644 --- a/chromium/storage/browser/database/database_quota_client_unittest.cc +++ b/chromium/storage/browser/database/database_quota_client_unittest.cc @@ -5,6 +5,7 @@ #include <stdint.h> #include <map> +#include <string> #include <utility> #include <vector> @@ -25,14 +26,15 @@ #include "storage/browser/database/database_util.h" #include "storage/common/database/database_identifier.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/mojom/quota/quota_types.mojom.h" +#include "url/gurl.h" +#include "url/origin.h" namespace storage { // Declared to shorten the line lengths. static const blink::mojom::StorageType kTemp = blink::mojom::StorageType::kTemporary; -static const blink::mojom::StorageType kPerm = - blink::mojom::StorageType::kPersistent; // Mock tracker class the mocks up those methods of the tracker // that are used by the QuotaClient. @@ -127,74 +129,75 @@ class DatabaseQuotaClientTest : public testing::Test { : kOriginA(url::Origin::Create(GURL("http://host"))), kOriginB(url::Origin::Create(GURL("http://host:8000"))), kOriginOther(url::Origin::Create(GURL("http://other"))), - usage_(0), mock_tracker_(new MockDatabaseTracker) {} - int64_t GetOriginUsage(scoped_refptr<QuotaClient> client, - const url::Origin& origin, - blink::mojom::StorageType type) { - usage_ = 0; - client->GetOriginUsage( - origin, type, - base::BindOnce(&DatabaseQuotaClientTest::OnGetOriginUsageComplete, - weak_factory_.GetWeakPtr())); - task_environment_.RunUntilIdle(); - return usage_; + static int64_t GetOriginUsage(scoped_refptr<QuotaClient> client, + const url::Origin& origin, + blink::mojom::StorageType type) { + int result = -1; + base::RunLoop loop; + client->GetOriginUsage(origin, type, + base::BindLambdaForTesting([&](int64_t usage) { + result = usage; + loop.Quit(); + })); + loop.Run(); + EXPECT_GT(result, -1); + return result; } - const std::set<url::Origin>& GetOriginsForType( + static std::set<url::Origin> GetOriginsForType( scoped_refptr<QuotaClient> client, blink::mojom::StorageType type) { - origins_.clear(); + std::set<url::Origin> result; + base::RunLoop loop; client->GetOriginsForType( - type, base::BindOnce(&DatabaseQuotaClientTest::OnGetOriginsComplete, - weak_factory_.GetWeakPtr())); - task_environment_.RunUntilIdle(); - return origins_; + type, + base::BindLambdaForTesting([&](const std::set<url::Origin>& origins) { + result = origins; + loop.Quit(); + })); + loop.Run(); + return result; } - const std::set<url::Origin>& GetOriginsForHost( + static std::set<url::Origin> GetOriginsForHost( scoped_refptr<QuotaClient> client, blink::mojom::StorageType type, const std::string& host) { - origins_.clear(); + std::set<url::Origin> result; + base::RunLoop loop; client->GetOriginsForHost( type, host, - base::BindOnce(&DatabaseQuotaClientTest::OnGetOriginsComplete, - weak_factory_.GetWeakPtr())); - task_environment_.RunUntilIdle(); - return origins_; + base::BindLambdaForTesting([&](const std::set<url::Origin>& origins) { + result = origins; + loop.Quit(); + })); + loop.Run(); + return result; } - bool DeleteOriginData(scoped_refptr<QuotaClient> client, - blink::mojom::StorageType type, - const url::Origin& origin) { - delete_status_ = blink::mojom::QuotaStatusCode::kUnknown; + static blink::mojom::QuotaStatusCode DeleteOriginData( + scoped_refptr<QuotaClient> client, + blink::mojom::StorageType type, + const url::Origin& origin) { + blink::mojom::QuotaStatusCode result = + blink::mojom::QuotaStatusCode::kUnknown; + base::RunLoop loop; client->DeleteOriginData( origin, type, - base::BindOnce(&DatabaseQuotaClientTest::OnDeleteOriginDataComplete, - weak_factory_.GetWeakPtr())); - task_environment_.RunUntilIdle(); - return delete_status_ == blink::mojom::QuotaStatusCode::kOk; + base::BindLambdaForTesting([&](blink::mojom::QuotaStatusCode code) { + result = code; + loop.Quit(); + })); + loop.Run(); + return result; } MockDatabaseTracker* mock_tracker() { return mock_tracker_.get(); } private: - void OnGetOriginUsageComplete(int64_t usage) { usage_ = usage; } - - void OnGetOriginsComplete(const std::set<url::Origin>& origins) { - origins_ = origins; - } - - void OnDeleteOriginDataComplete(blink::mojom::QuotaStatusCode status) { - delete_status_ = status; - } - base::test::TaskEnvironment task_environment_; - int64_t usage_; - std::set<url::Origin> origins_; - blink::mojom::QuotaStatusCode delete_status_; scoped_refptr<MockDatabaseTracker> mock_tracker_; base::WeakPtrFactory<DatabaseQuotaClientTest> weak_factory_{this}; }; @@ -203,13 +206,10 @@ TEST_F(DatabaseQuotaClientTest, GetOriginUsage) { auto client = base::MakeRefCounted<DatabaseQuotaClient>(mock_tracker()); EXPECT_EQ(0, GetOriginUsage(client, kOriginA, kTemp)); - EXPECT_EQ(0, GetOriginUsage(client, kOriginA, kPerm)); mock_tracker()->AddMockDatabase(kOriginA, "fooDB", 1000); EXPECT_EQ(1000, GetOriginUsage(client, kOriginA, kTemp)); - EXPECT_EQ(0, GetOriginUsage(client, kOriginA, kPerm)); - EXPECT_EQ(0, GetOriginUsage(client, kOriginB, kPerm)); EXPECT_EQ(0, GetOriginUsage(client, kOriginB, kTemp)); } @@ -234,7 +234,6 @@ TEST_F(DatabaseQuotaClientTest, GetOriginsForHost) { EXPECT_TRUE(origins.find(kOriginA) != origins.end()); EXPECT_TRUE(origins.find(kOriginB) != origins.end()); - EXPECT_TRUE(GetOriginsForHost(client, kPerm, kOriginA.host()).empty()); EXPECT_TRUE(GetOriginsForHost(client, kTemp, kOriginOther.host()).empty()); } @@ -242,30 +241,24 @@ TEST_F(DatabaseQuotaClientTest, GetOriginsForType) { auto client = base::MakeRefCounted<DatabaseQuotaClient>(mock_tracker()); EXPECT_TRUE(GetOriginsForType(client, kTemp).empty()); - EXPECT_TRUE(GetOriginsForType(client, kPerm).empty()); mock_tracker()->AddMockDatabase(kOriginA, "fooDB", 1000); std::set<url::Origin> origins = GetOriginsForType(client, kTemp); EXPECT_EQ(origins.size(), 1ul); EXPECT_TRUE(origins.find(kOriginA) != origins.end()); - - EXPECT_TRUE(GetOriginsForType(client, kPerm).empty()); } TEST_F(DatabaseQuotaClientTest, DeleteOriginData) { auto client = base::MakeRefCounted<DatabaseQuotaClient>(mock_tracker()); - // Perm deletions are short circuited in the Client and - // should not reach the DatabaseTracker. - EXPECT_TRUE(DeleteOriginData(client, kPerm, kOriginA)); - EXPECT_EQ(0, mock_tracker()->delete_called_count()); - mock_tracker()->set_async_delete(false); - EXPECT_TRUE(DeleteOriginData(client, kTemp, kOriginA)); + EXPECT_EQ(blink::mojom::QuotaStatusCode::kOk, + DeleteOriginData(client, kTemp, kOriginA)); EXPECT_EQ(1, mock_tracker()->delete_called_count()); mock_tracker()->set_async_delete(true); - EXPECT_TRUE(DeleteOriginData(client, kTemp, kOriginA)); + EXPECT_EQ(blink::mojom::QuotaStatusCode::kOk, + DeleteOriginData(client, kTemp, kOriginA)); EXPECT_EQ(2, mock_tracker()->delete_called_count()); } diff --git a/chromium/storage/browser/database/database_tracker.cc b/chromium/storage/browser/database/database_tracker.cc index ecc6a0d2b8e..4f8cfb3eb34 100644 --- a/chromium/storage/browser/database/database_tracker.cc +++ b/chromium/storage/browser/database/database_tracker.cc @@ -22,6 +22,7 @@ #include "storage/browser/database/database_quota_client.h" #include "storage/browser/database/database_util.h" #include "storage/browser/database/databases_table.h" +#include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_manager_proxy.h" #include "storage/browser/quota/special_storage_policy.h" #include "storage/common/database/database_identifier.h" @@ -101,7 +102,8 @@ DatabaseTracker::DatabaseTracker(const base::FilePath& profile_path, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})) { if (quota_manager_proxy) { quota_manager_proxy->RegisterClient( - base::MakeRefCounted<DatabaseQuotaClient>(this)); + base::MakeRefCounted<DatabaseQuotaClient>(this), + QuotaClientType::kDatabase, {blink::mojom::StorageType::kTemporary}); } } diff --git a/chromium/storage/browser/database/database_tracker_unittest.cc b/chromium/storage/browser/database/database_tracker_unittest.cc index 5293254e3fb..4a4edf9174b 100644 --- a/chromium/storage/browser/database/database_tracker_unittest.cc +++ b/chromium/storage/browser/database/database_tracker_unittest.cc @@ -22,6 +22,7 @@ #include "net/base/net_errors.h" #include "net/base/test_completion_callback.h" #include "storage/browser/database/database_tracker.h" +#include "storage/browser/quota/quota_client_type.h" #include "storage/browser/quota/quota_manager_proxy.h" #include "storage/browser/test/mock_special_storage_policy.h" #include "storage/common/database/database_identifier.h" @@ -100,7 +101,10 @@ class TestQuotaManagerProxy : public QuotaManagerProxy { TestQuotaManagerProxy() : QuotaManagerProxy(nullptr, nullptr), registered_client_(nullptr) {} - void RegisterClient(scoped_refptr<QuotaClient> client) override { + void RegisterClient( + scoped_refptr<QuotaClient> client, + QuotaClientType client_type, + const std::vector<blink::mojom::StorageType>& storage_types) override { EXPECT_FALSE(registered_client_); registered_client_ = client; } |