| Index: components/tracing/trace_config_file.h
|
| diff --git a/components/tracing/trace_config_file.h b/components/tracing/trace_config_file.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..273f9f1c48a9f38b18424c00b5db0c236a57b098
|
| --- /dev/null
|
| +++ b/components/tracing/trace_config_file.h
|
| @@ -0,0 +1,94 @@
|
| +// Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef COMPONENTS_TRACING_TRACE_CONFIG_FILE_H_
|
| +#define COMPONENTS_TRACING_TRACE_CONFIG_FILE_H_
|
| +
|
| +#include "base/files/file_path.h"
|
| +#include "base/macros.h"
|
| +#include "base/trace_event/trace_config.h"
|
| +#include "components/tracing/tracing_export.h"
|
| +
|
| +template <typename Type> struct DefaultSingletonTraits;
|
| +
|
| +namespace tracing {
|
| +
|
| +// TraceConfigFile is a singleton that contains the configurations of tracing.
|
| +// One can create a trace config file and use it to configure startup and/or
|
| +// shutdown tracing.
|
| +//
|
| +// The trace config file should be JSON formated. One example is:
|
| +// {
|
| +// "trace_config": {
|
| +// "record_mode": "record-until-full",
|
| +// "included_categories": ["cc", "skia"]
|
| +// },
|
| +// "startup_duration": 5,
|
| +// "result_file": "chrometrace.log"
|
| +// }
|
| +//
|
| +// trace_config: The configuration of tracing. Please see the details in
|
| +// base/trace_event/trace_config.h.
|
| +//
|
| +// startup_duration: The duration for startup tracing in terms of seconds.
|
| +// Tracing will stop automatically after the duration. If this
|
| +// value is not specified, the duration is 0 and one needs
|
| +// to stop tracing by other ways, e.g., by DevTools, or get
|
| +// the result file after shutting the browser down.
|
| +//
|
| +// result_file: The file that contains the trace log. The default result
|
| +// file path is chrometrace.log. Chrome will dump the trace
|
| +// log to this file
|
| +// 1) after startup_duration if it is specified;
|
| +// 2) or after browser shutdown if startup duration is 0.
|
| +// One can also stop tracing and get the result by other ways,
|
| +// e.g., by DevTools. In that case, the trace log will not be
|
| +// saved to this file.
|
| +// Notice: This is not supported on Android. The result file
|
| +// path will be generated by tracing controller.
|
| +//
|
| +// The trace config file can be specified by the --trace-config-file flag on
|
| +// most platforms except on Android, e.g., --trace-config-file=path/to/file/.
|
| +// This flag should not be used with --trace-startup or --trace-shutdown. If
|
| +// those two flags are used, --trace-config-file flag will be ignored. If the
|
| +// --trace-config-file flag is used without the file path, Chrome will do
|
| +// startup tracing with 5 seconds' startup duration.
|
| +//
|
| +// On Android, Chrome does not read the --trace-config-file flag, because not
|
| +// all Chrome based browsers read customized flag, e.g., Android WebView. Chrome
|
| +// on Android reads from a fixed file location:
|
| +// /data/local/chrome-trace-config.json
|
| +// If this file exists, Chrome will start tracing according to the configuration
|
| +// specified in the file, otherwise, Chrome will not start tracing.
|
| +class TRACING_EXPORT TraceConfigFile {
|
| + public:
|
| + static TraceConfigFile* GetInstance();
|
| +
|
| + bool IsEnabled() const;
|
| + base::trace_event::TraceConfig GetTraceConfig() const;
|
| + int GetStartupDuration() const;
|
| +#if !defined(OS_ANDROID)
|
| + base::FilePath GetResultFile() const;
|
| +#endif
|
| +
|
| + private:
|
| + // This allows constructor and destructor to be private and usable only
|
| + // by the Singleton class.
|
| + friend struct DefaultSingletonTraits<TraceConfigFile>;
|
| + TraceConfigFile();
|
| + ~TraceConfigFile();
|
| +
|
| + bool ParseTraceConfigFileContent(std::string content);
|
| +
|
| + bool is_enabled_;
|
| + base::trace_event::TraceConfig trace_config_;
|
| + int startup_duration_;
|
| + base::FilePath result_file_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TraceConfigFile);
|
| +};
|
| +
|
| +} // namespace tracing
|
| +
|
| +#endif // COMPONENTS_TRACING_TRACE_CONFIG_FILE_H_
|
|
|