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..3cbafcfce11617a129ffad1f153db3964e0e2993 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() { return observed_; } |
+ |
+ private: |
+ int observed_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestMetricsServiceObserver); |
+}; |
+ |
} // namespace |
TEST_F(MetricsServiceTest, IsPluginProcess) { |
@@ -304,3 +320,25 @@ TEST_F(MetricsServiceTest, CrashReportingEnabled) { |
EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled()); |
#endif // defined(GOOGLE_CHROME_BUILD) |
} |
+ |
+TEST_F(MetricsServiceTest, MetricsServiceObserver) { |
bengr
2014/05/07 16:03:58
You should also test with multiple observers.
bolian
2014/05/07 18:11:44
Done.
|
+ MetricsService service; |
+ TestMetricsServiceObserver observer; |
+ |
+ service.AddObserver(&observer); |
+ EXPECT_EQ(0, observer.observed()); |
+ |
+ service.OpenNewLog(); |
+ EXPECT_EQ(1, observer.observed()); |
+ service.log_manager_.FinishCurrentLog(); |
+ |
+ service.OpenNewLog(); |
+ EXPECT_EQ(2, observer.observed()); |
+ service.log_manager_.FinishCurrentLog(); |
+ |
+ service.RemoveObserver(&observer); |
+ |
+ service.OpenNewLog(); |
+ EXPECT_EQ(2, observer.observed()); |
+ service.log_manager_.FinishCurrentLog(); |
+} |