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

Side by Side Diff: base/trace_event/trace_event_unittest.cc

Issue 1923193002: Protect TraceLog::enabled_state_observer_list_ with a dedicated lock (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: New policy on EnabledStateObserver's callbacks, and remove TraceEventTestFixture.SelfRemovingObserv… Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | base/trace_event/trace_log.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/trace_event/trace_event.h" 5 #include "base/trace_event/trace_event.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), 1129 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
1130 TraceLog::RECORDING_MODE); 1130 TraceLog::RECORDING_MODE);
1131 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 1131 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
1132 1132
1133 TraceLog::GetInstance()->SetDisabled(); 1133 TraceLog::GetInstance()->SetDisabled();
1134 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 1134 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
1135 1135
1136 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 1136 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
1137 } 1137 }
1138 1138
1139 // Tests that a state observer can remove itself during a callback.
1140 class SelfRemovingEnabledStateObserver
1141 : public TraceLog::EnabledStateObserver {
1142 public:
1143 SelfRemovingEnabledStateObserver() {}
1144 ~SelfRemovingEnabledStateObserver() override {}
1145
1146 // TraceLog::EnabledStateObserver overrides:
1147 void OnTraceLogEnabled() override {}
1148
1149 void OnTraceLogDisabled() override {
1150 TraceLog::GetInstance()->RemoveEnabledStateObserver(this);
1151 }
1152 };
1153
1154 TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
Primiano Tucci (use gerrit) 2016/04/27 13:50:21 Hmm why are we removing this test? I assume it was
Xiaocheng 2016/04/27 14:18:13 I haven't seen any real use case in the code base
1155 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
1156
1157 SelfRemovingEnabledStateObserver observer;
1158 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
1159 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest());
1160
1161 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
1162 TraceLog::RECORDING_MODE);
1163 TraceLog::GetInstance()->SetDisabled();
1164 // The observer removed itself on disable.
1165 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
1166 }
1167
1168 bool IsNewTrace() { 1139 bool IsNewTrace() {
1169 bool is_new_trace; 1140 bool is_new_trace;
1170 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); 1141 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
1171 return is_new_trace; 1142 return is_new_trace;
1172 } 1143 }
1173 1144
1174 TEST_F(TraceEventTestFixture, NewTraceRecording) { 1145 TEST_F(TraceEventTestFixture, NewTraceRecording) {
1175 ASSERT_FALSE(IsNewTrace()); 1146 ASSERT_FALSE(IsNewTrace());
1176 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), 1147 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
1177 TraceLog::RECORDING_MODE); 1148 TraceLog::RECORDING_MODE);
(...skipping 1916 matching lines...) Expand 10 before | Expand all | Expand 10 after
3094 } 3065 }
3095 3066
3096 TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) { 3067 TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) {
3097 const char filter[] = "DELAY(test.Delay;16;oneshot)"; 3068 const char filter[] = "DELAY(test.Delay;16;oneshot)";
3098 TraceConfig config(filter, ""); 3069 TraceConfig config(filter, "");
3099 EXPECT_EQ(filter, config.ToCategoryFilterString()); 3070 EXPECT_EQ(filter, config.ToCategoryFilterString());
3100 } 3071 }
3101 3072
3102 } // namespace trace_event 3073 } // namespace trace_event
3103 } // namespace base 3074 } // namespace base
OLDNEW
« 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