| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/trace_event/event_name_filter.h" |
| |
| #include "base/memory/ptr_util.h" |
| #include "base/trace_event/trace_event_impl.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace base { |
| namespace trace_event { |
| |
| const TraceEvent& MakeTraceEvent(const char* name) { |
| static TraceEvent event; |
| event.Reset(); |
| event.Initialize(0, TimeTicks(), ThreadTicks(), 'b', nullptr, name, "", 0, 0, |
| 0, nullptr, nullptr, nullptr, nullptr, 0); |
| return event; |
| } |
| |
| TEST(TraceEventNameFilterTest, Whitelist) { |
| auto empty_whitelist = |
| std::make_unique<EventNameFilter::EventNamesWhitelist>(); |
| auto filter = std::make_unique<EventNameFilter>(std::move(empty_whitelist)); |
| |
| // No events should be filtered if the whitelist is empty. |
| EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("foo"))); |
| |
| auto whitelist = std::make_unique<EventNameFilter::EventNamesWhitelist>(); |
| whitelist->insert("foo"); |
| whitelist->insert("bar"); |
| filter = std::make_unique<EventNameFilter>(std::move(whitelist)); |
| EXPECT_TRUE(filter->FilterTraceEvent(MakeTraceEvent("foo"))); |
| EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("fooz"))); |
| EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("afoo"))); |
| EXPECT_TRUE(filter->FilterTraceEvent(MakeTraceEvent("bar"))); |
| EXPECT_FALSE(filter->FilterTraceEvent(MakeTraceEvent("foobar"))); |
| } |
| |
| } // namespace trace_event |
| } // namespace base |