summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser_about_handler.cc8
-rw-r--r--chrome/browser/gpu_process_host.cc5
-rw-r--r--chrome/browser/gpu_process_host.h3
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();