Commit f28a73dd authored by ssid's avatar ssid Committed by Commit Bot

Write version code chrome metadata

The version code is useful to identify java proguard mappings.
Also removes posting task for metadata generation in privacy
filtered mode.

Change-Id: Ifd26a4ee39010467a89a73c7159bada02e15490c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1759293
Commit-Queue: ssid <ssid@chromium.org>
Reviewed-by: default avataroysteine <oysteine@chromium.org>
Cr-Commit-Position: refs/heads/master@{#689135}
parent 69a75146
...@@ -418,7 +418,8 @@ BackgroundTracingManagerImpl::GenerateMetadataDict() { ...@@ -418,7 +418,8 @@ BackgroundTracingManagerImpl::GenerateMetadataDict() {
} }
void BackgroundTracingManagerImpl::GenerateMetadataProto( void BackgroundTracingManagerImpl::GenerateMetadataProto(
perfetto::protos::pbzero::ChromeMetadataPacket* metadata) { perfetto::protos::pbzero::ChromeMetadataPacket* metadata,
bool privacy_filtering_enabled) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (active_scenario_) { if (active_scenario_) {
active_scenario_->GenerateMetadataProto(metadata); active_scenario_->GenerateMetadataProto(metadata);
......
...@@ -148,7 +148,8 @@ class BackgroundTracingManagerImpl : public BackgroundTracingManager { ...@@ -148,7 +148,8 @@ class BackgroundTracingManagerImpl : public BackgroundTracingManager {
bool IsSupportedConfig(BackgroundTracingConfigImpl* config); bool IsSupportedConfig(BackgroundTracingConfigImpl* config);
std::unique_ptr<base::DictionaryValue> GenerateMetadataDict(); std::unique_ptr<base::DictionaryValue> GenerateMetadataDict();
void GenerateMetadataProto( void GenerateMetadataProto(
perfetto::protos::pbzero::ChromeMetadataPacket* metadata); perfetto::protos::pbzero::ChromeMetadataPacket* metadata,
bool privacy_filtering_enabled);
bool IsTriggerHandleValid(TriggerHandle handle) const; bool IsTriggerHandleValid(TriggerHandle handle) const;
void OnScenarioAborted(); void OnScenarioAborted();
static void AddPendingAgentConstructor(base::OnceClosure constructor); static void AddPendingAgentConstructor(base::OnceClosure constructor);
......
...@@ -127,9 +127,9 @@ constexpr MessageInfo kTraceMetadata = {kTraceMetadataIndices, ...@@ -127,9 +127,9 @@ constexpr MessageInfo kTraceMetadata = {kTraceMetadataIndices,
kTraceMetadataComplexMessages}; kTraceMetadataComplexMessages};
// Proto Message: ChromeMetadataPacket // Proto Message: ChromeMetadataPacket
constexpr int kChromeMetadataPacketIndices[] = {1, -1}; constexpr int kChromeMetadataPacketIndices[] = {1, 2, -1};
constexpr MessageInfo const* kChromeMetadataPacketComplexMessages[] = { constexpr MessageInfo const* kChromeMetadataPacketComplexMessages[] = {
&kTraceMetadata}; &kTraceMetadata, nullptr};
constexpr MessageInfo kChromeMetadataPacket = { constexpr MessageInfo kChromeMetadataPacket = {
kChromeMetadataPacketIndices, kChromeMetadataPacketComplexMessages}; kChromeMetadataPacketIndices, kChromeMetadataPacketComplexMessages};
......
...@@ -21,11 +21,13 @@ ...@@ -21,11 +21,13 @@
#include "base/no_destructor.h" #include "base/no_destructor.h"
#include "base/pickle.h" #include "base/pickle.h"
#include "base/sequence_checker.h" #include "base/sequence_checker.h"
#include "base/strings/string_number_conversions.h"
#include "base/task/common/scoped_defer_task_posting.h" #include "base/task/common/scoped_defer_task_posting.h"
#include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
#include "base/trace_event/trace_log.h" #include "base/trace_event/trace_log.h"
#include "build/build_config.h"
#include "components/tracing/common/tracing_switches.h" #include "components/tracing/common/tracing_switches.h"
#include "services/tracing/public/cpp/perfetto/perfetto_producer.h" #include "services/tracing/public/cpp/perfetto/perfetto_producer.h"
#include "services/tracing/public/cpp/perfetto/perfetto_traced_process.h" #include "services/tracing/public/cpp/perfetto/perfetto_traced_process.h"
...@@ -43,13 +45,35 @@ ...@@ -43,13 +45,35 @@
#include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h" #include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h"
#include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h" #include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h"
#if defined(OS_ANDROID)
#include "base/android/build_info.h"
#endif
using TraceLog = base::trace_event::TraceLog; using TraceLog = base::trace_event::TraceLog;
using TraceEvent = base::trace_event::TraceEvent; using TraceEvent = base::trace_event::TraceEvent;
using TraceConfig = base::trace_event::TraceConfig; using TraceConfig = base::trace_event::TraceConfig;
using perfetto::protos::pbzero::ChromeMetadataPacket;
namespace tracing { namespace tracing {
namespace { namespace {
TraceEventMetadataSource* g_trace_event_metadata_source_for_testing = nullptr; TraceEventMetadataSource* g_trace_event_metadata_source_for_testing = nullptr;
void WriteMetadataProto(ChromeMetadataPacket* metadata_proto,
bool privacy_filtering_enabled) {
#if defined(OS_ANDROID) && defined(OFFICIAL_BUILD)
// Version code is only set for official builds on Android.
const char* version_code_str =
base::android::BuildInfo::GetInstance()->package_version_code();
if (version_code_str) {
int version_code = 0;
bool res = base::StringToInt(version_code_str, &version_code);
DCHECK(res);
metadata_proto->set_chrome_version_code(version_code);
}
#endif // defined(OS_ANDROID) && defined(OFFICIAL_BUILD)
}
} // namespace } // namespace
using ChromeEventBundleHandle = using ChromeEventBundleHandle =
...@@ -66,6 +90,7 @@ TraceEventMetadataSource::TraceEventMetadataSource() ...@@ -66,6 +90,7 @@ TraceEventMetadataSource::TraceEventMetadataSource()
origin_task_runner_(base::SequencedTaskRunnerHandle::Get()) { origin_task_runner_(base::SequencedTaskRunnerHandle::Get()) {
g_trace_event_metadata_source_for_testing = this; g_trace_event_metadata_source_for_testing = this;
PerfettoTracedProcess::Get()->AddDataSource(this); PerfettoTracedProcess::Get()->AddDataSource(this);
AddGeneratorFunction(base::BindRepeating(&WriteMetadataProto));
AddGeneratorFunction(base::BindRepeating( AddGeneratorFunction(base::BindRepeating(
&TraceEventMetadataSource::GenerateTraceConfigMetadataDict, &TraceEventMetadataSource::GenerateTraceConfigMetadataDict,
base::Unretained(this))); base::Unretained(this)));
...@@ -115,7 +140,7 @@ void TraceEventMetadataSource::GenerateMetadata( ...@@ -115,7 +140,7 @@ void TraceEventMetadataSource::GenerateMetadata(
auto trace_packet = trace_writer->NewTracePacket(); auto trace_packet = trace_writer->NewTracePacket();
auto* chrome_metadata = trace_packet->set_chrome_metadata(); auto* chrome_metadata = trace_packet->set_chrome_metadata();
for (auto& generator : generator_functions_) { for (auto& generator : generator_functions_) {
generator.Run(chrome_metadata); generator.Run(chrome_metadata, privacy_filtering_enabled_);
} }
trace_packet = perfetto::TraceWriter::TracePacketHandle(); trace_packet = perfetto::TraceWriter::TracePacketHandle();
...@@ -172,7 +197,7 @@ void TraceEventMetadataSource::StopTracing( ...@@ -172,7 +197,7 @@ void TraceEventMetadataSource::StopTracing(
base::OnceClosure stop_complete_callback) { base::OnceClosure stop_complete_callback) {
if (trace_writer_) { if (trace_writer_) {
// Write metadata at the end of tracing to make it less likely that it is // Write metadata at the end of tracing to make it less likely that it is
// overridden by other trace data in perfetto's ring buffer. // overwritten by other trace data in perfetto's ring buffer.
origin_task_runner_->PostTaskAndReply( origin_task_runner_->PostTaskAndReply(
FROM_HERE, FROM_HERE,
base::BindOnce(&TraceEventMetadataSource::GenerateMetadata, base::BindOnce(&TraceEventMetadataSource::GenerateMetadata,
......
...@@ -57,7 +57,8 @@ class COMPONENT_EXPORT(TRACING_CPP) TraceEventMetadataSource ...@@ -57,7 +57,8 @@ class COMPONENT_EXPORT(TRACING_CPP) TraceEventMetadataSource
base::RepeatingCallback<std::unique_ptr<base::DictionaryValue>()>; base::RepeatingCallback<std::unique_ptr<base::DictionaryValue>()>;
using MetadataGeneratorFunction = base::RepeatingCallback<void( using MetadataGeneratorFunction = base::RepeatingCallback<void(
perfetto::protos::pbzero::ChromeMetadataPacket*)>; perfetto::protos::pbzero::ChromeMetadataPacket*,
bool /* privacy_filtering_enabled */)>;
// Any callbacks passed here will be called when tracing starts. // Any callbacks passed here will be called when tracing starts.
void AddGeneratorFunction(JsonMetadataGeneratorFunction generator); void AddGeneratorFunction(JsonMetadataGeneratorFunction generator);
......
...@@ -1062,7 +1062,9 @@ TEST_F(TraceEventDataSourceTest, FilteringMetadataSource) { ...@@ -1062,7 +1062,9 @@ TEST_F(TraceEventDataSourceTest, FilteringMetadataSource) {
TEST_F(TraceEventDataSourceTest, ProtoMetadataSource) { TEST_F(TraceEventDataSourceTest, ProtoMetadataSource) {
auto* metadata_source = TraceEventMetadataSource::GetInstance(); auto* metadata_source = TraceEventMetadataSource::GetInstance();
metadata_source->AddGeneratorFunction(base::BindRepeating( metadata_source->AddGeneratorFunction(base::BindRepeating(
[](perfetto::protos::pbzero::ChromeMetadataPacket* metadata) { [](perfetto::protos::pbzero::ChromeMetadataPacket* metadata,
bool privacy_filtering_enabled) {
EXPECT_TRUE(privacy_filtering_enabled);
auto* field1 = metadata->set_background_tracing_metadata(); auto* field1 = metadata->set_background_tracing_metadata();
auto* rule = field1->set_triggered_rule(); auto* rule = field1->set_triggered_rule();
rule->set_trigger_type( rule->set_trigger_type(
......
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