diff options
-rw-r--r-- | chrome/app/breakpad_linux.cc | 3 | ||||
-rw-r--r-- | chrome/browser/chrome_content_browser_client.cc | 10 | ||||
-rw-r--r-- | chrome/browser/crash_handler_host_linux.cc | 40 | ||||
-rw-r--r-- | chrome/browser/crash_handler_host_linux.h | 41 | ||||
-rw-r--r-- | chrome/browser/crash_handler_host_linux_stub.cc | 27 |
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(); } |