| Index: net/reporting/reporting_cache_unittest.cc
|
| diff --git a/net/reporting/reporting_cache_unittest.cc b/net/reporting/reporting_cache_unittest.cc
|
| index b6a6816c0d4cead149e692bc495ab21d2a2bb9e4..08cd2734ba43e75d820ba0bf7830307f5907d41a 100644
|
| --- a/net/reporting/reporting_cache_unittest.cc
|
| +++ b/net/reporting/reporting_cache_unittest.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/time/time.h"
|
| #include "base/values.h"
|
| #include "net/reporting/reporting_client.h"
|
| +#include "net/reporting/reporting_observer.h"
|
| #include "net/reporting/reporting_report.h"
|
| #include "net/reporting/reporting_test_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -19,8 +20,28 @@
|
| namespace net {
|
| namespace {
|
|
|
| +class TestReportingObserver : public ReportingObserver {
|
| + public:
|
| + TestReportingObserver() : cache_update_count_(0) {}
|
| +
|
| + void OnCacheUpdated() override { ++cache_update_count_; }
|
| +
|
| + int cache_update_count() const { return cache_update_count_; }
|
| +
|
| + private:
|
| + int cache_update_count_;
|
| +};
|
| +
|
| class ReportingCacheTest : public ReportingTestBase {
|
| protected:
|
| + ReportingCacheTest() : ReportingTestBase() {
|
| + context()->AddObserver(&observer_);
|
| + }
|
| +
|
| + ~ReportingCacheTest() override { context()->RemoveObserver(&observer_); }
|
| +
|
| + TestReportingObserver* observer() { return &observer_; }
|
| +
|
| const GURL kUrl1_ = GURL("https://origin1/path");
|
| const url::Origin kOrigin1_ = url::Origin(GURL("https://origin1/"));
|
| const url::Origin kOrigin2_ = url::Origin(GURL("https://origin2/"));
|
| @@ -32,6 +53,9 @@ class ReportingCacheTest : public ReportingTestBase {
|
| const base::TimeTicks kNow_ = base::TimeTicks::Now();
|
| const base::TimeTicks kExpires1_ = kNow_ + base::TimeDelta::FromDays(7);
|
| const base::TimeTicks kExpires2_ = kExpires1_ + base::TimeDelta::FromDays(7);
|
| +
|
| + private:
|
| + TestReportingObserver observer_;
|
| };
|
|
|
| TEST_F(ReportingCacheTest, Reports) {
|
| @@ -41,6 +65,7 @@ TEST_F(ReportingCacheTest, Reports) {
|
|
|
| cache()->AddReport(kUrl1_, kGroup1_, kType_,
|
| base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
|
| + EXPECT_EQ(1, observer()->cache_update_count());
|
|
|
| cache()->GetReports(&reports);
|
| ASSERT_EQ(1u, reports.size());
|
| @@ -56,6 +81,7 @@ TEST_F(ReportingCacheTest, Reports) {
|
| EXPECT_FALSE(cache()->IsReportDoomedForTesting(report));
|
|
|
| cache()->IncrementReportsAttempts(reports);
|
| + EXPECT_EQ(2, observer()->cache_update_count());
|
|
|
| cache()->GetReports(&reports);
|
| ASSERT_EQ(1u, reports.size());
|
| @@ -64,6 +90,7 @@ TEST_F(ReportingCacheTest, Reports) {
|
| EXPECT_EQ(1, report->attempts);
|
|
|
| cache()->RemoveReports(reports);
|
| + EXPECT_EQ(3, observer()->cache_update_count());
|
|
|
| cache()->GetReports(&reports);
|
| EXPECT_TRUE(reports.empty());
|
| @@ -74,12 +101,14 @@ TEST_F(ReportingCacheTest, RemoveAllReports) {
|
| base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
|
| cache()->AddReport(kUrl1_, kGroup1_, kType_,
|
| base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
|
| + EXPECT_EQ(2, observer()->cache_update_count());
|
|
|
| std::vector<const ReportingReport*> reports;
|
| cache()->GetReports(&reports);
|
| EXPECT_EQ(2u, reports.size());
|
|
|
| cache()->RemoveAllReports();
|
| + EXPECT_EQ(3, observer()->cache_update_count());
|
|
|
| cache()->GetReports(&reports);
|
| EXPECT_TRUE(reports.empty());
|
| @@ -88,6 +117,7 @@ TEST_F(ReportingCacheTest, RemoveAllReports) {
|
| TEST_F(ReportingCacheTest, RemovePendingReports) {
|
| cache()->AddReport(kUrl1_, kGroup1_, kType_,
|
| base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
|
| + EXPECT_EQ(1, observer()->cache_update_count());
|
|
|
| std::vector<const ReportingReport*> reports;
|
| cache()->GetReports(&reports);
|
| @@ -102,6 +132,7 @@ TEST_F(ReportingCacheTest, RemovePendingReports) {
|
| cache()->RemoveReports(reports);
|
| EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0]));
|
| EXPECT_TRUE(cache()->IsReportDoomedForTesting(reports[0]));
|
| + EXPECT_EQ(2, observer()->cache_update_count());
|
|
|
| // After removing report, future calls to GetReports should not return it.
|
| std::vector<const ReportingReport*> visible_reports;
|
| @@ -117,6 +148,7 @@ TEST_F(ReportingCacheTest, RemovePendingReports) {
|
| TEST_F(ReportingCacheTest, RemoveAllPendingReports) {
|
| cache()->AddReport(kUrl1_, kGroup1_, kType_,
|
| base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
|
| + EXPECT_EQ(1, observer()->cache_update_count());
|
|
|
| std::vector<const ReportingReport*> reports;
|
| cache()->GetReports(&reports);
|
| @@ -131,6 +163,7 @@ TEST_F(ReportingCacheTest, RemoveAllPendingReports) {
|
| cache()->RemoveAllReports();
|
| EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0]));
|
| EXPECT_TRUE(cache()->IsReportDoomedForTesting(reports[0]));
|
| + EXPECT_EQ(2, observer()->cache_update_count());
|
|
|
| // After removing report, future calls to GetReports should not return it.
|
| std::vector<const ReportingReport*> visible_reports;
|
| @@ -147,6 +180,7 @@ TEST_F(ReportingCacheTest, Endpoints) {
|
| cache()->SetClient(kOrigin1_, kEndpoint1_,
|
| ReportingClient::Subdomains::EXCLUDE, kGroup1_,
|
| kExpires1_);
|
| + EXPECT_EQ(1, observer()->cache_update_count());
|
|
|
| const ReportingClient* client =
|
| FindClientInCache(cache(), kOrigin1_, kEndpoint1_);
|
| @@ -159,6 +193,7 @@ TEST_F(ReportingCacheTest, Endpoints) {
|
|
|
| cache()->SetClient(kOrigin1_, kEndpoint1_,
|
| ReportingClient::Subdomains::INCLUDE, kGroup2, kExpires2_);
|
| + EXPECT_EQ(2, observer()->cache_update_count());
|
|
|
| client = FindClientInCache(cache(), kOrigin1_, kEndpoint1_);
|
| ASSERT_TRUE(client);
|
| @@ -169,6 +204,7 @@ TEST_F(ReportingCacheTest, Endpoints) {
|
| EXPECT_EQ(kExpires2_, client->expires);
|
|
|
| cache()->RemoveClients(std::vector<const ReportingClient*>{client});
|
| + EXPECT_EQ(3, observer()->cache_update_count());
|
|
|
| client = FindClientInCache(cache(), kOrigin1_, kEndpoint1_);
|
| EXPECT_FALSE(client);
|
| @@ -202,8 +238,10 @@ TEST_F(ReportingCacheTest, RemoveClientForOriginAndEndpoint) {
|
| cache()->SetClient(kOrigin2_, kEndpoint1_,
|
| ReportingClient::Subdomains::EXCLUDE, kGroup1_,
|
| kExpires1_);
|
| + EXPECT_EQ(3, observer()->cache_update_count());
|
|
|
| cache()->RemoveClientForOriginAndEndpoint(kOrigin1_, kEndpoint1_);
|
| + EXPECT_EQ(4, observer()->cache_update_count());
|
|
|
| std::vector<const ReportingClient*> clients;
|
| cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup1_, &clients);
|
| @@ -225,8 +263,10 @@ TEST_F(ReportingCacheTest, RemoveClientsForEndpoint) {
|
| cache()->SetClient(kOrigin2_, kEndpoint1_,
|
| ReportingClient::Subdomains::EXCLUDE, kGroup1_,
|
| kExpires1_);
|
| + EXPECT_EQ(3, observer()->cache_update_count());
|
|
|
| cache()->RemoveClientsForEndpoint(kEndpoint1_);
|
| + EXPECT_EQ(4, observer()->cache_update_count());
|
|
|
| std::vector<const ReportingClient*> clients;
|
| cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup1_, &clients);
|
| @@ -246,8 +286,10 @@ TEST_F(ReportingCacheTest, RemoveAllClients) {
|
| cache()->SetClient(kOrigin2_, kEndpoint2_,
|
| ReportingClient::Subdomains::EXCLUDE, kGroup1_,
|
| kExpires1_);
|
| + EXPECT_EQ(2, observer()->cache_update_count());
|
|
|
| cache()->RemoveAllClients();
|
| + EXPECT_EQ(3, observer()->cache_update_count());
|
|
|
| std::vector<const ReportingClient*> clients;
|
| cache()->GetClients(&clients);
|
|
|