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); |