enum RecordingMode { "record-until-full", "record-continuously", "record-as-much-as-possible", "trace-to-console" };

dictionary TraceConfig {
  Recordingmode recording_mode;
  unsigned long trace_buffer_size_in_kb;
  unsigned long trace_buffer_size_in_events;
  boolean enable_argument_filter;
  sequence<DOMString> included_categories;
  sequence<DOMString> excluded_categories;
  sequence<unsigned short> included_process_ids;
  sequence<DOMString> histogram_names;
  object memory_dump_config;
};

dictionary TraceCategoriesAndOptions {
  DOMString categoryFilter;
  DOMString traceOptions;
};

interface ContentTracing {
  Promise<sequence<DOMString>> getCategories();
  Promise<void> startRecording(TraceConfig config);
  Promise<void> startRecording(TraceCategoriesAndOptions categoriesAndOptions);
  Promise<DOMString> stopRecording(optional DOMString resultFilePath);
  Promise<TraceBufferUsage> getTraceBufferUsage();
};
