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