1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/trace_event/trace_event_filter_test_utils.h" 6 7 #include "base/logging.h" 8 9 namespace base { 10 namespace trace_event { 11 12 namespace { 13 TestEventFilter::HitsCounter* g_hits_counter; 14 } // namespace; 15 16 // static 17 const char TestEventFilter::kName[] = "testing_predicate"; 18 bool TestEventFilter::filter_return_value_; 19 20 // static Factory(const std::string & predicate_name)21std::unique_ptr<TraceEventFilter> TestEventFilter::Factory( 22 const std::string& predicate_name) { 23 std::unique_ptr<TraceEventFilter> res; 24 if (predicate_name == kName) 25 res.reset(new TestEventFilter()); 26 return res; 27 } 28 29 TestEventFilter::TestEventFilter() = default; 30 TestEventFilter::~TestEventFilter() = default; 31 FilterTraceEvent(const TraceEvent & trace_event) const32bool TestEventFilter::FilterTraceEvent(const TraceEvent& trace_event) const { 33 if (g_hits_counter) 34 g_hits_counter->filter_trace_event_hit_count++; 35 return filter_return_value_; 36 } 37 EndEvent(const char * category_name,const char * name) const38void TestEventFilter::EndEvent(const char* category_name, 39 const char* name) const { 40 if (g_hits_counter) 41 g_hits_counter->end_event_hit_count++; 42 } 43 HitsCounter()44TestEventFilter::HitsCounter::HitsCounter() { 45 Reset(); 46 DCHECK(!g_hits_counter); 47 g_hits_counter = this; 48 } 49 ~HitsCounter()50TestEventFilter::HitsCounter::~HitsCounter() { 51 DCHECK(g_hits_counter); 52 g_hits_counter = nullptr; 53 } 54 Reset()55void TestEventFilter::HitsCounter::Reset() { 56 filter_trace_event_hit_count = 0; 57 end_event_hit_count = 0; 58 } 59 60 } // namespace trace_event 61 } // namespace base 62