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