diff --git a/base/android/trace_event_binding.cc b/base/android/trace_event_binding.cc
index 1f45260e551d8..731183be4cbef 100644
--- a/base/android/trace_event_binding.cc
+++ b/base/android/trace_event_binding.cc
@@ -43,10 +43,8 @@ class TraceEnabledObserver : public perfetto::TrackEventSessionObserver {
 
   // perfetto::TrackEventSessionObserver implementation
   void OnSetup(const perfetto::DataSourceBase::SetupArgs& args) override {
-    trace_event::TraceConfig trace_config(
-        args.config->chrome_config().trace_config());
     event_name_filtering_per_session_[args.internal_instance_index] =
-        trace_config.IsEventPackageNameFilterEnabled();
+        args.config->chrome_config().event_package_name_filter_enabled();
   }
 
   void OnStart(const perfetto::DataSourceBase::StartArgs&) override {
diff --git a/content/browser/tracing/background_tracing_manager_browsertest.cc b/content/browser/tracing/background_tracing_manager_browsertest.cc
index 1509282f256ba..fd8a0c32d981e 100644
--- a/content/browser/tracing/background_tracing_manager_browsertest.cc
+++ b/content/browser/tracing/background_tracing_manager_browsertest.cc
@@ -769,11 +769,6 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
   ASSERT_TRUE(trace_json->is_dict());
   auto* metadata_json = trace_json->GetDict().FindDict("metadata");
   ASSERT_TRUE(metadata_json);
-
-  const std::string* trace_config = metadata_json->FindString("trace-config");
-  ASSERT_TRUE(trace_config);
-  EXPECT_NE(trace_config->find("record-continuously"), trace_config->npos)
-      << *trace_config;
 }
 
 // Used as a known symbol to look up the current module.
diff --git a/services/tracing/public/cpp/perfetto/perfetto_config.cc b/services/tracing/public/cpp/perfetto/perfetto_config.cc
index 5915c49934483..05f8d540444ab 100644
--- a/services/tracing/public/cpp/perfetto/perfetto_config.cc
+++ b/services/tracing/public/cpp/perfetto/perfetto_config.cc
@@ -45,27 +45,25 @@ perfetto::TraceConfig::DataSource* AddDataSourceConfig(
     bool privacy_filtering_enabled,
     bool convert_to_legacy_json,
     perfetto::protos::gen::ChromeConfig::ClientPriority client_priority,
-    const std::string& json_agent_label_filter) {
+    const std::string& json_agent_label_filter,
+    bool enable_package_name_filter) {
   auto* data_source = perfetto_config->add_data_sources();
   auto* source_config = data_source->mutable_config();
   source_config->set_name(name);
   source_config->set_target_buffer(0);
 
   auto* chrome_config = source_config->mutable_chrome_config();
-  chrome_config->set_trace_config(chrome_config_string);
+  if (!chrome_config_string.empty()) {
+    chrome_config->set_trace_config(chrome_config_string);
+  }
   chrome_config->set_privacy_filtering_enabled(privacy_filtering_enabled);
   chrome_config->set_convert_to_legacy_json(convert_to_legacy_json);
   chrome_config->set_client_priority(client_priority);
+  chrome_config->set_event_package_name_filter_enabled(
+      enable_package_name_filter);
   if (!json_agent_label_filter.empty())
     chrome_config->set_json_agent_label_filter(json_agent_label_filter);
 
-  if (!strcmp(name, tracing::mojom::kTraceEventDataSourceName)) {
-    source_config->set_name("track_event");
-    base::trace_event::TraceConfig base_config(chrome_config_string);
-    source_config->set_track_event_config_raw(
-        base_config.ToPerfettoTrackEventConfigRaw(privacy_filtering_enabled));
-  }
-
   return data_source;
 }
 
@@ -77,7 +75,8 @@ void AddDataSourceConfigs(
     bool privacy_filtering_enabled,
     bool convert_to_legacy_json,
     perfetto::protos::gen::ChromeConfig::ClientPriority client_priority,
-    const std::string& json_agent_label_filter) {
+    const std::string& json_agent_label_filter,
+    bool enable_package_name_filter) {
   const std::string chrome_config_string = stripped_config.ToString();
 
   if (stripped_config.IsCategoryGroupEnabled(
@@ -85,17 +84,21 @@ void AddDataSourceConfigs(
     AddDataSourceConfig(
         perfetto_config, tracing::mojom::kMemoryInstrumentationDataSourceName,
         chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+        client_priority, json_agent_label_filter, enable_package_name_filter);
     AddDataSourceConfig(
         perfetto_config, tracing::mojom::kNativeHeapProfilerSourceName,
         chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+        client_priority, json_agent_label_filter, enable_package_name_filter);
   }
 
   auto* trace_event_data_source = AddDataSourceConfig(
       perfetto_config, tracing::mojom::kTraceEventDataSourceName,
       chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-      client_priority, json_agent_label_filter);
+      client_priority, json_agent_label_filter, enable_package_name_filter);
+  auto* trace_event_source_config = trace_event_data_source->mutable_config();
+  trace_event_source_config->set_name("track_event");
+  trace_event_source_config->set_track_event_config_raw(
+      stripped_config.ToPerfettoTrackEventConfigRaw(privacy_filtering_enabled));
   for (auto& enabled_pid : process_filters.included_process_ids()) {
     *trace_event_data_source->add_producer_name_filter() = base::StrCat(
         {mojom::kPerfettoProducerNamePrefix,
@@ -109,14 +112,14 @@ void AddDataSourceConfigs(
     AddDataSourceConfig(
         perfetto_config, tracing::mojom::kSystemTraceDataSourceName,
         chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+        client_priority, json_agent_label_filter, enable_package_name_filter);
 #endif
 
 #if BUILDFLAG(IS_CHROMEOS)
     AddDataSourceConfig(
         perfetto_config, tracing::mojom::kArcTraceDataSourceName,
         chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+        client_priority, json_agent_label_filter, enable_package_name_filter);
 #endif
   }
 
@@ -124,14 +127,15 @@ void AddDataSourceConfigs(
   AddDataSourceConfig(perfetto_config, tracing::mojom::kMetaDataSourceName,
                       chrome_config_string, privacy_filtering_enabled,
                       convert_to_legacy_json, client_priority,
-                      json_agent_label_filter);
+                      json_agent_label_filter, enable_package_name_filter);
 
   if (stripped_config.IsCategoryGroupEnabled(
           TRACE_DISABLED_BY_DEFAULT("histogram_samples"))) {
     auto* data_source = AddDataSourceConfig(
         perfetto_config, tracing::mojom::kHistogramSampleSourceName,
-        chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+        /*chrome_config_string=*/"", privacy_filtering_enabled,
+        convert_to_legacy_json, client_priority, json_agent_label_filter,
+        enable_package_name_filter);
 
     perfetto::protos::gen::ChromiumHistogramSamplesConfig histogram_config;
     histogram_config.set_filter_histogram_names(privacy_filtering_enabled);
@@ -147,18 +151,20 @@ void AddDataSourceConfigs(
 
   if (stripped_config.IsCategoryGroupEnabled(
           TRACE_DISABLED_BY_DEFAULT("cpu_profiler"))) {
-    AddDataSourceConfig(
-        perfetto_config, tracing::mojom::kSamplerProfilerSourceName,
-        chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+    AddDataSourceConfig(perfetto_config,
+                        tracing::mojom::kSamplerProfilerSourceName,
+                        /*chrome_config_string=*/"", privacy_filtering_enabled,
+                        convert_to_legacy_json, client_priority,
+                        json_agent_label_filter, enable_package_name_filter);
   }
 
   if (stripped_config.IsCategoryGroupEnabled(
           TRACE_DISABLED_BY_DEFAULT("system_metrics"))) {
-    AddDataSourceConfig(
-        perfetto_config, tracing::mojom::kSystemMetricsSourceName,
-        chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+    AddDataSourceConfig(perfetto_config,
+                        tracing::mojom::kSystemMetricsSourceName,
+                        /*chrome_config_string=*/"", privacy_filtering_enabled,
+                        convert_to_legacy_json, client_priority,
+                        json_agent_label_filter, enable_package_name_filter);
   }
 
   if (stripped_config.IsCategoryGroupEnabled(
@@ -166,7 +172,7 @@ void AddDataSourceConfigs(
     AddDataSourceConfig(
         perfetto_config, tracing::mojom::kJavaHeapProfilerSourceName,
         chrome_config_string, privacy_filtering_enabled, convert_to_legacy_json,
-        client_priority, json_agent_label_filter);
+        client_priority, json_agent_label_filter, enable_package_name_filter);
   }
 }
 
@@ -186,67 +192,6 @@ size_t GetDefaultTraceBufferSize() {
   }
 }
 
-std::optional<base::trace_event::TraceConfig> GetChromeTraceConfig(
-    const perfetto::TraceConfig& perfetto_config) {
-  // The caller must ensure a valid buffer config for chrome.
-  DCHECK_GE(perfetto_config.buffers_size(), 1);
-
-  base::trace_event::TraceRecordMode record_mode;
-  switch (perfetto_config.buffers()[0].fill_policy()) {
-    case perfetto::protos::gen::TraceConfig::BufferConfig::DISCARD:
-    case perfetto::protos::gen::TraceConfig::BufferConfig::UNSPECIFIED:
-      record_mode = base::trace_event::RECORD_UNTIL_FULL;
-      break;
-    case perfetto::protos::gen::TraceConfig::BufferConfig::RING_BUFFER:
-      record_mode = base::trace_event::RECORD_CONTINUOUSLY;
-      break;
-  }
-  std::string category_filter_string;
-  bool systrace_enabled = false;
-  for (const auto& data_source_config : perfetto_config.data_sources()) {
-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CASTOS)
-    if (data_source_config.config().name() ==
-            tracing::mojom::kSystemTraceDataSourceName ||
-        data_source_config.config().name() ==
-            tracing::mojom::kArcTraceDataSourceName) {
-      systrace_enabled = true;
-    }
-#endif
-    if (!data_source_config.config().track_event_config_raw().empty()) {
-      perfetto::protos::gen::TrackEventConfig track_event_config;
-      if (!track_event_config.ParseFromString(
-              data_source_config.config().track_event_config_raw())) {
-        return std::nullopt;
-      }
-      // tags aren't supported in chrome TraceConfig.
-      if (!track_event_config.disabled_tags().empty() ||
-          !track_event_config.enabled_tags().empty()) {
-        return std::nullopt;
-      }
-      for (const auto& cat : track_event_config.enabled_categories()) {
-        if (cat == "__metadata" || cat == "*") {
-          continue;
-        }
-        base::StringAppendF(&category_filter_string, "%s,", cat.c_str());
-      }
-      for (const auto& cat : track_event_config.disabled_categories()) {
-        if (cat == "*") {
-          continue;
-        }
-        base::StringAppendF(&category_filter_string, "-%s,", cat.c_str());
-      }
-    }
-  }
-  base::trace_event::TraceConfig chrome_config(category_filter_string,
-                                               record_mode);
-  chrome_config.SetTraceBufferSizeInKb(0);
-  chrome_config.SetTraceBufferSizeInEvents(0);
-  if (systrace_enabled) {
-    chrome_config.EnableSystrace();
-  }
-  return chrome_config;
-}
-
 void AdaptBuiltinDataSourcesConfig(
     perfetto::TraceConfig::BuiltinDataSource* config,
     bool privacy_filtering_enabled) {
@@ -282,10 +227,10 @@ void AdaptTrackEventConfig(perfetto::protos::gen::TrackEventConfig* config,
 
 void AdaptDataSourceConfig(
     perfetto::DataSourceConfig* config,
-    const std::string& chrome_config_string,
     bool privacy_filtering_enabled,
+    bool enable_package_name_filter,
     perfetto::protos::gen::ChromeConfig::ClientPriority client_priority,
-    bool enable_system_backend = false) {
+    bool enable_system_backend) {
   if (!config->has_target_buffer()) {
     config->set_target_buffer(0);
   }
@@ -302,7 +247,8 @@ void AdaptDataSourceConfig(
     // background tracing configs.
     chrome_config->set_convert_to_legacy_json(false);
     chrome_config->set_client_priority(client_priority);
-    chrome_config->set_trace_config(chrome_config_string);
+    chrome_config->set_event_package_name_filter_enabled(
+        enable_package_name_filter);
   }
 
   if (config->name() == tracing::mojom::kHistogramSampleSourceName) {
@@ -380,7 +326,8 @@ perfetto::TraceConfig GetDefaultPerfettoConfig(
   AddDataSourceConfigs(&perfetto_config, chrome_config.process_filter_config(),
                        stripped_config, chrome_config.IsSystraceEnabled(),
                        privacy_filtering_enabled, convert_to_legacy_json,
-                       client_priority, json_agent_label_filter);
+                       client_priority, json_agent_label_filter,
+                       chrome_config.IsEventPackageNameFilterEnabled());
 
   return perfetto_config;
 }
@@ -397,12 +344,6 @@ bool AdaptPerfettoConfigForChrome(
     buffer_config->set_fill_policy(
         perfetto::TraceConfig::BufferConfig::RING_BUFFER);
   }
-  auto chrome_config = GetChromeTraceConfig(*perfetto_config);
-  if (!chrome_config) {
-    return false;
-  }
-  chrome_config->SetEventPackageNameFilterEnabled(enable_package_name_filter);
-  std::string chrome_config_string = chrome_config->ToString();
 
   AdaptBuiltinDataSourcesConfig(perfetto_config->mutable_builtin_data_sources(),
                                 privacy_filtering_enabled);
@@ -413,7 +354,7 @@ bool AdaptPerfettoConfigForChrome(
 
   for (auto& data_source_config : *perfetto_config->mutable_data_sources()) {
     AdaptDataSourceConfig(data_source_config.mutable_config(),
-                          chrome_config_string, privacy_filtering_enabled,
+                          privacy_filtering_enabled, enable_package_name_filter,
                           client_priority, enable_system_backend);
   }
   return true;
diff --git a/services/tracing/public/cpp/perfetto/perfetto_config_unittest.cc b/services/tracing/public/cpp/perfetto/perfetto_config_unittest.cc
index 0118f841b2d7c..bb7c8ee3ccabb 100644
--- a/services/tracing/public/cpp/perfetto/perfetto_config_unittest.cc
+++ b/services/tracing/public/cpp/perfetto/perfetto_config_unittest.cc
@@ -35,7 +35,19 @@ class AdaptPerfettoConfigForChromeTest : public ::testing::Test {
     return destination;
   }
 
+  void RemoveChromeConfigString(perfetto::DataSourceConfig* message) {
+    // .gen.h proto doesn't expose a clear method.
+    message->mutable_chrome_config()->set_trace_config("");
+  }
+
+  void RemoveChromeConfigString(perfetto::TraceConfig* mesaage) {
+    for (auto& data_source_config : *mesaage->mutable_data_sources()) {
+      RemoveChromeConfigString(data_source_config.mutable_config());
+    }
+  }
+
   std::string PrintConfigToText(perfetto::TraceConfig message) {
+    RemoveChromeConfigString(&message);
     std::string serialized_message = message.SerializeAsString();
     std::string proto_text = config_loader_.PrintToText(
         "perfetto.protos.TraceConfig", serialized_message);
@@ -47,6 +59,7 @@ class AdaptPerfettoConfigForChromeTest : public ::testing::Test {
     if (!message) {
       return "";
     }
+    RemoveChromeConfigString(&message.value());
     std::string serialized_message = message->SerializeAsString();
     std::string proto_text = config_loader_.PrintToText(
         "perfetto.protos.DataSourceConfig", serialized_message);
@@ -122,21 +135,6 @@ TEST_F(AdaptPerfettoConfigForChromeTest, LegacyTraceEvent) {
             PrintConfigToText(perfetto_config));
 }
 
-TEST_F(AdaptPerfettoConfigForChromeTest, UnsupportedTrackEvent) {
-  auto perfetto_config = ParsePerfettoConfigFromText(R"pb(
-    data_sources: {
-      config: {
-        name: "org.chromium.trace_event"
-        track_event_config: {
-          enabled_tags: [ "foo" ]
-          disabled_tags: [ "*" ]
-        }
-      }
-    }
-  )pb");
-  EXPECT_FALSE(AdaptPerfettoConfigForChrome(&perfetto_config));
-}
-
 TEST_F(AdaptPerfettoConfigForChromeTest, DisabledCategories) {
   auto perfetto_config = ParsePerfettoConfigFromText(R"pb(
     data_sources: {