summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/app/breakpad_linux.cc3
-rw-r--r--chrome/browser/chrome_content_browser_client.cc10
-rw-r--r--chrome/browser/crash_handler_host_linux.cc40
-rw-r--r--chrome/browser/crash_handler_host_linux.h41
-rw-r--r--chrome/browser/crash_handler_host_linux_stub.cc27
5 files changed, 86 insertions, 35 deletions
diff --git a/chrome/app/breakpad_linux.cc b/chrome/app/breakpad_linux.cc
index 10332bb..60b808f 100644
--- a/chrome/app/breakpad_linux.cc
+++ b/chrome/app/breakpad_linux.cc
@@ -686,7 +686,7 @@ void EnableCrashDumping(const bool unattended) {
}
}
-// Currently Non-Browser = Renderer, Plugins and Gpu
+// Non-Browser = Extension, Gpu, Plugins, Ppapi and Renderer
static bool
NonBrowserCrashHandler(const void* crash_context, size_t crash_context_size,
void* context) {
@@ -786,6 +786,7 @@ void InitCrashReporter() {
if (process_type.empty()) {
EnableCrashDumping(getenv(env_vars::kHeadless) != NULL);
} else if (process_type == switches::kRendererProcess ||
+ process_type == switches::kExtensionProcess ||
process_type == switches::kPluginProcess ||
process_type == switches::kPpapiPluginProcess ||
process_type == switches::kZygoteProcess ||
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 51066c7..5226137 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -131,7 +131,7 @@ void InitRenderViewHostForExtensions(RenderViewHost* render_view_host) {
}
}
-}
+} // namespace
namespace chrome {
@@ -595,6 +595,12 @@ int ChromeContentBrowserClient::GetCrashSignalFD(
if (process_type == switches::kRendererProcess)
return RendererCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket();
+ if (process_type == switches::kExtensionProcess) {
+ ExtensionCrashHandlerHostLinux* crash_handler =
+ ExtensionCrashHandlerHostLinux::GetInstance();
+ return crash_handler->GetDeathSignalSocket();
+ }
+
if (process_type == switches::kPluginProcess)
return PluginCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket();
@@ -606,7 +612,7 @@ int ChromeContentBrowserClient::GetCrashSignalFD(
return -1;
}
-#endif
+#endif // defined(OS_LINUX)
#if defined(USE_NSS)
crypto::CryptoModuleBlockingPasswordDelegate*
diff --git a/chrome/browser/crash_handler_host_linux.cc b/chrome/browser/crash_handler_host_linux.cc
index 0249c95..a013f1d 100644
--- a/chrome/browser/crash_handler_host_linux.cc
+++ b/chrome/browser/crash_handler_host_linux.cc
@@ -389,6 +389,22 @@ bool CrashHandlerHostLinux::IsShuttingDown() const {
return shutting_down_;
}
+ExtensionCrashHandlerHostLinux::ExtensionCrashHandlerHostLinux() {
+ InitCrashUploaderThread();
+}
+
+ExtensionCrashHandlerHostLinux::~ExtensionCrashHandlerHostLinux() {
+}
+
+void ExtensionCrashHandlerHostLinux::SetProcessType() {
+ process_type_ = "extension";
+}
+
+// static
+ExtensionCrashHandlerHostLinux* ExtensionCrashHandlerHostLinux::GetInstance() {
+ return Singleton<ExtensionCrashHandlerHostLinux>::get();
+}
+
GpuCrashHandlerHostLinux::GpuCrashHandlerHostLinux() {
InitCrashUploaderThread();
}
@@ -421,34 +437,34 @@ PluginCrashHandlerHostLinux* PluginCrashHandlerHostLinux::GetInstance() {
return Singleton<PluginCrashHandlerHostLinux>::get();
}
-RendererCrashHandlerHostLinux::RendererCrashHandlerHostLinux() {
+PpapiCrashHandlerHostLinux::PpapiCrashHandlerHostLinux() {
InitCrashUploaderThread();
}
-RendererCrashHandlerHostLinux::~RendererCrashHandlerHostLinux() {
+PpapiCrashHandlerHostLinux::~PpapiCrashHandlerHostLinux() {
}
-void RendererCrashHandlerHostLinux::SetProcessType() {
- process_type_ = "renderer";
+void PpapiCrashHandlerHostLinux::SetProcessType() {
+ process_type_ = "ppapi";
}
// static
-RendererCrashHandlerHostLinux* RendererCrashHandlerHostLinux::GetInstance() {
- return Singleton<RendererCrashHandlerHostLinux>::get();
+PpapiCrashHandlerHostLinux* PpapiCrashHandlerHostLinux::GetInstance() {
+ return Singleton<PpapiCrashHandlerHostLinux>::get();
}
-PpapiCrashHandlerHostLinux::PpapiCrashHandlerHostLinux() {
+RendererCrashHandlerHostLinux::RendererCrashHandlerHostLinux() {
InitCrashUploaderThread();
}
-PpapiCrashHandlerHostLinux::~PpapiCrashHandlerHostLinux() {
+RendererCrashHandlerHostLinux::~RendererCrashHandlerHostLinux() {
}
-void PpapiCrashHandlerHostLinux::SetProcessType() {
- process_type_ = "ppapi";
+void RendererCrashHandlerHostLinux::SetProcessType() {
+ process_type_ = "renderer";
}
// static
-PpapiCrashHandlerHostLinux* PpapiCrashHandlerHostLinux::GetInstance() {
- return Singleton<PpapiCrashHandlerHostLinux>::get();
+RendererCrashHandlerHostLinux* RendererCrashHandlerHostLinux::GetInstance() {
+ return Singleton<RendererCrashHandlerHostLinux>::get();
}
diff --git a/chrome/browser/crash_handler_host_linux.h b/chrome/browser/crash_handler_host_linux.h
index 3ef2657..ecdebac 100644
--- a/chrome/browser/crash_handler_host_linux.h
+++ b/chrome/browser/crash_handler_host_linux.h
@@ -95,6 +95,23 @@ class CrashHandlerHostLinux : public MessageLoopForIO::Watcher,
DISALLOW_COPY_AND_ASSIGN(CrashHandlerHostLinux);
};
+class ExtensionCrashHandlerHostLinux : public CrashHandlerHostLinux {
+ public:
+ // Returns the singleton instance.
+ static ExtensionCrashHandlerHostLinux* GetInstance();
+
+ private:
+ friend struct DefaultSingletonTraits<ExtensionCrashHandlerHostLinux>;
+ ExtensionCrashHandlerHostLinux();
+ virtual ~ExtensionCrashHandlerHostLinux();
+
+#if defined(USE_LINUX_BREAKPAD)
+ virtual void SetProcessType();
+#endif
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionCrashHandlerHostLinux);
+};
+
class GpuCrashHandlerHostLinux : public CrashHandlerHostLinux {
public:
// Returns the singleton instance.
@@ -129,38 +146,38 @@ class PluginCrashHandlerHostLinux : public CrashHandlerHostLinux {
DISALLOW_COPY_AND_ASSIGN(PluginCrashHandlerHostLinux);
};
-class RendererCrashHandlerHostLinux : public CrashHandlerHostLinux {
+class PpapiCrashHandlerHostLinux : public CrashHandlerHostLinux {
public:
// Returns the singleton instance.
- static RendererCrashHandlerHostLinux* GetInstance();
+ static PpapiCrashHandlerHostLinux* GetInstance();
private:
- friend struct DefaultSingletonTraits<RendererCrashHandlerHostLinux>;
- RendererCrashHandlerHostLinux();
- virtual ~RendererCrashHandlerHostLinux();
+ friend struct DefaultSingletonTraits<PpapiCrashHandlerHostLinux>;
+ PpapiCrashHandlerHostLinux();
+ virtual ~PpapiCrashHandlerHostLinux();
#if defined(USE_LINUX_BREAKPAD)
virtual void SetProcessType();
#endif
- DISALLOW_COPY_AND_ASSIGN(RendererCrashHandlerHostLinux);
+ DISALLOW_COPY_AND_ASSIGN(PpapiCrashHandlerHostLinux);
};
-class PpapiCrashHandlerHostLinux : public CrashHandlerHostLinux {
+class RendererCrashHandlerHostLinux : public CrashHandlerHostLinux {
public:
// Returns the singleton instance.
- static PpapiCrashHandlerHostLinux* GetInstance();
+ static RendererCrashHandlerHostLinux* GetInstance();
private:
- friend struct DefaultSingletonTraits<PpapiCrashHandlerHostLinux>;
- PpapiCrashHandlerHostLinux();
- virtual ~PpapiCrashHandlerHostLinux();
+ friend struct DefaultSingletonTraits<RendererCrashHandlerHostLinux>;
+ RendererCrashHandlerHostLinux();
+ virtual ~RendererCrashHandlerHostLinux();
#if defined(USE_LINUX_BREAKPAD)
virtual void SetProcessType();
#endif
- DISALLOW_COPY_AND_ASSIGN(PpapiCrashHandlerHostLinux);
+ DISALLOW_COPY_AND_ASSIGN(RendererCrashHandlerHostLinux);
};
#endif // CHROME_BROWSER_CRASH_HANDLER_HOST_LINUX_H_
diff --git a/chrome/browser/crash_handler_host_linux_stub.cc b/chrome/browser/crash_handler_host_linux_stub.cc
index 6891de1..8685846 100644
--- a/chrome/browser/crash_handler_host_linux_stub.cc
+++ b/chrome/browser/crash_handler_host_linux_stub.cc
@@ -26,6 +26,17 @@ void CrashHandlerHostLinux::OnFileCanWriteWithoutBlocking(int fd) {
void CrashHandlerHostLinux::WillDestroyCurrentMessageLoop() {
}
+ExtensionCrashHandlerHostLinux::ExtensionCrashHandlerHostLinux() {
+}
+
+ExtensionCrashHandlerHostLinux::~ExtensionCrashHandlerHostLinux() {
+}
+
+// static
+ExtensionCrashHandlerHostLinux* ExtensionCrashHandlerHostLinux::GetInstance() {
+ return Singleton<ExtensionCrashHandlerHostLinux>::get();
+}
+
GpuCrashHandlerHostLinux::GpuCrashHandlerHostLinux() {
}
@@ -48,24 +59,24 @@ PluginCrashHandlerHostLinux* PluginCrashHandlerHostLinux::GetInstance() {
return Singleton<PluginCrashHandlerHostLinux>::get();
}
-RendererCrashHandlerHostLinux::RendererCrashHandlerHostLinux() {
+PpapiCrashHandlerHostLinux::PpapiCrashHandlerHostLinux() {
}
-RendererCrashHandlerHostLinux::~RendererCrashHandlerHostLinux() {
+PpapiCrashHandlerHostLinux::~PpapiCrashHandlerHostLinux() {
}
// static
-RendererCrashHandlerHostLinux* RendererCrashHandlerHostLinux::GetInstance() {
- return Singleton<RendererCrashHandlerHostLinux>::get();
+PpapiCrashHandlerHostLinux* PpapiCrashHandlerHostLinux::GetInstance() {
+ return Singleton<PpapiCrashHandlerHostLinux>::get();
}
-PpapiCrashHandlerHostLinux::PpapiCrashHandlerHostLinux() {
+RendererCrashHandlerHostLinux::RendererCrashHandlerHostLinux() {
}
-PpapiCrashHandlerHostLinux::~PpapiCrashHandlerHostLinux() {
+RendererCrashHandlerHostLinux::~RendererCrashHandlerHostLinux() {
}
// static
-PpapiCrashHandlerHostLinux* PpapiCrashHandlerHostLinux::GetInstance() {
- return Singleton<PpapiCrashHandlerHostLinux>::get();
+RendererCrashHandlerHostLinux* RendererCrashHandlerHostLinux::GetInstance() {
+ return Singleton<RendererCrashHandlerHostLinux>::get();
}