start method

Future<void> start({
  1. bool? screenshots,
  2. List<String>? categories,
})

Only one trace can be active at a time per browser.

Parameters:

Implementation

//  - `screenshots`: captures screenshots in the trace.
//  - `categories`: specify custom categories to use instead of default.
Future<void> start({bool? screenshots, List<String>? categories}) async {
  if (_recording) {
    throw Exception(
        'Cannot start recording trace while already recording trace.');
  }
  screenshots ??= false;

  const defaultCategories = [
    '-*',
    'devtools.timeline',
    'v8.execute',
    'disabled-by-default-devtools.timeline',
    'disabled-by-default-devtools.timeline.frame',
    'toplevel',
    'blink.console',
    'blink.user_timing',
    'latencyInfo',
    'disabled-by-default-devtools.timeline.stack',
    'disabled-by-default-v8.cpu_profiler',
    'disabled-by-default-v8.cpu_profiler.hires'
  ];

  categories ??= defaultCategories.toList();

  if (screenshots) {
    categories.add('disabled-by-default-devtools.screenshot');
  }

  _recording = true;
  await _devTools.tracing.start(
      transferMode: 'ReturnAsStream',
      //TODO(xha): use the new api
      // ignore: deprecated_member_use_from_same_package
      categories: categories.join(','));
}