TrackEvent: Add support for overriding interned data storage

This patch makes it possible to override the underlying storage for
interned data in perfetto::EventContext. This makes it possible to use
interned data in Chrome's typed trace points.

Bug: 156727531
Change-Id: I2225dbab05fe113291779ff9b83b2ff8c8e23782
diff --git a/include/perfetto/tracing/event_context.h b/include/perfetto/tracing/event_context.h
index fe9c4bb..4ae7f1e 100644
--- a/include/perfetto/tracing/event_context.h
+++ b/include/perfetto/tracing/event_context.h
@@ -41,8 +41,10 @@
 
   // For Chromium during the transition phase to the client library.
   // TODO(eseckler): Remove once Chromium has switched to client lib entirely.
-  explicit EventContext(protos::pbzero::TrackEvent* event)
-      : event_(event), incremental_state_(nullptr) {}
+  explicit EventContext(
+      protos::pbzero::TrackEvent* event,
+      internal::TrackEventIncrementalState* incremental_state = nullptr)
+      : event_(event), incremental_state_(incremental_state) {}
 
   ~EventContext();
 
diff --git a/include/perfetto/tracing/internal/track_event_internal.h b/include/perfetto/tracing/internal/track_event_internal.h
index 8796b3a..454dd7a 100644
--- a/include/perfetto/tracing/internal/track_event_internal.h
+++ b/include/perfetto/tracing/internal/track_event_internal.h
@@ -44,7 +44,7 @@
 namespace internal {
 class TrackEventCategoryRegistry;
 
-class BaseTrackEventInternedDataIndex {
+class PERFETTO_EXPORT BaseTrackEventInternedDataIndex {
  public:
   virtual ~BaseTrackEventInternedDataIndex();