Android: Make netlog available in startup traces.
Netlog events are made available to trace events through
TraceNetLogObserver. On Android, it is created after tracing has
started, yet only listens for tracing state changes. Before listening
for tracing state changes, first check whether tracing is already
enabled.
TEST=
$ adb shell 'echo "_ --trace-startup=*,netlog" > /data/local/tmp/chrome-command-line'
$ adb shell 'am force-stop com.google.android.apps.chrome' &&
adb shell am start -a 'android.intent.action.VIEW' -n com.google.android.apps.chrome/.Main -d 'https://android.com'"
This was busted before, works with this patch.
BUG=668195
Review-Url: https://codereview.chromium.org/2524043002
Cr-Commit-Position: refs/heads/master@{#435895}
diff --git a/net/log/trace_net_log_observer_unittest.cc b/net/log/trace_net_log_observer_unittest.cc
index 60c54ee0..2cd4f01 100644
--- a/net/log/trace_net_log_observer_unittest.cc
+++ b/net/log/trace_net_log_observer_unittest.cc
@@ -319,6 +319,31 @@
TestNetLogEntry::List entries;
net_log()->GetEntries(&entries);
EXPECT_EQ(3u, entries.size());
+ EXPECT_EQ(1u, trace_events()->GetSize());
+}
+
+TEST_F(TraceNetLogObserverTest,
+ CreateObserverAfterTracingStartsDisabledCategory) {
+ set_trace_net_log_observer(nullptr);
+
+ std::string disabled_netlog_category =
+ std::string("-") + kNetLogTracingCategory;
+ TraceLog::GetInstance()->SetEnabled(
+ base::trace_event::TraceConfig(disabled_netlog_category, ""),
+ TraceLog::RECORDING_MODE);
+
+ set_trace_net_log_observer(new TraceNetLogObserver());
+ trace_net_log_observer()->WatchForTraceStart(net_log());
+ net_log()->AddGlobalEntry(NetLogEventType::CANCELLED);
+ trace_net_log_observer()->StopWatchForTraceStart();
+ net_log()->AddGlobalEntry(NetLogEventType::REQUEST_ALIVE);
+ net_log()->AddGlobalEntry(NetLogEventType::URL_REQUEST_START_JOB);
+
+ EndTraceAndFlush();
+
+ TestNetLogEntry::List entries;
+ net_log()->GetEntries(&entries);
+ EXPECT_EQ(3u, entries.size());
EXPECT_EQ(0u, trace_events()->GetSize());
}