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.
5 #include "base/files/file_tracing.h"
7 #include "base/files/file.h"
12 FileTracing::Provider
* g_provider
= nullptr;
16 void FileTracing::SetProvider(FileTracing::Provider
* provider
) {
17 g_provider
= provider
;
20 FileTracing::ScopedEnabler::ScopedEnabler() {
22 g_provider
->FileTracingEnable(this);
25 FileTracing::ScopedEnabler::~ScopedEnabler() {
27 g_provider
->FileTracingDisable(this);
30 FileTracing::ScopedTrace::ScopedTrace() : initialized_(false) {}
32 FileTracing::ScopedTrace::~ScopedTrace() {
33 if (initialized_
&& g_provider
) {
34 g_provider
->FileTracingEventEnd(
35 name_
, &file_
->trace_enabler_
, file_
->path_
, size_
);
39 bool FileTracing::ScopedTrace::ShouldInitialize() const {
40 return g_provider
&& g_provider
->FileTracingCategoryIsEnabled();
43 void FileTracing::ScopedTrace::Initialize(
44 const char* name
, File
* file
, int64 size
) {
51 g_provider
->FileTracingEventBegin(
52 name_
, &file_
->trace_enabler_
, file_
->path_
, size_
);