0

StorageBuckets: Converting int64_t to BucketId

This change updates bucket_id in QuotaDatabase methods
to use type BucketId instead of int64_t. BucketId was
introduced in https://crrev.com/c/2823950.

Change-Id: I5bc1a756740bf4d2078903ea0a9dc68705058aef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2906431
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Ayu Ishii <ayui@chromium.org>
Cr-Commit-Position: refs/heads/master@{#886309}
This commit is contained in:
Ayu Ishii
2021-05-25 16:12:26 +00:00
committed by Chromium LUCI CQ
parent ce91bcddd3
commit 3d28f50c43
3 changed files with 63 additions and 46 deletions

@ -93,20 +93,22 @@ const size_t QuotaDatabase::kIndexCount = base::size(QuotaDatabase::kIndexes);
QuotaDatabase::BucketTableEntry::BucketTableEntry() = default; QuotaDatabase::BucketTableEntry::BucketTableEntry() = default;
QuotaDatabase::BucketTableEntry::~BucketTableEntry() = default;
QuotaDatabase::BucketTableEntry::BucketTableEntry(const BucketTableEntry&) = QuotaDatabase::BucketTableEntry::BucketTableEntry(const BucketTableEntry&) =
default; default;
QuotaDatabase::BucketTableEntry& QuotaDatabase::BucketTableEntry::operator=( QuotaDatabase::BucketTableEntry& QuotaDatabase::BucketTableEntry::operator=(
const QuotaDatabase::BucketTableEntry&) = default; const QuotaDatabase::BucketTableEntry&) = default;
QuotaDatabase::BucketTableEntry::BucketTableEntry( QuotaDatabase::BucketTableEntry::BucketTableEntry(
const int64_t bucket_id, BucketId bucket_id,
url::Origin origin, url::Origin origin,
StorageType type, StorageType type,
std::string name, std::string name,
int use_count, int use_count,
const base::Time& last_accessed, const base::Time& last_accessed,
const base::Time& last_modified) const base::Time& last_modified)
: bucket_id(bucket_id), : bucket_id(std::move(bucket_id)),
origin(std::move(origin)), origin(std::move(origin)),
type(type), type(type),
name(std::move(name)), name(std::move(name)),
@ -291,9 +293,10 @@ bool QuotaDatabase::SetOriginLastAccessTime(const url::Origin& origin,
return true; return true;
} }
bool QuotaDatabase::SetBucketLastAccessTime(const int64_t bucket_id, bool QuotaDatabase::SetBucketLastAccessTime(const BucketId bucket_id,
base::Time last_accessed) { base::Time last_accessed) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!bucket_id.is_null());
if (!LazyOpen(true)) if (!LazyOpen(true))
return false; return false;
@ -307,7 +310,7 @@ bool QuotaDatabase::SetBucketLastAccessTime(const int64_t bucket_id,
sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql)); sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
statement.BindInt(0, entry.use_count); statement.BindInt(0, entry.use_count);
statement.BindTime(1, last_accessed); statement.BindTime(1, last_accessed);
statement.BindInt64(2, bucket_id); statement.BindInt64(2, bucket_id.value());
if (!statement.Run()) if (!statement.Run())
return false; return false;
@ -365,9 +368,10 @@ bool QuotaDatabase::SetOriginLastModifiedTime(const url::Origin& origin,
return true; return true;
} }
bool QuotaDatabase::SetBucketLastModifiedTime(const int64_t bucket_id, bool QuotaDatabase::SetBucketLastModifiedTime(const BucketId bucket_id,
base::Time last_modified) { base::Time last_modified) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!bucket_id.is_null());
if (!LazyOpen(true)) if (!LazyOpen(true))
return false; return false;
@ -379,7 +383,7 @@ bool QuotaDatabase::SetBucketLastModifiedTime(const int64_t bucket_id,
"UPDATE buckets SET last_modified = ? WHERE id = ?"; "UPDATE buckets SET last_modified = ? WHERE id = ?";
sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql)); sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
statement.BindTime(0, last_modified); statement.BindTime(0, last_modified);
statement.BindInt64(1, bucket_id); statement.BindInt64(1, bucket_id.value());
if (!statement.Run()) if (!statement.Run())
return false; return false;
@ -517,15 +521,16 @@ bool QuotaDatabase::GetOriginInfo(const url::Origin& origin,
return false; return false;
// TODO(crbug.com/889590): Use helper for url::Origin creation from string. // TODO(crbug.com/889590): Use helper for url::Origin creation from string.
*entry = BucketTableEntry(statement.ColumnInt64(0), origin, type, *entry = BucketTableEntry(BucketId(statement.ColumnInt64(0)), origin, type,
kDefaultBucket, statement.ColumnInt(1), kDefaultBucket, statement.ColumnInt(1),
statement.ColumnTime(2), statement.ColumnTime(3)); statement.ColumnTime(2), statement.ColumnTime(3));
return true; return true;
} }
bool QuotaDatabase::GetBucketInfo(const int64_t bucket_id, bool QuotaDatabase::GetBucketInfo(const BucketId bucket_id,
QuotaDatabase::BucketTableEntry* entry) { QuotaDatabase::BucketTableEntry* entry) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!bucket_id.is_null());
if (!LazyOpen(false)) if (!LazyOpen(false))
return false; return false;
@ -542,7 +547,7 @@ bool QuotaDatabase::GetBucketInfo(const int64_t bucket_id,
"WHERE id = ?"; "WHERE id = ?";
// clang-format on // clang-format on
sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql)); sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
statement.BindInt64(0, bucket_id); statement.BindInt64(0, bucket_id.value());
if (!statement.Step()) if (!statement.Step())
return false; return false;
@ -595,14 +600,15 @@ bool QuotaDatabase::DeleteOriginInfo(const url::Origin& origin,
return true; return true;
} }
bool QuotaDatabase::DeleteBucketInfo(const int64_t bucket_id) { bool QuotaDatabase::DeleteBucketInfo(const BucketId bucket_id) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!bucket_id.is_null());
if (!LazyOpen(false)) if (!LazyOpen(false))
return false; return false;
static constexpr char kSql[] = "DELETE FROM buckets WHERE id = ?"; static constexpr char kSql[] = "DELETE FROM buckets WHERE id = ?";
sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql)); sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
statement.BindInt64(0, bucket_id); statement.BindInt64(0, bucket_id.value());
if (!statement.Run()) if (!statement.Run())
return false; return false;
@ -655,7 +661,7 @@ bool QuotaDatabase::GetLRUOrigin(StorageType type,
bool QuotaDatabase::GetLRUBucket(StorageType type, bool QuotaDatabase::GetLRUBucket(StorageType type,
const std::set<url::Origin>& exceptions, const std::set<url::Origin>& exceptions,
SpecialStoragePolicy* special_storage_policy, SpecialStoragePolicy* special_storage_policy,
absl::optional<int64_t>* bucket_id) { absl::optional<BucketId>* bucket_id) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(bucket_id); DCHECK(bucket_id);
if (!LazyOpen(false)) if (!LazyOpen(false))
@ -687,7 +693,7 @@ bool QuotaDatabase::GetLRUBucket(StorageType type,
continue; continue;
} }
*bucket_id = read_bucket_id; *bucket_id = BucketId(read_bucket_id);
return true; return true;
} }
@ -727,7 +733,7 @@ bool QuotaDatabase::GetOriginsModifiedBetween(StorageType type,
} }
bool QuotaDatabase::GetBucketsModifiedBetween(StorageType type, bool QuotaDatabase::GetBucketsModifiedBetween(StorageType type,
std::set<int64_t>* bucket_ids, std::set<BucketId>* bucket_ids,
base::Time begin, base::Time begin,
base::Time end) { base::Time end) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@ -750,7 +756,7 @@ bool QuotaDatabase::GetBucketsModifiedBetween(StorageType type,
bucket_ids->clear(); bucket_ids->clear();
while (statement.Step()) while (statement.Step())
bucket_ids->insert(statement.ColumnInt64(0)); bucket_ids->insert(BucketId(statement.ColumnInt64(0)));
return statement.Succeeded(); return statement.Succeeded();
} }
@ -1009,7 +1015,7 @@ bool QuotaDatabase::DumpBucketTable(const BucketTableCallback& callback) {
sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql)); sql::Statement statement(db_->GetCachedStatement(SQL_FROM_HERE, kSql));
while (statement.Step()) { while (statement.Step()) {
BucketTableEntry entry(statement.ColumnInt64(0), BucketTableEntry entry(BucketId(statement.ColumnInt64(0)),
url::Origin::Create(GURL(statement.ColumnString(1))), url::Origin::Create(GURL(statement.ColumnString(1))),
static_cast<StorageType>(statement.ColumnInt(2)), static_cast<StorageType>(statement.ColumnInt(2)),
statement.ColumnString(3), statement.ColumnInt(4), statement.ColumnString(3), statement.ColumnInt(4),

@ -46,18 +46,19 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
public: public:
struct COMPONENT_EXPORT(STORAGE_BROWSER) BucketTableEntry { struct COMPONENT_EXPORT(STORAGE_BROWSER) BucketTableEntry {
BucketTableEntry(); BucketTableEntry();
BucketTableEntry(int64_t bucket_id, BucketTableEntry(BucketId bucket_id,
url::Origin origin, url::Origin origin,
blink::mojom::StorageType type, blink::mojom::StorageType type,
std::string name, std::string name,
int use_count, int use_count,
const base::Time& last_accessed, const base::Time& last_accessed,
const base::Time& last_modified); const base::Time& last_modified);
~BucketTableEntry();
BucketTableEntry(const BucketTableEntry&); BucketTableEntry(const BucketTableEntry&);
BucketTableEntry& operator=(const BucketTableEntry&); BucketTableEntry& operator=(const BucketTableEntry&);
int64_t bucket_id = -1; BucketId bucket_id;
url::Origin origin; url::Origin origin;
blink::mojom::StorageType type = blink::mojom::StorageType::kUnknown; blink::mojom::StorageType type = blink::mojom::StorageType::kUnknown;
std::string name; std::string name;
@ -102,7 +103,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
// Called by QuotaClient implementers to update when the bucket was last // Called by QuotaClient implementers to update when the bucket was last
// accessed. // accessed.
bool SetBucketLastAccessTime(int64_t bucket_id, base::Time last_accessed); bool SetBucketLastAccessTime(BucketId bucket_id, base::Time last_accessed);
// TODO(crbug.com/1202167): Remove once all usages have updated to use // TODO(crbug.com/1202167): Remove once all usages have updated to use
// SetBucketLastModifiedTime. // SetBucketLastModifiedTime.
@ -112,7 +113,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
// Called by QuotaClient implementers to update when the bucket was last // Called by QuotaClient implementers to update when the bucket was last
// modified. // modified.
bool SetBucketLastModifiedTime(int64_t bucket_id, base::Time last_modified); bool SetBucketLastModifiedTime(BucketId bucket_id, base::Time last_modified);
bool GetOriginLastEvictionTime(const url::Origin& origin, bool GetOriginLastEvictionTime(const url::Origin& origin,
blink::mojom::StorageType type, blink::mojom::StorageType type,
@ -141,7 +142,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
// Gets the table entry for `bucket`. Returns whether the record for an // Gets the table entry for `bucket`. Returns whether the record for an
// origin bucket can be found. // origin bucket can be found.
bool GetBucketInfo(int64_t bucket_id, BucketTableEntry* entry); bool GetBucketInfo(BucketId bucket_id, BucketTableEntry* entry);
// TODO(crbug.com/1202167): Remove once all usages have been updated to use // TODO(crbug.com/1202167): Remove once all usages have been updated to use
// DeleteBucketInfo. Deletes the default bucket for `origin`. // DeleteBucketInfo. Deletes the default bucket for `origin`.
@ -149,7 +150,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
blink::mojom::StorageType type); blink::mojom::StorageType type);
// Deletes the specified bucket. // Deletes the specified bucket.
bool DeleteBucketInfo(int64_t bucket_id); bool DeleteBucketInfo(BucketId bucket_id);
// TODO(crbug.com/1202167): Remove once all usages have been updated to use // TODO(crbug.com/1202167): Remove once all usages have been updated to use
// GetLRUBucket. Sets `origin` to the least recently used origin of origins // GetLRUBucket. Sets `origin` to the least recently used origin of origins
@ -169,7 +170,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
bool GetLRUBucket(blink::mojom::StorageType type, bool GetLRUBucket(blink::mojom::StorageType type,
const std::set<url::Origin>& exceptions, const std::set<url::Origin>& exceptions,
SpecialStoragePolicy* special_storage_policy, SpecialStoragePolicy* special_storage_policy,
absl::optional<int64_t>* bucket_id); absl::optional<BucketId>* bucket_id);
// TODO(crbug.com/1202167): Remove once all usages have been updated to use // TODO(crbug.com/1202167): Remove once all usages have been updated to use
// GetBucketsModifiedBetween. Populates `origins` with the ones that have had // GetBucketsModifiedBetween. Populates `origins` with the ones that have had
@ -183,7 +184,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) QuotaDatabase {
// Populates `bucket_ids` with the buckets that have been modified since the // Populates `bucket_ids` with the buckets that have been modified since the
// `begin` and until the `end`. Returns whether the operation succeeded. // `begin` and until the `end`. Returns whether the operation succeeded.
bool GetBucketsModifiedBetween(blink::mojom::StorageType type, bool GetBucketsModifiedBetween(blink::mojom::StorageType type,
std::set<int64_t>* bucket_ids, std::set<BucketId>* bucket_ids,
base::Time begin, base::Time begin,
base::Time end); base::Time end);

@ -134,7 +134,7 @@ class QuotaDatabaseTest : public testing::TestWithParam<bool> {
quota_database->db_->GetCachedStatement(SQL_FROM_HERE, kSql)); quota_database->db_->GetCachedStatement(SQL_FROM_HERE, kSql));
ASSERT_TRUE(statement.is_valid()); ASSERT_TRUE(statement.is_valid());
statement.BindInt64(0, entry.bucket_id); statement.BindInt64(0, entry.bucket_id.value());
statement.BindString(1, entry.origin.GetURL().spec()); statement.BindString(1, entry.origin.GetURL().spec());
statement.BindInt(2, static_cast<int>(entry.type)); statement.BindInt(2, static_cast<int>(entry.type));
statement.BindString(3, entry.name); statement.BindString(3, entry.name);
@ -317,17 +317,21 @@ TEST_P(QuotaDatabaseTest, BucketLastAccessTimeLRU) {
EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true)); EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true));
std::set<url::Origin> exceptions; std::set<url::Origin> exceptions;
absl::optional<int64_t> bucket_id; absl::optional<BucketId> bucket_id;
EXPECT_TRUE(db.GetLRUBucket(kTemp, exceptions, nullptr, &bucket_id)); EXPECT_TRUE(db.GetLRUBucket(kTemp, exceptions, nullptr, &bucket_id));
EXPECT_FALSE(bucket_id.has_value()); EXPECT_FALSE(bucket_id.has_value());
// Insert bucket entries into BucketTable. // Insert bucket entries into BucketTable.
base::Time now(base::Time::Now()); base::Time now = base::Time::Now();
using Entry = QuotaDatabase::BucketTableEntry; using Entry = QuotaDatabase::BucketTableEntry;
Entry bucket1 = Entry(0, ToOrigin("http://a/"), kTemp, "A", 99, now, now); Entry bucket1 = Entry(BucketId(1), ToOrigin("http://example-a/"), kTemp,
Entry bucket2 = Entry(1, ToOrigin("http://b/"), kTemp, "B", 0, now, now); "bucket_a", 99, now, now);
Entry bucket3 = Entry(2, ToOrigin("http://c/"), kTemp, "C", 1, now, now); Entry bucket2 = Entry(BucketId(2), ToOrigin("http://example-b/"), kTemp,
Entry bucket4 = Entry(3, ToOrigin("http://d/"), kPerm, "D", 5, now, now); "bucket_b", 0, now, now);
Entry bucket3 = Entry(BucketId(3), ToOrigin("http://example-c/"), kTemp,
"bucket_c", 1, now, now);
Entry bucket4 = Entry(BucketId(4), ToOrigin("http://example-d/"), kPerm,
"bucket_d", 5, now, now);
Entry kTableEntries[] = {bucket1, bucket2, bucket3, bucket4}; Entry kTableEntries[] = {bucket1, bucket2, bucket3, bucket4};
AssignBucketTable(&db, kTableEntries); AssignBucketTable(&db, kTableEntries);
@ -484,18 +488,22 @@ TEST_P(QuotaDatabaseTest, BucketLastModifiedBetween) {
QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath()); QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true)); EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true));
std::set<int64_t> bucket_ids; std::set<BucketId> bucket_ids;
EXPECT_TRUE(db.GetBucketsModifiedBetween(kTemp, &bucket_ids, base::Time(), EXPECT_TRUE(db.GetBucketsModifiedBetween(kTemp, &bucket_ids, base::Time(),
base::Time::Max())); base::Time::Max()));
EXPECT_TRUE(bucket_ids.empty()); EXPECT_TRUE(bucket_ids.empty());
// Insert bucket entries into BucketTable. // Insert bucket entries into BucketTable.
base::Time now(base::Time::Now()); base::Time now = base::Time::Now();
using Entry = QuotaDatabase::BucketTableEntry; using Entry = QuotaDatabase::BucketTableEntry;
Entry bucket1 = Entry(0, ToOrigin("http://a/"), kTemp, "A", 0, now, now); Entry bucket1 = Entry(BucketId(1), ToOrigin("http://example-a/"), kTemp,
Entry bucket2 = Entry(1, ToOrigin("http://b/"), kTemp, "B", 0, now, now); "bucket_a", 0, now, now);
Entry bucket3 = Entry(2, ToOrigin("http://c/"), kTemp, "C", 0, now, now); Entry bucket2 = Entry(BucketId(2), ToOrigin("http://example-b/"), kTemp,
Entry bucket4 = Entry(3, ToOrigin("http://d/"), kPerm, "D", 0, now, now); "bucket_b", 0, now, now);
Entry bucket3 = Entry(BucketId(3), ToOrigin("http://example-c/"), kTemp,
"bucket_c", 0, now, now);
Entry bucket4 = Entry(BucketId(4), ToOrigin("http://example-d/"), kPerm,
"bucket_d", 0, now, now);
Entry kTableEntries[] = {bucket1, bucket2, bucket3, bucket4}; Entry kTableEntries[] = {bucket1, bucket2, bucket3, bucket4};
AssignBucketTable(&db, kTableEntries); AssignBucketTable(&db, kTableEntries);
@ -662,13 +670,15 @@ TEST_P(QuotaDatabaseTest, DumpQuotaTable) {
} }
TEST_P(QuotaDatabaseTest, DumpBucketTable) { TEST_P(QuotaDatabaseTest, DumpBucketTable) {
base::Time now(base::Time::Now()); base::Time now = base::Time::Now();
using Entry = QuotaDatabase::BucketTableEntry; using Entry = QuotaDatabase::BucketTableEntry;
Entry kTableEntries[] = { Entry kTableEntries[] = {
Entry(0, ToOrigin("http://go/"), kTemp, kDefaultBucket, 2147483647, now, Entry(BucketId(1), ToOrigin("http://go/"), kTemp, kDefaultBucket,
2147483647, now, now),
Entry(BucketId(2), ToOrigin("http://oo/"), kTemp, kDefaultBucket, 0, now,
now),
Entry(BucketId(3), ToOrigin("http://gle/"), kTemp, kDefaultBucket, 1, now,
now), now),
Entry(1, ToOrigin("http://oo/"), kTemp, kDefaultBucket, 0, now, now),
Entry(2, ToOrigin("http://gle/"), kTemp, kDefaultBucket, 1, now, now),
}; };
QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath()); QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
@ -685,8 +695,8 @@ TEST_P(QuotaDatabaseTest, DumpBucketTable) {
TEST_P(QuotaDatabaseTest, GetOriginInfo) { TEST_P(QuotaDatabaseTest, GetOriginInfo) {
const url::Origin kOrigin = ToOrigin("http://go/"); const url::Origin kOrigin = ToOrigin("http://go/");
using Entry = QuotaDatabase::BucketTableEntry; using Entry = QuotaDatabase::BucketTableEntry;
Entry kTableEntries[] = {Entry(0, kOrigin, kTemp, kDefaultBucket, 100, Entry kTableEntries[] = {Entry(BucketId(1), kOrigin, kTemp, kDefaultBucket,
base::Time(), base::Time())}; 100, base::Time(), base::Time())};
QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath()); QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true)); EXPECT_TRUE(LazyOpen(&db, /*create_if_needed=*/true));
@ -712,8 +722,8 @@ TEST_P(QuotaDatabaseTest, GetOriginInfo) {
TEST_P(QuotaDatabaseTest, GetBucketInfo) { TEST_P(QuotaDatabaseTest, GetBucketInfo) {
using Entry = QuotaDatabase::BucketTableEntry; using Entry = QuotaDatabase::BucketTableEntry;
Entry kTableEntries[] = {Entry(123, ToOrigin("http://go/"), kTemp, Entry kTableEntries[] = {Entry(BucketId(123), ToOrigin("http://go/"), kTemp,
"TestBucket", 100, base::Time(), "test_bucket", 100, base::Time(),
base::Time())}; base::Time())};
QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath()); QuotaDatabase db(use_in_memory_db() ? base::FilePath() : DbPath());
@ -734,7 +744,7 @@ TEST_P(QuotaDatabaseTest, GetBucketInfo) {
{ {
Entry entry; Entry entry;
EXPECT_FALSE(db.GetBucketInfo(456, &entry)); EXPECT_FALSE(db.GetBucketInfo(BucketId(456), &entry));
} }
} }