summaryrefslogtreecommitdiff
path: root/chromium/storage/browser/database
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/storage/browser/database')
-rw-r--r--chromium/storage/browser/database/database_quota_client.cc38
-rw-r--r--chromium/storage/browser/database/database_quota_client.h2
-rw-r--r--chromium/storage/browser/database/database_quota_client_unittest.cc113
-rw-r--r--chromium/storage/browser/database/database_tracker.cc4
-rw-r--r--chromium/storage/browser/database/database_tracker_unittest.cc6
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;
}