1// Copyright (c) 2011 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#ifndef CHROME_TEST_BASE_TRACING_H_
6#define CHROME_TEST_BASE_TRACING_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/time/time.h"
12
13namespace tracing {
14
15// Called from UI thread.
16// Begin tracing specified category_patterns on the browser.
17// |category_patterns| is a comma-delimited list of category wildcards.
18// A category pattern can have an optional '-' prefix to make  categories with
19// matching categorys excluded. Either all category_patterns must be included
20// or all must be excluded.
21//
22// Example: BeginTracing("test_MyTest*");
23// Example: BeginTracing("test_MyTest*,test_OtherStuff");
24// Example: BeginTracing("-excluded_category1,-excluded_category2");
25//
26// See base/debug/trace_event.h for documentation of included and excluded
27// category_patterns.
28bool BeginTracing(const std::string& category_patterns) WARN_UNUSED_RESULT;
29
30// Called from UI thread.
31// Specify a watch event in order to use the WaitForWatchEvent function.
32// After |num_occurrences| of the given event have been seen on a particular
33// process, WaitForWatchEvent will return.
34bool BeginTracingWithWatch(const std::string& category_patterns,
35                           const std::string& category_name,
36                           const std::string& event_name,
37                           int num_occurrences) WARN_UNUSED_RESULT;
38
39// Called from UI thread.
40// Wait on the event set with BeginTracingWithWatch. If non-zero, return after
41// |timeout| regardless of watch event notification. Returns true if watch event
42// occurred, false if it timed out.
43bool WaitForWatchEvent(base::TimeDelta timeout) WARN_UNUSED_RESULT;
44
45// Called from UI thread.
46// End trace and collect the trace output as a json string.
47bool EndTracing(std::string* json_trace_output) WARN_UNUSED_RESULT;
48
49}  // namespace tracing
50
51#endif  // CHROME_TEST_BASE_TRACING_H_
52