1c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch// Copyright 2016 the V8 project authors. All rights reserved.
2c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch// found in the LICENSE file.
4c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
5c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch#ifndef V8_TRACING_TRACING_CATEGORY_OBSERVER_H_
6c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch#define V8_TRACING_TRACING_CATEGORY_OBSERVER_H_
7c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
8c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch#include "include/v8-platform.h"
9c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
10c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochnamespace v8 {
11c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochnamespace tracing {
12c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
13c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochclass TracingCategoryObserver : public Platform::TraceStateObserver {
14c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch public:
15c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  enum Mode {
16c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch    ENABLED_BY_NATIVE = 1 << 0,
17c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch    ENABLED_BY_TRACING = 1 << 1,
18c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch    ENABLED_BY_SAMPLING = 1 << 2,
19c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  };
20c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
21c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  static void SetUp();
22c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  static void TearDown();
23c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
24c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  // v8::Platform::TraceStateObserver
25c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  void OnTraceEnabled() final;
26c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  void OnTraceDisabled() final;
27c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
28c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch private:
29c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  static TracingCategoryObserver* instance_;
30c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch};
31c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
32c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch}  // namespace tracing
33c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch}  // namespace v8
34c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
35c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch#endif  // V8_TRACING_TRACING_CATEGORY_OBSERVER_H_
36