Commit f386fa09 authored by Sebastien Marchand's avatar Sebastien Marchand Committed by Commit Bot

Move the Site Characteristics proto to RC/PM/persistence/site_data

Bug: 961336
Change-Id: Ib6d553da8733e54eabf98049be85812a10cdc83c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1602596Reviewed-by: default avatarChris Hamilton <chrisha@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#658830}
parent 0a8e4bcb
......@@ -1842,6 +1842,7 @@ jumbo_split_static_library("browser") {
"//chrome/browser/net:probe_message_proto",
"//chrome/browser/notifications",
"//chrome/browser/performance_manager:mojo_bindings",
"//chrome/browser/performance_manager:site_data_proto",
"//chrome/browser/profiling_host",
"//chrome/browser/push_messaging:budget_proto",
"//chrome/browser/resource_coordinator:mojo_bindings",
......@@ -3340,7 +3341,6 @@ jumbo_split_static_library("browser") {
"//chrome/browser/policy:path_parser",
"//chrome/browser/profile_resetter:profile_reset_report_proto",
"//chrome/browser/resource_coordinator:intervention_policy_database_proto",
"//chrome/browser/resource_coordinator:site_characteristics_proto",
"//chrome/browser/resource_coordinator:tab_metrics_event_proto",
"//chrome/browser/resource_coordinator/tab_ranker",
"//chrome/browser/resources:component_extension_resources",
......
......@@ -4,6 +4,7 @@
import("//chrome/common/features.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//third_party/protobuf/proto_library.gni")
mojom("mojo_bindings") {
sources = [
......@@ -14,3 +15,9 @@ mojom("mojo_bindings") {
"//url/mojom:url_mojom_gurl",
]
}
proto_library("site_data_proto") {
sources = [
"persistence/site_data/site_data.proto",
]
}
// Copyright 2018 The Chromium Authors. All rights reserved.
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
......@@ -8,7 +8,7 @@ option optimize_for = LITE_RUNTIME;
// Contains the information that we want to track about a given site feature.
// Next Id: 3
message SiteCharacteristicsFeatureProto {
message SiteDataFeatureProto {
// The cumulative observation time for this feature in seconds, set to 0 once
// this feature has been observed.
optional int64 observation_duration = 1;
......@@ -19,7 +19,7 @@ message SiteCharacteristicsFeatureProto {
// Contains decaying average performance measurement estimates.
// Next Id: 4
message SiteCharacteristicsPerformanceMeasurement {
message SiteDataPerformanceMeasurement {
// A decaying average of the CPU usage measurements. Units: microseconds.
optional float avg_cpu_usage_us = 1;
// A decaying average of the process footprint measurements. Units: kilobytes.
......@@ -29,21 +29,21 @@ message SiteCharacteristicsPerformanceMeasurement {
optional float avg_load_duration_us = 3;
};
// Defines the characteristics that we want to track about a given site.
// Defines the data that we want to track about a given site.
// Next Id: 7
message SiteCharacteristicsProto {
message SiteDataProto {
// The last time this site has been in the loaded state, in seconds since
// epoch.
optional uint32 last_loaded = 1;
// List of features that we're tracking.
optional SiteCharacteristicsFeatureProto updates_favicon_in_background = 2;
optional SiteCharacteristicsFeatureProto updates_title_in_background = 3;
optional SiteCharacteristicsFeatureProto uses_audio_in_background = 4;
optional SiteCharacteristicsFeatureProto uses_notifications_in_background = 5;
optional SiteDataFeatureProto updates_favicon_in_background = 2;
optional SiteDataFeatureProto updates_title_in_background = 3;
optional SiteDataFeatureProto uses_audio_in_background = 4;
optional SiteDataFeatureProto uses_notifications_in_background = 5;
// Load time performance measurement estimates. This maintains a decaying
// average of the resource usage of a page until shortly after it becomes
// idle.
optional SiteCharacteristicsPerformanceMeasurement load_time_estimates = 6;
optional SiteDataPerformanceMeasurement load_time_estimates = 6;
}
......@@ -12,12 +12,6 @@ proto_library("tab_metrics_event_proto") {
]
}
proto_library("site_characteristics_proto") {
sources = [
"site_characteristics.proto",
]
}
mojom("mojo_bindings") {
sources = [
"lifecycle_unit_state.mojom",
......
......@@ -134,11 +134,11 @@ class LevelDBSiteCharacteristicsDatabase::AsyncHelper {
// Implementations of the DB manipulation functions of
// LevelDBSiteCharacteristicsDatabase that run on a blocking sequence.
base::Optional<SiteCharacteristicsProto> ReadSiteCharacteristicsFromDB(
base::Optional<SiteDataProto> ReadSiteCharacteristicsFromDB(
const url::Origin& origin);
void WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto);
const SiteDataProto& site_characteristic_proto);
void RemoveSiteCharacteristicsFromDB(
const std::vector<url::Origin>& site_origin);
void ClearDatabase();
......@@ -216,7 +216,7 @@ void LevelDBSiteCharacteristicsDatabase::AsyncHelper::OpenOrCreateDatabase() {
}
}
base::Optional<SiteCharacteristicsProto>
base::Optional<SiteDataProto>
LevelDBSiteCharacteristicsDatabase::AsyncHelper::ReadSiteCharacteristicsFromDB(
const url::Origin& origin) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
......@@ -232,12 +232,12 @@ LevelDBSiteCharacteristicsDatabase::AsyncHelper::ReadSiteCharacteristicsFromDB(
s = db_->Get(read_options_, SerializeOriginIntoDatabaseKey(origin),
&protobuf_value);
}
base::Optional<SiteCharacteristicsProto> site_characteristic_proto;
base::Optional<SiteDataProto> site_characteristic_proto;
if (s.ok()) {
site_characteristic_proto = SiteCharacteristicsProto();
site_characteristic_proto = SiteDataProto();
if (!site_characteristic_proto->ParseFromString(protobuf_value)) {
site_characteristic_proto = base::nullopt;
DLOG(ERROR) << "Error while trying to parse a SiteCharacteristicsProto "
DLOG(ERROR) << "Error while trying to parse a SiteDataProto "
<< "protobuf.";
}
}
......@@ -247,7 +247,7 @@ LevelDBSiteCharacteristicsDatabase::AsyncHelper::ReadSiteCharacteristicsFromDB(
void LevelDBSiteCharacteristicsDatabase::AsyncHelper::
WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto) {
const SiteDataProto& site_characteristic_proto) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (!db_)
......@@ -426,7 +426,7 @@ void LevelDBSiteCharacteristicsDatabase::ReadSiteCharacteristicsFromDB(
void LevelDBSiteCharacteristicsDatabase::WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto) {
const SiteDataProto& site_characteristic_proto) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
blocking_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&LevelDBSiteCharacteristicsDatabase::
......
......@@ -38,7 +38,7 @@ class LevelDBSiteCharacteristicsDatabase
callback) override;
void WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto) override;
const SiteDataProto& site_characteristic_proto) override;
void RemoveSiteCharacteristicsFromDB(
const std::vector<url::Origin>& site_origins) override;
void ClearDatabase() override;
......
......@@ -16,7 +16,7 @@
#include "base/test/scoped_task_environment.h"
#include "base/test/test_file_util.h"
#include "build/build_config.h"
#include "chrome/browser/resource_coordinator/site_characteristics.pb.h"
#include "chrome/browser/performance_manager/persistence/site_data/site_data.pb.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/leveldatabase/leveldb_chrome.h"
#include "url/gurl.h"
......@@ -54,13 +54,13 @@ ScopedReadOnlyDirectory::ScopedReadOnlyDirectory(
EXPECT_FALSE(base::PathIsWritable(read_only_path_));
}
// Initialize a SiteCharacteristicsProto object with a test value (the same
// Initialize a SiteDataProto object with a test value (the same
// value is used to initialize all fields).
void InitSiteCharacteristicProto(SiteCharacteristicsProto* proto,
void InitSiteCharacteristicProto(SiteDataProto* proto,
::google::protobuf::int64 test_value) {
proto->set_last_loaded(test_value);
SiteCharacteristicsFeatureProto feature_proto;
SiteDataFeatureProto feature_proto;
feature_proto.set_observation_duration(test_value);
feature_proto.set_use_timestamp(test_value);
......@@ -105,13 +105,12 @@ class LevelDBSiteCharacteristicsDatabaseTest : public ::testing::Test {
// Try to read an entry from the database, returns true if the entry is
// present and false otherwise. |receiving_proto| will receive the protobuf
// corresponding to this entry on success.
bool ReadFromDB(const url::Origin& origin,
SiteCharacteristicsProto* receiving_proto) {
bool ReadFromDB(const url::Origin& origin, SiteDataProto* receiving_proto) {
EXPECT_TRUE(receiving_proto);
bool success = false;
auto init_callback = base::BindOnce(
[](SiteCharacteristicsProto* receiving_proto, bool* success,
base::Optional<SiteCharacteristicsProto> proto_opt) {
[](SiteDataProto* receiving_proto, bool* success,
base::Optional<SiteDataProto> proto_opt) {
*success = proto_opt.has_value();
if (proto_opt)
receiving_proto->CopyFrom(proto_opt.value());
......@@ -126,7 +125,7 @@ class LevelDBSiteCharacteristicsDatabaseTest : public ::testing::Test {
std::vector<url::Origin> AddDummyEntriesToDB(size_t num_entries) {
std::vector<url::Origin> site_origins;
for (size_t i = 0; i < num_entries; ++i) {
SiteCharacteristicsProto proto_temp;
SiteDataProto proto_temp;
std::string origin_str = base::StringPrintf("http://%zu.com", i);
InitSiteCharacteristicProto(&proto_temp,
static_cast<::google::protobuf::int64>(i));
......@@ -151,15 +150,15 @@ class LevelDBSiteCharacteristicsDatabaseTest : public ::testing::Test {
TEST_F(LevelDBSiteCharacteristicsDatabaseTest, InitAndStoreSiteCharacteristic) {
// Initializing an entry that doesn't exist in the database should fail.
SiteCharacteristicsProto early_read_proto;
SiteDataProto early_read_proto;
EXPECT_FALSE(ReadFromDB(kDummyOrigin, &early_read_proto));
// Add an entry to the database and make sure that we can read it back.
::google::protobuf::int64 test_value = 42;
SiteCharacteristicsProto stored_proto;
SiteDataProto stored_proto;
InitSiteCharacteristicProto(&stored_proto, test_value);
db_->WriteSiteCharacteristicsIntoDB(kDummyOrigin, stored_proto);
SiteCharacteristicsProto read_proto;
SiteDataProto read_proto;
EXPECT_TRUE(ReadFromDB(kDummyOrigin, &read_proto));
EXPECT_TRUE(read_proto.IsInitialized());
EXPECT_EQ(stored_proto.SerializeAsString(), read_proto.SerializeAsString());
......@@ -176,7 +175,7 @@ TEST_F(LevelDBSiteCharacteristicsDatabaseTest, RemoveEntries) {
WaitForAsyncOperationsToComplete();
// Verify that the origins were removed correctly.
SiteCharacteristicsProto proto_temp;
SiteDataProto proto_temp;
for (const auto& iter : site_origins_to_remove)
EXPECT_FALSE(ReadFromDB(iter, &proto_temp));
......@@ -216,7 +215,7 @@ TEST_F(LevelDBSiteCharacteristicsDatabaseTest, GetDatabaseSize) {
// Verify that the DB is still operational (see implementation detail
// for Windows).
SiteCharacteristicsProto read_proto;
SiteDataProto read_proto;
EXPECT_TRUE(ReadFromDB(site_origins[0], &read_proto));
}
......@@ -254,7 +253,7 @@ TEST_F(LevelDBSiteCharacteristicsDatabaseTest, DatabaseOpeningFailure) {
OpenDB(read_only_dir.GetReadOnlyPath());
EXPECT_FALSE(db_->DatabaseIsInitializedForTesting());
SiteCharacteristicsProto proto_temp;
SiteDataProto proto_temp;
EXPECT_FALSE(
ReadFromDB(url::Origin::Create(GURL("https://foo.com")), &proto_temp));
WaitForAsyncOperationsToComplete();
......@@ -281,7 +280,7 @@ TEST_F(LevelDBSiteCharacteristicsDatabaseTest, DBGetsClearedOnVersionUpgrade) {
// Add some dummy data to the database to ensure the database gets cleared
// when upgrading it to the new version.
::google::protobuf::int64 test_value = 42;
SiteCharacteristicsProto stored_proto;
SiteDataProto stored_proto;
InitSiteCharacteristicProto(&stored_proto, test_value);
db_->WriteSiteCharacteristicsIntoDB(kDummyOrigin, stored_proto);
WaitForAsyncOperationsToComplete();
......@@ -300,7 +299,7 @@ TEST_F(LevelDBSiteCharacteristicsDatabaseTest, DBGetsClearedOnVersionUpgrade) {
EXPECT_TRUE(base::StringToSizeT(db_metadata, &version));
EXPECT_EQ(LevelDBSiteCharacteristicsDatabase::kDbVersion, version);
SiteCharacteristicsProto proto_temp;
SiteDataProto proto_temp;
EXPECT_FALSE(ReadFromDB(kDummyOrigin, &proto_temp));
}
......
......@@ -32,11 +32,11 @@ base::TimeDelta GetTickDeltaSinceEpoch() {
return NowTicks() - base::TimeTicks::UnixEpoch();
}
// Returns all the SiteCharacteristicsFeatureProto elements contained in a
// SiteCharacteristicsProto protobuf object.
std::vector<SiteCharacteristicsFeatureProto*> GetAllFeaturesFromProto(
SiteCharacteristicsProto* proto) {
std::vector<SiteCharacteristicsFeatureProto*> ret(
// Returns all the SiteDataFeatureProto elements contained in a
// SiteDataProto protobuf object.
std::vector<SiteDataFeatureProto*> GetAllFeaturesFromProto(
SiteDataProto* proto) {
std::vector<SiteDataFeatureProto*> ret(
{proto->mutable_updates_favicon_in_background(),
proto->mutable_updates_title_in_background(),
proto->mutable_uses_audio_in_background(),
......@@ -223,7 +223,7 @@ LocalSiteCharacteristicsDataImpl::~LocalSiteCharacteristicsDataImpl() {
}
base::TimeDelta LocalSiteCharacteristicsDataImpl::FeatureObservationDuration(
const SiteCharacteristicsFeatureProto& feature_proto) const {
const SiteDataFeatureProto& feature_proto) const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Get the current observation duration value if available.
base::TimeDelta observation_time_for_feature;
......@@ -247,7 +247,7 @@ base::TimeDelta LocalSiteCharacteristicsDataImpl::FeatureObservationDuration(
// static:
void LocalSiteCharacteristicsDataImpl::IncrementFeatureObservationDuration(
SiteCharacteristicsFeatureProto* feature_proto,
SiteDataFeatureProto* feature_proto,
base::TimeDelta extra_observation_duration) {
if (!feature_proto->has_use_timestamp() ||
InternalRepresentationToTimeDelta(feature_proto->use_timestamp())
......@@ -287,7 +287,7 @@ void LocalSiteCharacteristicsDataImpl::
}
SiteFeatureUsage LocalSiteCharacteristicsDataImpl::GetFeatureUsage(
const SiteCharacteristicsFeatureProto& feature_proto,
const SiteDataFeatureProto& feature_proto,
const base::TimeDelta min_obs_time) const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
......@@ -308,7 +308,7 @@ SiteFeatureUsage LocalSiteCharacteristicsDataImpl::GetFeatureUsage(
}
void LocalSiteCharacteristicsDataImpl::NotifyFeatureUsage(
SiteCharacteristicsFeatureProto* feature_proto,
SiteDataFeatureProto* feature_proto,
const char* feature_name) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(IsLoaded());
......@@ -332,7 +332,7 @@ void LocalSiteCharacteristicsDataImpl::NotifyFeatureUsage(
}
void LocalSiteCharacteristicsDataImpl::OnInitCallback(
base::Optional<SiteCharacteristicsProto> db_site_characteristics) {
base::Optional<SiteDataProto> db_site_characteristics) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Check if the initialization has succeeded.
if (db_site_characteristics) {
......@@ -398,8 +398,7 @@ void LocalSiteCharacteristicsDataImpl::DecrementNumLoadedBackgroundTabs() {
FlushFeaturesObservationDurationToProto();
}
const SiteCharacteristicsProto&
LocalSiteCharacteristicsDataImpl::FlushStateToProto() {
const SiteDataProto& LocalSiteCharacteristicsDataImpl::FlushStateToProto() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Update the proto with the most current performance measurement averages.
if (cpu_usage_estimate_.num_datums() ||
......
......@@ -12,10 +12,10 @@
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "base/time/time.h"
#include "chrome/browser/performance_manager/persistence/site_data/site_data.pb.h"
#include "chrome/browser/resource_coordinator/exponential_moving_average.h"
#include "chrome/browser/resource_coordinator/local_site_characteristics_database.h"
#include "chrome/browser/resource_coordinator/local_site_characteristics_feature_usage.h"
#include "chrome/browser/resource_coordinator/site_characteristics.pb.h"
#include "chrome/browser/resource_coordinator/site_characteristics_tab_visibility.h"
#include "chrome/browser/resource_coordinator/tab_manager_features.h"
#include "url/origin.h"
......@@ -41,7 +41,7 @@ FORWARD_DECLARE_TEST(LocalSiteCharacteristicsDataImplTest,
LateAsyncReadDoesntBypassClearEvent);
// Internal class used to read/write site characteristics. This is a wrapper
// class around a SiteCharacteristicsProto object and offers various to query
// class around a SiteDataProto object and offers various to query
// and/or modify it. This class shouldn't be used directly, instead it should be
// created by a LocalSiteCharacteristicsDataStore that will serve reader and
// writer objects.
......@@ -126,7 +126,7 @@ class LocalSiteCharacteristicsDataImpl
site_characteristics_.last_loaded());
}
const SiteCharacteristicsProto& site_characteristics_for_testing() const {
const SiteDataProto& site_characteristics_for_testing() const {
return site_characteristics_;
}
......@@ -168,7 +168,7 @@ class LocalSiteCharacteristicsDataImpl
virtual ~LocalSiteCharacteristicsDataImpl();
// Helper functions to convert from/to the internal representation that is
// used to store TimeDelta values in the |SiteCharacteristicsProto| protobuf.
// used to store TimeDelta values in the |SiteDataProto| protobuf.
static base::TimeDelta InternalRepresentationToTimeDelta(
::google::protobuf::int64 value) {
return base::TimeDelta::FromSeconds(value);
......@@ -182,7 +182,7 @@ class LocalSiteCharacteristicsDataImpl
// since this site has been loaded (if applicable). If a feature has been
// used then it returns 0.
base::TimeDelta FeatureObservationDuration(
const SiteCharacteristicsFeatureProto& feature_proto) const;
const SiteDataFeatureProto& feature_proto) const;
private:
FRIEND_TEST_ALL_PREFIXES(LocalSiteCharacteristicsDataImplTest,
......@@ -202,7 +202,7 @@ class LocalSiteCharacteristicsDataImpl
// Add |extra_observation_duration| to the observation window of a given
// feature if it hasn't been used yet, do nothing otherwise.
static void IncrementFeatureObservationDuration(
SiteCharacteristicsFeatureProto* feature_proto,
SiteDataFeatureProto* feature_proto,
base::TimeDelta extra_observation_duration);
// Clear all the past observations about this site and invalidate the pending
......@@ -210,28 +210,26 @@ class LocalSiteCharacteristicsDataImpl
void ClearObservationsAndInvalidateReadOperation();
// Returns the usage of |site_feature| for this site.
SiteFeatureUsage GetFeatureUsage(
const SiteCharacteristicsFeatureProto& feature_proto,
const base::TimeDelta min_obs_time) const;
SiteFeatureUsage GetFeatureUsage(const SiteDataFeatureProto& feature_proto,
const base::TimeDelta min_obs_time) const;
// Helper function to update a given |SiteCharacteristicsFeatureProto| when a
// Helper function to update a given |SiteDataFeatureProto| when a
// feature gets used.
void NotifyFeatureUsage(SiteCharacteristicsFeatureProto* feature_proto,
void NotifyFeatureUsage(SiteDataFeatureProto* feature_proto,
const char* feature_name);
bool IsLoaded() const { return loaded_tabs_count_ > 0U; }
// Callback that needs to be called by the database once it has finished
// trying to read the protobuf.
void OnInitCallback(
base::Optional<SiteCharacteristicsProto> site_characteristic_proto);
void OnInitCallback(base::Optional<SiteDataProto> site_characteristic_proto);
// Decrement the |loaded_tabs_in_background_count_| counter and update the
// local feature observation durations if necessary.
void DecrementNumLoadedBackgroundTabs();
// Flush any state that's maintained in member variables to the proto.
const SiteCharacteristicsProto& FlushStateToProto();
const SiteDataProto& FlushStateToProto();
// Updates the proto with the current total observation duration and updates
// |background_session_begin_| to NowTicks().
......@@ -241,7 +239,7 @@ class LocalSiteCharacteristicsDataImpl
// This site's characteristics, contains the features and other values are
// measured.
SiteCharacteristicsProto site_characteristics_;
SiteDataProto site_characteristics_;
// The in-memory storage for the moving performance averages.
ExponentialMovingAverage load_duration_; // microseconds.
......
......@@ -37,7 +37,7 @@ class TestLocalSiteCharacteristicsDataImpl
: LocalSiteCharacteristicsDataImpl(origin, delegate, database) {}
base::TimeDelta FeatureObservationTimestamp(
const SiteCharacteristicsFeatureProto& feature_proto) {
const SiteDataFeatureProto& feature_proto) {
return InternalRepresentationToTimeDelta(feature_proto.use_timestamp());
}
......@@ -65,25 +65,25 @@ class MockLocalSiteCharacteristicsDatabase
ReadSiteCharacteristicsFromDBCallback&));
MOCK_METHOD2(WriteSiteCharacteristicsIntoDB,
void(const url::Origin&, const SiteCharacteristicsProto&));
void(const url::Origin&, const SiteDataProto&));
private:
DISALLOW_COPY_AND_ASSIGN(MockLocalSiteCharacteristicsDatabase);
};
// Returns a SiteCharacteristicsFeatureProto that indicates that a feature
// Returns a SiteDataFeatureProto that indicates that a feature
// hasn't been used.
SiteCharacteristicsFeatureProto GetUnusedFeatureProto() {
SiteCharacteristicsFeatureProto unused_feature_proto;
SiteDataFeatureProto GetUnusedFeatureProto() {
SiteDataFeatureProto unused_feature_proto;
unused_feature_proto.set_observation_duration(1U);
unused_feature_proto.set_use_timestamp(0U);
return unused_feature_proto;
}
// Returns a SiteCharacteristicsFeatureProto that indicates that a feature
// Returns a SiteDataFeatureProto that indicates that a feature
// has been used.
SiteCharacteristicsFeatureProto GetUsedFeatureProto() {
SiteCharacteristicsFeatureProto used_feature_proto;
SiteDataFeatureProto GetUsedFeatureProto() {
SiteDataFeatureProto used_feature_proto;
used_feature_proto.set_observation_duration(0U);
used_feature_proto.set_use_timestamp(1U);
return used_feature_proto;
......@@ -316,7 +316,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest, AllDurationGetSavedOnUnload) {
local_site_data->NotifyUsesAudioInBackground();
local_site_data->NotifySiteUnloaded(TabVisibility::kBackground);
SiteCharacteristicsProto expected_proto;
SiteDataProto expected_proto;
auto expected_last_loaded_time =
TestLocalSiteCharacteristicsDataImpl::TimeDeltaToInternalRepresentation(
......@@ -327,7 +327,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest, AllDurationGetSavedOnUnload) {
// Features that haven't been used should have an observation duration of
// |kIntervalInternalRepresentation| and an observation timestamp equal to
// zero.
SiteCharacteristicsFeatureProto unused_feature_proto;
SiteDataFeatureProto unused_feature_proto;
unused_feature_proto.set_observation_duration(
kIntervalInternalRepresentation);
......@@ -342,7 +342,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest, AllDurationGetSavedOnUnload) {
// be equal to zero, and its observation timestamp should be equal to the last
// loaded time in this case (as this feature has been used right before
// unloading).
SiteCharacteristicsFeatureProto used_feature_proto;
SiteDataFeatureProto used_feature_proto;
used_feature_proto.set_use_timestamp(expected_last_loaded_time);
expected_proto.mutable_uses_audio_in_background()->CopyFrom(
used_feature_proto);
......@@ -439,10 +439,8 @@ TEST_F(LocalSiteCharacteristicsDataImplTest,
// Initialize a fake protobuf that indicates that this site updates its title
// while in background and set a fake last loaded time (this should be
// overriden once the callback runs).
base::Optional<SiteCharacteristicsProto> test_proto =
SiteCharacteristicsProto();
SiteCharacteristicsFeatureProto unused_feature_proto =
GetUnusedFeatureProto();
base::Optional<SiteDataProto> test_proto = SiteDataProto();
SiteDataFeatureProto unused_feature_proto = GetUnusedFeatureProto();
test_proto->mutable_updates_title_in_background()->CopyFrom(
GetUsedFeatureProto());
test_proto->mutable_updates_favicon_in_background()->CopyFrom(
......@@ -488,7 +486,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest,
EXPECT_CALL(mock_db,
WriteSiteCharacteristicsIntoDB(::testing::_, ::testing::_))
.WillOnce(::testing::Invoke(
[](const url::Origin& origin, const SiteCharacteristicsProto& proto) {
[](const url::Origin& origin, const SiteDataProto& proto) {
ASSERT_TRUE(proto.has_load_time_estimates());
const auto& estimates = proto.load_time_estimates();
ASSERT_TRUE(estimates.has_avg_load_duration_us());
......@@ -627,8 +625,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest,
EXPECT_EQ(0u, local_site_data->cpu_usage_estimate().num_datums());
EXPECT_EQ(0u, local_site_data->private_footprint_kb_estimate().num_datums());
base::Optional<SiteCharacteristicsProto> test_proto =
SiteCharacteristicsProto();
base::Optional<SiteDataProto> test_proto = SiteDataProto();
// Run the callback to indicate that the initialization has completed.
std::move(read_cb).Run(test_proto);
......@@ -646,7 +643,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest,
EXPECT_CALL(mock_db,
WriteSiteCharacteristicsIntoDB(::testing::_, ::testing::_))
.WillOnce(::testing::Invoke(
[](const url::Origin& origin, const SiteCharacteristicsProto& proto) {
[](const url::Origin& origin, const SiteDataProto& proto) {
ASSERT_FALSE(proto.has_load_time_estimates());
}));
......@@ -712,8 +709,7 @@ TEST_F(LocalSiteCharacteristicsDataImplTest, DataLoadedCallbackInvoked) {
base::BindLambdaForTesting([&]() { callback_invoked = true; }));
// Run the callback to indicate that the initialization has completed.
base::Optional<SiteCharacteristicsProto> test_proto =
SiteCharacteristicsProto();
base::Optional<SiteDataProto> test_proto = SiteDataProto();
std::move(read_cb).Run(test_proto);
EXPECT_TRUE(callback_invoked);
......
......@@ -40,18 +40,17 @@ class MockLocalSiteCharacteristicsDatabase
ReadSiteCharacteristicsFromDBCallback&));
MOCK_METHOD2(WriteSiteCharacteristicsIntoDB,
void(const url::Origin&, const SiteCharacteristicsProto&));
void(const url::Origin&, const SiteDataProto&));
private:
DISALLOW_COPY_AND_ASSIGN(MockLocalSiteCharacteristicsDatabase);
};
void InitializeSiteCharacteristicsProto(
SiteCharacteristicsProto* site_characteristics) {
void InitializeSiteDataProto(SiteDataProto* site_characteristics) {
DCHECK(site_characteristics);
site_characteristics->set_last_loaded(42);
SiteCharacteristicsFeatureProto used_feature_proto;
SiteDataFeatureProto used_feature_proto;
used_feature_proto.set_observation_duration(0U);
used_feature_proto.set_use_timestamp(1U);
......@@ -152,14 +151,13 @@ TEST_F(LocalSiteCharacteristicsDataReaderTest,
// Override the read callback to simulate a successful read from the
// database.
SiteCharacteristicsProto proto = {};
InitializeSiteCharacteristicsProto(&proto);
SiteDataProto proto = {};
InitializeSiteDataProto(&proto);
auto read_from_db_mock_impl =
[&](const url::Origin& origin,
LocalSiteCharacteristicsDatabase::
ReadSiteCharacteristicsFromDBCallback& callback) {
std::move(callback).Run(
base::Optional<SiteCharacteristicsProto>(proto));
std::move(callback).Run(base::Optional<SiteDataProto>(proto));
};
EXPECT_CALL(database, OnReadSiteCharacteristicsFromDB(
......
......@@ -103,14 +103,13 @@ void LocalSiteCharacteristicsDataStore::GetDatabaseSize(
bool LocalSiteCharacteristicsDataStore::GetDataForOrigin(
const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteCharacteristicsProto>* data) {
std::unique_ptr<SiteDataProto>* data) {
DCHECK_NE(nullptr, data);
const auto it = origin_data_map_.find(origin);
if (it == origin_data_map_.end())
return false;
std::unique_ptr<SiteCharacteristicsProto> ret =
std::make_unique<SiteCharacteristicsProto>();
std::unique_ptr<SiteDataProto> ret = std::make_unique<SiteDataProto>();
ret->CopyFrom(it->second->FlushStateToProto());
*is_dirty = it->second->is_dirty();
*data = std::move(ret);
......
......@@ -63,10 +63,9 @@ class LocalSiteCharacteristicsDataStore
const char* GetDataStoreName() override;
std::vector<url::Origin> GetAllInMemoryOrigins() override;
void GetDatabaseSize(DatabaseSizeCallback on_have_data) override;
bool GetDataForOrigin(
const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteCharacteristicsProto>* data) override;
bool GetDataForOrigin(const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteDataProto>* data) override;
LocalSiteCharacteristicsDataStore* GetDataStore() override;
private:
......
......@@ -12,7 +12,7 @@
#include "base/callback.h"
#include "base/optional.h"
#include "base/supports_user_data.h"
#include "chrome/browser/resource_coordinator/site_characteristics.pb.h"
#include "chrome/browser/performance_manager/persistence/site_data/site_data.pb.h"
#include "url/origin.h"
class Profile;
......@@ -53,10 +53,9 @@ class LocalSiteCharacteristicsDataStoreInspector {
// On return |data| contains the available data for |origin| if available,
// and |is_dirty| is true if the entry needs flushing to disk.
// Returns true if an entry exists for |origin|.
virtual bool GetDataForOrigin(
const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteCharacteristicsProto>* data) = 0;
virtual bool GetDataForOrigin(const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteDataProto>* data) = 0;
// Retrieves the data store this inspector is associated with.
virtual SiteCharacteristicsDataStore* GetDataStore() = 0;
......
......@@ -298,7 +298,7 @@ TEST_F(LocalSiteCharacteristicsDataStoreTest, InspectorWorks) {
// We expect an empty data store at the outset.
EXPECT_EQ(0U, inspector->GetAllInMemoryOrigins().size());
std::unique_ptr<SiteCharacteristicsProto> data;
std::unique_ptr<SiteDataProto> data;
bool is_dirty = false;
EXPECT_FALSE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
EXPECT_FALSE(is_dirty);
......
......@@ -81,7 +81,7 @@ void NoopLocalSiteCharacteristicsDatabase::ReadSiteCharacteristicsFromDB(
void NoopLocalSiteCharacteristicsDatabase::WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto) {}
const SiteDataProto& site_characteristic_proto) {}
void NoopLocalSiteCharacteristicsDatabase::RemoveSiteCharacteristicsFromDB(
const std::vector<url::Origin>& site_origins) {}
......
......@@ -78,7 +78,7 @@ class NoopLocalSiteCharacteristicsDatabase
ReadSiteCharacteristicsFromDBCallback callback) override;
void WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto) override;
const SiteDataProto& site_characteristic_proto) override;
void RemoveSiteCharacteristicsFromDB(
const std::vector<url::Origin>& site_origins) override;
void ClearDatabase() override;
......
......@@ -10,11 +10,9 @@
#include "base/callback.h"
#include "base/macros.h"
#include "base/optional.h"
#include "chrome/browser/resource_coordinator/site_characteristics.pb.h"
#include "chrome/browser/performance_manager/persistence/site_data/site_data.pb.h"
#include "url/origin.h"
class SiteCharacteristicsProto;
namespace resource_coordinator {
// Interface for a local site characteristic database.
......@@ -24,7 +22,7 @@ class LocalSiteCharacteristicsDatabase {
// |site_characteristic_proto| should be equal to base::nullopt if the
// initialization has failed.
using ReadSiteCharacteristicsFromDBCallback = base::OnceCallback<void(
base::Optional<SiteCharacteristicsProto> site_characteristic_proto)>;
base::Optional<SiteDataProto> site_characteristic_proto)>;
using GetDatabaseSizeCallback =
base::OnceCallback<void(base::Optional<int64_t> num_rows,
base::Optional<int64_t> on_disk_size_kb)>;
......@@ -43,7 +41,7 @@ class LocalSiteCharacteristicsDatabase {
// if it does.
virtual void WriteSiteCharacteristicsIntoDB(
const url::Origin& origin,
const SiteCharacteristicsProto& site_characteristic_proto) = 0;
const SiteDataProto& site_characteristic_proto) = 0;
// Removes some entries from the database.
virtual void RemoveSiteCharacteristicsFromDB(
......
......@@ -70,8 +70,8 @@ base::TimeDelta GetLongestGracePeriod() {
params.audio_usage_grace_period});
}
// Returns the SiteCharacteristicsProto that backs |reader|.
const SiteCharacteristicsProto* GetSiteCharacteristicsProtoFromReader(
// Returns the SiteDataProto that backs |reader|.
const SiteDataProto* GetSiteDataProtoFromReader(
SiteCharacteristicsDataReader* reader) {
const internal::LocalSiteCharacteristicsDataImpl* impl =
static_cast<LocalSiteCharacteristicsDataReader*>(reader)
......@@ -599,8 +599,8 @@ IN_PROC_BROWSER_TEST_F(LocalSiteCharacteristicsDatabaseTest,
auto reader =
GetReaderForOrigin(browser()->profile(), url::Origin::Create(test_url));
const SiteCharacteristicsProto* site_characteristics =
GetSiteCharacteristicsProtoFromReader(reader.get());
const SiteDataProto* site_characteristics =
GetSiteDataProtoFromReader(reader.get());
EXPECT_EQ(0, site_characteristics->updates_title_in_background()
.observation_duration());
......@@ -623,8 +623,8 @@ IN_PROC_BROWSER_TEST_F(LocalSiteCharacteristicsDatabaseTest,
auto reader =
GetReaderForOrigin(browser()->profile(), url::Origin::Create(test_url));
const SiteCharacteristicsProto* site_characteristics =
GetSiteCharacteristicsProtoFromReader(reader.get());
const SiteDataProto* site_characteristics =
GetSiteDataProtoFromReader(reader.get());
auto observation_duration =
site_characteristics->updates_title_in_background()
......@@ -640,7 +640,7 @@ IN_PROC_BROWSER_TEST_F(LocalSiteCharacteristicsDatabaseTest,
reader =
GetReaderForOrigin(browser()->profile(), url::Origin::Create(test_url));
site_characteristics = GetSiteCharacteristicsProtoFromReader(reader.get());
site_characteristics = GetSiteDataProtoFromReader(reader.get());
EXPECT_GE(observation_duration,
site_characteristics->updates_title_in_background()
......
......@@ -73,7 +73,7 @@ void LocalSiteCharacteristicsNonRecordingDataStore::GetDatabaseSize(
bool LocalSiteCharacteristicsNonRecordingDataStore::GetDataForOrigin(
const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteCharacteristicsProto>* data) {
std::unique_ptr<SiteDataProto>* data) {
if (!data_store_inspector_)
return false;
......
......@@ -44,10 +44,9 @@ class LocalSiteCharacteristicsNonRecordingDataStore
const char* GetDataStoreName() override;
std::vector<url::Origin> GetAllInMemoryOrigins() override;
void GetDatabaseSize(DatabaseSizeCallback on_have_data) override;
bool GetDataForOrigin(
const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteCharacteristicsProto>* data) override;
bool GetDataForOrigin(const url::Origin& origin,
bool* is_dirty,
std::unique_ptr<SiteDataProto>* data) override;
SiteCharacteristicsDataStore* GetDataStore() override;
private:
......
......@@ -108,7 +108,7 @@ TEST_F(LocalSiteCharacteristicsNonRecordingDataStoreTest, InspectorWorks) {
// We expect an empty data store at the outset.
EXPECT_EQ(0U, inspector->GetAllInMemoryOrigins().size());
std::unique_ptr<SiteCharacteristicsProto> data;
std::unique_ptr<SiteDataProto> data;
bool is_dirty = false;
EXPECT_FALSE(inspector->GetDataForOrigin(kTestOrigin, &is_dirty, &data));
EXPECT_FALSE(is_dirty);
......
......@@ -43,7 +43,8 @@ struct SiteCharacteristicsDatabaseSize {
};
// The data stored for a given origin, this should mirror the
// SiteCharacteristicsProto structure in site_characteristics.proto.
// SiteDataProto structure in
// performance_manager/persistence/site_data/site_data.proto.
struct SiteCharacteristicsDatabaseValue {
// The last time this site has been in the loaded state, in seconds since
// epoch.
......
......@@ -90,7 +90,7 @@ double GetSiteEngagementScore(content::WebContents* contents) {
}
mojom::SiteCharacteristicsFeaturePtr ConvertFeatureFromProto(
const SiteCharacteristicsFeatureProto& proto) {
const SiteDataFeatureProto& proto) {
mojom::SiteCharacteristicsFeaturePtr feature =
mojom::SiteCharacteristicsFeature::New();
......@@ -110,7 +110,7 @@ mojom::SiteCharacteristicsFeaturePtr ConvertFeatureFromProto(
}
mojom::SiteCharacteristicsDatabaseEntryPtr ConvertEntryFromProto(
SiteCharacteristicsProto* proto) {
SiteDataProto* proto) {
mojom::SiteCharacteristicsDatabaseValuePtr value =
mojom::SiteCharacteristicsDatabaseValue::New();
......@@ -345,7 +345,7 @@ void DiscardsDetailsProviderImpl::GetSiteCharacteristicsDatabase(
for (const url::Origin& origin : in_memory_origins) {
// Get the data for this origin and convert it from proto to the
// corresponding mojo structure.
std::unique_ptr<SiteCharacteristicsProto> proto;
std::unique_ptr<SiteDataProto> proto;
bool is_dirty = false;
if (data_store_inspector_->GetDataForOrigin(origin, &is_dirty, &proto)) {
auto entry = ConvertEntryFromProto(proto.get());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment