Commit 14d70ee0 authored by ssid's avatar ssid Committed by Commit Bot

Parse startup duration flag even if trace-startup isn't set

The flag could be used along with perfetto-output-file flag.

Change-Id: Idd1c7069a0e2e29b3c33d60da02434c8b01af1ad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1774039
Commit-Queue: ssid <ssid@chromium.org>
Reviewed-by: default avataroysteine <oysteine@chromium.org>
Cr-Commit-Position: refs/heads/master@{#691772}
parent 2929b57c
......@@ -29,7 +29,6 @@ namespace {
// Maximum trace config file size that will be loaded, in bytes.
const size_t kTraceConfigFileSizeLimit = 64 * 1024;
const int kDefaultStartupDuration = 5;
// Trace config file path:
// - Android: /data/local/chrome-trace-config.json
......@@ -118,7 +117,7 @@ void TraceStartupConfig::SetDisabled() {
}
bool TraceStartupConfig::IsTracingStartupForDuration() const {
return IsEnabled() && startup_duration_ > 0 &&
return IsEnabled() && startup_duration_in_seconds_ > 0 &&
session_owner_ == SessionOwner::kTracingController;
}
......@@ -129,7 +128,7 @@ base::trace_event::TraceConfig TraceStartupConfig::GetTraceConfig() const {
int TraceStartupConfig::GetStartupDuration() const {
DCHECK(IsEnabled() || IsUsingPerfettoOutput());
return startup_duration_;
return startup_duration_in_seconds_;
}
bool TraceStartupConfig::ShouldTraceToResultFile() const {
......@@ -174,19 +173,21 @@ bool TraceStartupConfig::AttemptAdoptBySessionOwner(SessionOwner owner) {
bool TraceStartupConfig::EnableFromCommandLine() {
auto* command_line = base::CommandLine::ForCurrentProcess();
// Startup duration can be used by along with perfetto-output-file flag.
if (command_line->HasSwitch(switches::kTraceStartupDuration)) {
std::string startup_duration_str =
command_line->GetSwitchValueASCII(switches::kTraceStartupDuration);
if (!startup_duration_str.empty() &&
!base::StringToInt(startup_duration_str, &startup_duration_in_seconds_)) {
DLOG(WARNING) << "Could not parse --" << switches::kTraceStartupDuration
<< "=" << startup_duration_str << " defaulting to 5 (secs)";
startup_duration_in_seconds_ = kDefaultStartupDurationInSeconds;
}
}
if (!command_line->HasSwitch(switches::kTraceStartup))
return false;
std::string startup_duration_str =
command_line->GetSwitchValueASCII(switches::kTraceStartupDuration);
startup_duration_ = kDefaultStartupDuration;
if (!startup_duration_str.empty() &&
!base::StringToInt(startup_duration_str, &startup_duration_)) {
DLOG(WARNING) << "Could not parse --" << switches::kTraceStartupDuration
<< "=" << startup_duration_str << " defaulting to 5 (secs)";
startup_duration_ = kDefaultStartupDuration;
}
trace_config_ = base::trace_event::TraceConfig(
command_line->GetSwitchValueASCII(switches::kTraceStartup),
command_line->GetSwitchValueASCII(switches::kTraceStartupRecordMode));
......@@ -210,9 +211,6 @@ bool TraceStartupConfig::EnableFromConfigFile() {
#endif
if (trace_config_file.empty()) {
// If the trace config file path is not specified, trace Chrome with the
// default configuration for 5 sec.
startup_duration_ = kDefaultStartupDuration;
is_enabled_ = true;
should_trace_to_result_file_ = true;
DLOG(WARNING) << "Use default trace config.";
......@@ -257,7 +255,7 @@ bool TraceStartupConfig::EnableFromBackgroundTracing() {
should_trace_to_result_file_ = false;
// Set startup duration to 0 since background tracing config will configure
// the durations later.
startup_duration_ = 0;
startup_duration_in_seconds_ = 0;
return true;
}
......@@ -276,11 +274,11 @@ bool TraceStartupConfig::ParseTraceConfigFileContent(
trace_config_ = base::trace_event::TraceConfig(*trace_config_dict);
if (!dict->GetInteger(kStartupDurationParam, &startup_duration_))
startup_duration_ = 0;
if (!dict->GetInteger(kStartupDurationParam, &startup_duration_in_seconds_))
startup_duration_in_seconds_ = 0;
if (startup_duration_ < 0)
startup_duration_ = 0;
if (startup_duration_in_seconds_ < 0)
startup_duration_in_seconds_ = 0;
base::FilePath::StringType result_file_or_dir_str;
if (dict->GetString(kResultFileParam, &result_file_or_dir_str))
......
......@@ -147,6 +147,8 @@ class TRACING_EXPORT TraceStartupConfig {
friend class content::CommandlineStartupTracingTest;
friend class content::BackgroundStartupTracingTest;
constexpr static int kDefaultStartupDurationInSeconds = 5;
TraceStartupConfig();
~TraceStartupConfig();
......@@ -161,7 +163,7 @@ class TRACING_EXPORT TraceStartupConfig {
bool is_enabled_ = false;
bool enable_background_tracing_for_testing_ = false;
base::trace_event::TraceConfig trace_config_;
int startup_duration_ = 0;
int startup_duration_in_seconds_ = kDefaultStartupDurationInSeconds;
bool should_trace_to_result_file_ = false;
base::FilePath result_file_;
bool finished_writing_to_file_ = false;
......
......@@ -164,7 +164,7 @@ class BackgroundStartupTracingTest : public ContentBrowserTest {
auto* startup_config = tracing::TraceStartupConfig::GetInstance();
startup_config->enable_background_tracing_for_testing_ = true;
startup_config->EnableFromBackgroundTracing();
startup_config->startup_duration_ = 3;
startup_config->startup_duration_in_seconds_ = 3;
tracing::EnableStartupTracingIfNeeded();
command_line->AppendSwitchASCII(switches::kPerfettoOutputFile,
temp_file_path_.AsUTF8Unsafe());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment