Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1379)

Unified Diff: base/trace_event/trace_event_unittest.cc

Issue 2327333002: Add OnBeforeTraceLogDisabled notification to EnabledStateObserver (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/trace_event/trace_log.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/trace_event/trace_event_unittest.cc
diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc
index ace98fdf6e837c679a93cb87e3eb099f4dea6c6c..ac7983426c960d5ec6efaf2b2b923f6d1b0e5cc8 100644
--- a/base/trace_event/trace_event_unittest.cc
+++ b/base/trace_event/trace_event_unittest.cc
@@ -1092,6 +1092,7 @@ class MockEnabledStateChangedObserver :
public:
MOCK_METHOD0(OnTraceLogEnabled, void());
MOCK_METHOD0(OnTraceLogDisabled, void());
+ MOCK_METHOD0(OnBeforeTraceLogDisabled, void());
};
TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
@@ -1119,6 +1120,7 @@ TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
EXPECT_CALL(observer, OnTraceLogEnabled())
.Times(0);
+ EXPECT_CALL(observer, OnBeforeTraceLogDisabled()).Times(0);
EXPECT_CALL(observer, OnTraceLogDisabled())
.Times(0);
TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
@@ -1142,6 +1144,7 @@ TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) {
EXPECT_CALL(observer, OnTraceLogEnabled())
.Times(0);
+ EXPECT_CALL(observer, OnBeforeTraceLogDisabled()).Times(1);
EXPECT_CALL(observer, OnTraceLogDisabled())
.Times(1);
TraceLog::GetInstance()->SetDisabled();
@@ -1159,6 +1162,7 @@ TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
MockEnabledStateChangedObserver observer;
TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
+ EXPECT_CALL(observer, OnBeforeTraceLogDisabled()).Times(1);
EXPECT_CALL(observer, OnTraceLogDisabled())
.Times(1);
TraceLog::GetInstance()->SetDisabled();
@@ -1180,6 +1184,10 @@ class AfterStateChangeEnabledStateObserver
EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
}
+ void OnBeforeTraceLogDisabled() override {
+ EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
+ }
+
void OnTraceLogDisabled() override {
EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
}
@@ -1228,6 +1236,28 @@ TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
}
+// Tests that an event can be fired during OnBeforeTraceLogDisabled.
+class EventWritingStateObserver : public TraceLog::EnabledStateObserver {
+ public:
+ // TraceLog::EnabledStateObserver overrides:
+ void OnTraceLogEnabled() override {}
+ void OnTraceLogDisabled() override {}
+ void OnBeforeTraceLogDisabled() override {
+ TRACE_EVENT_INSTANT0("x", "y", TRACE_EVENT_SCOPE_THREAD);
+ }
+};
+
+TEST_F(TraceEventTestFixture, WriteTraceEventOnBeforeTraceLogDisabled) {
+ EventWritingStateObserver observer;
+ TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
+
+ TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
+ TraceLog::RECORDING_MODE);
+ EndTraceAndFlush();
+ TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
+ EXPECT_TRUE(FindNamePhase("y", "I"));
+}
+
bool IsNewTrace() {
bool is_new_trace;
TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
« no previous file with comments | « no previous file | base/trace_event/trace_log.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698