#include "content/browser/renderer_host/debug_urls.h"
#include <vector>
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/debug/alias.h"
#include "base/debug/asan_invalid_access.h"
#include "base/debug/profiler.h"
#include "base/functional/bind.h"
#include "base/memory/memory_pressure_listener.h"
#include "base/sanitizer_buildflags.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/thread_restrictions.h"
#include "build/build_config.h"
#include "cc/base/switches.h"
#include "content/browser/gpu/gpu_process_host.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_constants.h"
#include "content/public/common/url_constants.h"
#include "ppapi/buildflags/buildflags.h"
#include "third_party/blink/public/common/chrome_debug_urls.h"
#include "url/gurl.h"
#if BUILDFLAG(ENABLE_PLUGINS)
#include "content/browser/ppapi_plugin_process_host.h"
#include "ppapi/proxy/ppapi_messages.h"
#endif
#if BUILDFLAG(IS_WIN)
#include "base/debug/invalid_access_win.h"
#endif
namespace content {
class ScopedAllowWaitForDebugURL { … };
namespace {
const char kAsanCrashDomain[] = …;
const char kAsanHeapOverflow[] = …;
const char kAsanHeapUnderflow[] = …;
const char kAsanUseAfterFree[] = …;
#if BUILDFLAG(IS_WIN)
const char kAsanCorruptHeapBlock[] = "/browser-corrupt-heap-block";
const char kAsanCorruptHeap[] = "/browser-corrupt-heap";
#endif
bool IsAsanDebugURL(const GURL& url) { … }
bool HandleAsanDebugURL(const GURL& url) { … }
NOINLINE void HangCurrentThread() { … }
NOINLINE void CrashBrowserProcessIntentionally() { … }
}
bool HandleDebugURL(const GURL& url,
ui::PageTransition transition,
bool is_explicit_navigation) { … }
}