blob: 92a5780b384cb8af4013acba197ff0e42541ec71 [file] [log] [blame]
dbeamfe14ece2015-05-11 16:53:47 +09001// 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/files/file_tracing.h"
6
7#include "base/files/file.h"
8
9namespace base {
10
11namespace {
12FileTracing::Provider* g_provider = nullptr;
13}
14
15// static
dbeam8054d4e2015-07-02 12:33:08 +090016bool FileTracing::IsCategoryEnabled() {
17 return g_provider && g_provider->FileTracingCategoryIsEnabled();
18}
19
20// static
dbeamfe14ece2015-05-11 16:53:47 +090021void FileTracing::SetProvider(FileTracing::Provider* provider) {
22 g_provider = provider;
23}
24
25FileTracing::ScopedEnabler::ScopedEnabler() {
26 if (g_provider)
27 g_provider->FileTracingEnable(this);
28}
29
30FileTracing::ScopedEnabler::~ScopedEnabler() {
31 if (g_provider)
32 g_provider->FileTracingDisable(this);
33}
34
dbeamae926512015-06-10 01:08:16 +090035FileTracing::ScopedTrace::ScopedTrace() : id_(nullptr) {}
dbeamfe14ece2015-05-11 16:53:47 +090036
37FileTracing::ScopedTrace::~ScopedTrace() {
dbeamae926512015-06-10 01:08:16 +090038 if (id_ && g_provider)
39 g_provider->FileTracingEventEnd(name_, id_);
dbeamfe14ece2015-05-11 16:53:47 +090040}
41
dbeamfe14ece2015-05-11 16:53:47 +090042void FileTracing::ScopedTrace::Initialize(
43 const char* name, File* file, int64 size) {
dbeamae926512015-06-10 01:08:16 +090044 id_ = &file->trace_enabler_;
45 name_ = name;
dbeam8054d4e2015-07-02 12:33:08 +090046 g_provider->FileTracingEventBegin(name_, id_, file->tracing_path_, size);
dbeamfe14ece2015-05-11 16:53:47 +090047}
48
49} // namespace base