1 // Copyright 2015 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/event_name_filter.h"
6 
7 #include "base/memory/ptr_util.h"
8 #include "base/trace_event/thread_instruction_count.h"
9 #include "base/trace_event/trace_event_impl.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 
12 namespace base {
13 namespace trace_event {
14 
MakeTraceEvent(const char * name)15 const TraceEvent& MakeTraceEvent(const char* name) {
16   static TraceEvent event;
17   event.Reset(0, TimeTicks(), ThreadTicks(), ThreadInstructionCount(), 'b',
18               nullptr, name, "", 0, 0, nullptr, 0);
19   return event;
20 }
21 
TEST(TraceEventNameFilterTest,Whitelist)22 TEST(TraceEventNameFilterTest, Whitelist) {
23   auto empty_whitelist =
24       std::make_unique<EventNameFilter::EventNamesWhitelist>();
25   auto filter = std::make_unique<EventNameFilter>(std::move(empty_whitelist));
26 
27   // No events should be filtered if the whitelist is empty.
28   EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("foo")));
29 
30   auto whitelist = std::make_unique<EventNameFilter::EventNamesWhitelist>();
31   whitelist->insert("foo");
32   whitelist->insert("bar");
33   filter = std::make_unique<EventNameFilter>(std::move(whitelist));
34   EXPECT_TRUE(filter->FilterTraceEvent(MakeTraceEvent("foo")));
35   EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("fooz")));
36   EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("afoo")));
37   EXPECT_TRUE(filter->FilterTraceEvent(MakeTraceEvent("bar")));
38   EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("foobar")));
39 }
40 
41 }  // namespace trace_event
42 }  // namespace base
43