chromium/base/memory/raw_ptr_liveness.dot

digraph {
  graph[bgcolor=white]
  node[shape=box]

  component[label="Is it a\ncomponent\nbuild?"]
  target_fanout[label="What target?"]
  disabled_lacking_pae[label="PA-E is not\navailable"]

  component->disabled_lacking_pae[label="yes"]
  component->target_fanout[label="no"]

  is_asan[label="Is the build\nASan?"]
  disabled_in_asan[label="disabled per\ncrbug/1413674"]
  is_bot[label="Is this a bot?"]
  browser_tests_enabled[label="BRP is live by default via\ntesting/variations/fieldtrial_testing_config.json"]
  is_chrome_branded[label="is_chrome_branded?"]
  enabled_by_feature[label="enabled on most platforms via\npartition_alloc_features.cc"]
  enabled_by_field_trial[label="enabled by default via\nfieldtrial_testing_config.json"]
  enabled_in_unit_tests[label="enabled by default via\nenable_backup_ref_ptr_feature_flag"]

  target_fanout->is_asan[label="unit\ntest"]
  target_fanout->browser_tests_enabled[label="browser\ntest"]
  target_fanout->is_chrome_branded[label="Chromium\ntarget"]

  is_asan->is_bot[label="no"]
  is_asan->disabled_in_asan[label="yes"]
  disabled_in_asan->noop
  browser_tests_enabled->live_brp
  is_chrome_branded->enabled_by_feature[label="yes"]
  is_chrome_branded->enabled_by_field_trial[label="no"]

  {rank=same noop, inert_brp, live_brp}
  noop[label="raw_ptr is\nRawPtrNoOpImpl"]
  live_brp[label="BRP is live"]
  inert_brp[label="BRP is inert"]
  unit_tests_inert_brp[label="BRP is inert by\ndefault; enable with\nenable_backup_ref_ptr_feature_flag"]

  disabled_lacking_pae->noop
  is_bot->enabled_in_unit_tests[label="yes"]
  is_bot->unit_tests_inert_brp[label="no"]

  enabled_in_unit_tests->live_brp
  unit_tests_inert_brp->inert_brp
  enabled_by_feature->live_brp
  enabled_by_field_trial->live_brp
}