Index: chrome/browser/metrics/metrics_service_unittest.cc |
diff --git a/chrome/browser/metrics/metrics_service_unittest.cc b/chrome/browser/metrics/metrics_service_unittest.cc |
index b42d789e29cf3cdf5092ba29b71b8f43257e68ce..398a05fe4ef64cf47144dddecb04022bc7fd38c7 100644 |
--- a/chrome/browser/metrics/metrics_service_unittest.cc |
+++ b/chrome/browser/metrics/metrics_service_unittest.cc |
@@ -135,6 +135,22 @@ class MetricsServiceTest : public testing::Test { |
DISALLOW_COPY_AND_ASSIGN(MetricsServiceTest); |
}; |
+class TestMetricsServiceObserver : public MetricsServiceObserver { |
+ public: |
+ TestMetricsServiceObserver(): observed_(0) {} |
+ virtual ~TestMetricsServiceObserver() {} |
+ |
+ virtual void OnDidCreateMetricsLog() OVERRIDE { |
+ ++observed_; |
+ } |
+ int observed() const { return observed_; } |
+ |
+ private: |
+ int observed_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestMetricsServiceObserver); |
+}; |
+ |
} // namespace |
TEST_F(MetricsServiceTest, IsPluginProcess) { |
@@ -304,3 +320,34 @@ TEST_F(MetricsServiceTest, CrashReportingEnabled) { |
EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled()); |
#endif // defined(GOOGLE_CHROME_BUILD) |
} |
+ |
+TEST_F(MetricsServiceTest, MetricsServiceObserver) { |
+ MetricsService service; |
+ TestMetricsServiceObserver observer1; |
+ TestMetricsServiceObserver observer2; |
+ |
+ service.AddObserver(&observer1); |
+ EXPECT_EQ(0, observer1.observed()); |
+ EXPECT_EQ(0, observer2.observed()); |
+ |
+ service.OpenNewLog(); |
+ EXPECT_EQ(1, observer1.observed()); |
+ EXPECT_EQ(0, observer2.observed()); |
+ service.log_manager_.FinishCurrentLog(); |
+ |
+ service.AddObserver(&observer2); |
+ |
+ service.OpenNewLog(); |
+ EXPECT_EQ(2, observer1.observed()); |
+ EXPECT_EQ(1, observer2.observed()); |
+ service.log_manager_.FinishCurrentLog(); |
+ |
+ service.RemoveObserver(&observer1); |
+ |
+ service.OpenNewLog(); |
+ EXPECT_EQ(2, observer1.observed()); |
+ EXPECT_EQ(2, observer2.observed()); |
+ service.log_manager_.FinishCurrentLog(); |
+ |
+ service.RemoveObserver(&observer2); |
+} |