sdk: honor TraceConfig.compression_type on the in-process backend

Mirror what `src/traced/service/service.cc` does for the system
backend: when the SDK is built with `enable_perfetto_zlib=true`,
construct the in-process backend's TracingService with
`init_opts.compressor_fn = &ZlibCompressFn` so that
`TraceConfig.compression_type = COMPRESSION_TYPE_DEFLATE` actually
takes effect. Without this, the in-process service is created with
default `init_opts` (compressor_fn == nullptr) and the
`compression_type` field on the TraceConfig is silently ignored —
embedders writing a local `.pftrace` via `TracingSession::Setup(cfg, fd)`
got an uncompressed file regardless of what they set in the config.

The compressor is wired only when PERFETTO_ZLIB is enabled, matching
the existing pattern in `service.cc:136-139`. No new public API; the
behavior is opt-in via the TraceConfig field that already exists.
diff --git a/Android.bp b/Android.bp
index 9725ee9..041df2d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -954,6 +954,7 @@
         ":perfetto_src_tracing_ipc_producer_producer",
         ":perfetto_src_tracing_ipc_service_service",
         ":perfetto_src_tracing_service_service",
+        ":perfetto_src_tracing_service_zlib_compressor",
         ":perfetto_src_tracing_system_backend",
     ],
     host_supported: true,
@@ -1033,17 +1034,24 @@
     cflags: [
         "-DPERFETTO_REGEX_FORCE_STD",
         "-DPERFETTO_SHLIB_SDK_IMPLEMENTATION",
+        "-DZLIB_IMPLEMENTATION",
     ],
     min_sdk_version: "30",
     target: {
         android: {
             shared_libs: [
                 "liblog",
+                "libz",
             ],
             static_libs: [
                 "perfetto_flags_c_lib",
             ],
         },
+        host: {
+            static_libs: [
+                "libz",
+            ],
+        },
         windows: {
             enabled: true,
             cflags: [
@@ -1168,6 +1176,7 @@
         ":perfetto_src_tracing_ipc_producer_producer",
         ":perfetto_src_tracing_ipc_service_service",
         ":perfetto_src_tracing_service_service",
+        ":perfetto_src_tracing_service_zlib_compressor",
         ":perfetto_src_tracing_system_backend",
     ],
     shared_libs: [
@@ -1317,6 +1326,7 @@
     ],
     cflags: [
         "-DPERFETTO_REGEX_FORCE_STD",
+        "-DZLIB_IMPLEMENTATION",
     ],
     apex_available: [
         "//apex_available:anyapex",
@@ -1325,10 +1335,18 @@
     min_sdk_version: "30",
     target: {
         android: {
+            shared_libs: [
+                "libz",
+            ],
             static_libs: [
                 "perfetto_flags_c_lib",
             ],
         },
+        host: {
+            static_libs: [
+                "libz",
+            ],
+        },
     },
 }
 
@@ -2135,10 +2153,18 @@
     ],
     target: {
         android: {
+            shared_libs: [
+                "libz",
+            ],
             static_libs: [
                 "perfetto_flags_c_lib",
             ],
         },
+        host: {
+            static_libs: [
+                "libz",
+            ],
+        },
     },
 }
 
@@ -3134,6 +3160,7 @@
         ":perfetto_src_tracing_ipc_producer_relay",
         ":perfetto_src_tracing_ipc_service_service",
         ":perfetto_src_tracing_service_service",
+        ":perfetto_src_tracing_service_zlib_compressor",
         ":perfetto_src_tracing_system_backend",
         ":perfetto_src_tracing_test_api_test_support",
         ":perfetto_src_tracing_test_client_api_integrationtests",
@@ -3348,10 +3375,18 @@
     test_config: "PerfettoIntegrationTests.xml",
     target: {
         android: {
+            shared_libs: [
+                "libz",
+            ],
             static_libs: [
                 "perfetto_flags_c_lib",
             ],
         },
+        host: {
+            static_libs: [
+                "libz",
+            ],
+        },
     },
 }
 
diff --git a/BUILD b/BUILD
index 637cc3c..02fd70d 100644
--- a/BUILD
+++ b/BUILD
@@ -183,6 +183,7 @@
         ":src_tracing_ipc_producer_producer",
         ":src_tracing_ipc_service_service",
         ":src_tracing_service_service",
+        ":src_tracing_service_zlib_compressor",
         ":src_tracing_system_backend",
     ],
     hdrs = [
@@ -276,7 +277,7 @@
         ":src_base_regex_regex",
         ":src_base_version",
         ":src_protovm_protovm",
-    ],
+    ] + PERFETTO_CONFIG.deps.zlib,
     linkstatic = True,
 )
 
@@ -9505,6 +9506,7 @@
         ":src_tracing_ipc_producer_producer",
         ":src_tracing_ipc_service_service",
         ":src_tracing_service_service",
+        ":src_tracing_service_zlib_compressor",
         ":src_tracing_system_backend",
     ],
     hdrs = [
@@ -9595,7 +9597,7 @@
         ":src_base_regex_regex",
         ":src_base_version",
         ":src_protovm_protovm",
-    ],
+    ] + PERFETTO_CONFIG.deps.zlib,
     linkstatic = True,
 )
 
diff --git a/src/tracing/BUILD.gn b/src/tracing/BUILD.gn
index acd6bbf..730ccc9 100644
--- a/src/tracing/BUILD.gn
+++ b/src/tracing/BUILD.gn
@@ -205,6 +205,9 @@
     "core",
     "service",
   ]
+  if (enable_perfetto_zlib) {
+    deps += [ "service:zlib_compressor" ]
+  }
   sources = [ "internal/in_process_tracing_backend.cc" ]
 }
 
diff --git a/src/tracing/internal/in_process_tracing_backend.cc b/src/tracing/internal/in_process_tracing_backend.cc
index 7d2d7e6..8589142 100644
--- a/src/tracing/internal/in_process_tracing_backend.cc
+++ b/src/tracing/internal/in_process_tracing_backend.cc
@@ -25,6 +25,10 @@
 
 #include "src/tracing/core/in_process_shared_memory.h"
 
+#if PERFETTO_BUILDFLAG(PERFETTO_ZLIB)
+#include "src/tracing/service/zlib_compressor.h"
+#endif
+
 // TODO(primiano): When the in-process backend is used, we should never end up
 // in a situation where the thread where the TracingService and Producer live
 // writes a packet and hence can get into the GetNewChunk() stall.
@@ -68,7 +72,16 @@
   if (!service_) {
     std::unique_ptr<InProcessSharedMemory::Factory> shm(
         new InProcessSharedMemory::Factory());
-    service_ = TracingService::CreateInstance(std::move(shm), task_runner);
+    TracingService::InitOpts init_opts = {};
+#if PERFETTO_BUILDFLAG(PERFETTO_ZLIB)
+    // Wire the zlib compressor so TraceConfig.compression_type =
+    // COMPRESSION_TYPE_DEFLATE takes effect on the in-process backend's
+    // service, mirroring what src/traced/service/service.cc does for the
+    // system backend.
+    init_opts.compressor_fn = &ZlibCompressFn;
+#endif
+    service_ =
+        TracingService::CreateInstance(std::move(shm), task_runner, init_opts);
     service_->SetSMBScrapingEnabled(true);
   }
   return service_.get();