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. 4 5 #include "base/files/file_tracing.h" 6 7 #include "base/files/file.h" 8 9 namespace base { 10 11 namespace { 12 FileTracing::Provider* g_provider = nullptr; 13 } 14 15 // static IsCategoryEnabled()16bool FileTracing::IsCategoryEnabled() { 17 return g_provider && g_provider->FileTracingCategoryIsEnabled(); 18 } 19 20 // static SetProvider(FileTracing::Provider * provider)21void FileTracing::SetProvider(FileTracing::Provider* provider) { 22 g_provider = provider; 23 } 24 ScopedEnabler()25FileTracing::ScopedEnabler::ScopedEnabler() { 26 if (g_provider) 27 g_provider->FileTracingEnable(this); 28 } 29 ~ScopedEnabler()30FileTracing::ScopedEnabler::~ScopedEnabler() { 31 if (g_provider) 32 g_provider->FileTracingDisable(this); 33 } 34 ScopedTrace()35FileTracing::ScopedTrace::ScopedTrace() : id_(nullptr) {} 36 ~ScopedTrace()37FileTracing::ScopedTrace::~ScopedTrace() { 38 if (id_ && g_provider) 39 g_provider->FileTracingEventEnd(name_, id_); 40 } 41 Initialize(const char * name,File * file,int64_t size)42void FileTracing::ScopedTrace::Initialize(const char* name, 43 File* file, 44 int64_t size) { 45 id_ = &file->trace_enabler_; 46 name_ = name; 47 g_provider->FileTracingEventBegin(name_, id_, file->tracing_path_, size); 48 } 49 50 } // namespace base 51