diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/browser_about_handler.cc | 8 | ||||
-rw-r--r-- | chrome/browser/gpu_process_host.cc | 5 | ||||
-rw-r--r-- | chrome/browser/gpu_process_host.h | 3 |
3 files changed, 15 insertions, 1 deletions
diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc index 4c1b016..3f9abc2 100644 --- a/chrome/browser/browser_about_handler.cc +++ b/chrome/browser/browser_about_handler.cc @@ -273,7 +273,7 @@ std::string AboutAbout() { html.append(kAllAboutPaths[i]); html.append("</a>\n"); } - const char *debug[] = { "crash", "hang", "shorthang" }; + const char *debug[] = { "crash", "hang", "shorthang", "gpucrash" }; html.append("</ul><h2>For Debug</h2>"); html.append("</ul><p>The following pages are for debugging purposes only. " "Because they crash or hang the renderer, they're not linked " @@ -1209,6 +1209,12 @@ bool WillHandleBrowserAboutURL(GURL* url, Profile* profile) { return true; } + // Handle URL to crash the gpu process. + if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutGpuCrashURL)) { + GpuProcessHost::SendAboutGpuCrash(); + return true; + } + // There are a few about: URLs that we hand over to the renderer. If the // renderer wants them, don't do any rewriting. if (chrome_about_handler::WillHandle(*url)) diff --git a/chrome/browser/gpu_process_host.cc b/chrome/browser/gpu_process_host.cc index be60c19..f2bba1f 100644 --- a/chrome/browser/gpu_process_host.cc +++ b/chrome/browser/gpu_process_host.cc @@ -122,6 +122,11 @@ GpuProcessHost* GpuProcessHost::Get() { return sole_instance_; } +// static +void GpuProcessHost::SendAboutGpuCrash() { + Get()->Send(new GpuMsg_Crash()); +} + bool GpuProcessHost::Send(IPC::Message* msg) { if (!EnsureInitialized()) return false; diff --git a/chrome/browser/gpu_process_host.h b/chrome/browser/gpu_process_host.h index 77e825b..d885408 100644 --- a/chrome/browser/gpu_process_host.h +++ b/chrome/browser/gpu_process_host.h @@ -28,6 +28,9 @@ class GpuProcessHost : public BrowserChildProcessHost { // Getter for the singleton. This will return NULL on failure. static GpuProcessHost* Get(); + // Tells the GPU process to crash. Useful for testing. + static void SendAboutGpuCrash(); + // Shutdown routine, which should only be called upon process // termination. static void Shutdown(); |