processor: Stitch chunks of legacy user json traces for export

As of crrev.com/c/1807134, legacy json traces can be emitted in chunks.
Therefore, trace processor should stitch these chunks together before
attempting to parse and reemit the json value.

Bug: 130786269
Change-Id: Ic01c33a72db74e407a912c2b04e96aeab50e565d
diff --git a/src/trace_processor/export_json_unittest.cc b/src/trace_processor/export_json_unittest.cc
index 5e9cd14..511f677 100644
--- a/src/trace_processor/export_json_unittest.cc
+++ b/src/trace_processor/export_json_unittest.cc
@@ -952,7 +952,8 @@
 
 TEST(ExportJsonTest, LegacyRawEvents) {
   const char* kLegacyFtraceData = "some \"data\"\nsome :data:";
-  const char* kLegacyJsonData = "{\"user\": 1}";
+  const char* kLegacyJsonData1 = "{\"us";
+  const char* kLegacyJsonData2 = "er\": 1}";
 
   TraceProcessorContext context;
   context.storage.reset(new TraceStorage());
@@ -968,8 +969,13 @@
 
   row_id = storage->mutable_raw_events()->AddRawEvent(
       0, storage->InternString("chrome_event.legacy_user_trace"), 0, 0);
-  StringId json_data_id = storage->InternString(kLegacyJsonData);
-  args.AddArg(row_id, data_id, data_id, Variadic::Json(json_data_id));
+  StringId json_data1_id = storage->InternString(kLegacyJsonData1);
+  args.AddArg(row_id, data_id, data_id, Variadic::String(json_data1_id));
+
+  row_id = storage->mutable_raw_events()->AddRawEvent(
+      0, storage->InternString("chrome_event.legacy_user_trace"), 0, 0);
+  StringId json_data2_id = storage->InternString(kLegacyJsonData2);
+  args.AddArg(row_id, data_id, data_id, Variadic::String(json_data2_id));
 
   args.Flush();