diff options
author | Gopi Krishna Menon <gopi.menon@collabora.com> | 2021-06-07 14:21:33 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2021-06-16 14:45:35 +0200 |
commit | 4b925781760ba84e62cb847ddfe8f8c667a44c95 (patch) | |
tree | 0aac7bdda3cae5d84a0845eb42e0b6ce8d9ac43c /sfx2/source/view | |
parent | 3f9fcf0e7f154e49bbffeaea925edb6055add494 (diff) |
Add Active App Name Field To Crash Report
Adds a Active-App field in Crash
Report to assist in investigating
the crashes
Change-Id: I30e5f307045b8e5def9986447551f39e70b94edc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116786
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'sfx2/source/view')
-rw-r--r-- | sfx2/source/view/viewfrm.cxx | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index be8ea298b978..f15e0aa5bfc4 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -68,6 +68,8 @@ #include <com/sun/star/task/InteractionHandler.hpp> #include <com/sun/star/drawing/XDrawView.hpp> #include <com/sun/star/drawing/XDrawPagesSupplier.hpp> +#include <com/sun/star/frame/ModuleManager.hpp> +#include <com/sun/star/frame/UnknownModuleException.hpp> #include <rtl/ustrbuf.hxx> #include <sal/log.hxx> @@ -95,6 +97,8 @@ #include <commandpopup/CommandPopup.hxx> +#include <desktop/crashreport.hxx> + using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -143,6 +147,42 @@ using ::com::sun::star::container::XIndexContainer; SFX_IMPL_SUPERCLASS_INTERFACE(SfxViewFrame,SfxShell) +static OUString lcl_getModuleId(SfxViewFrame* pFrame) +{ + try + { + const auto xContext= comphelper::getProcessComponentContext(); + const Reference<frame::XFrame>& xFrame = pFrame->GetFrame().GetFrameInterface(); + const Reference<frame::XModuleManager> xModuleManager = frame::ModuleManager::create(xContext); + + return xModuleManager->identify(xFrame); + } + catch( css::frame::UnknownModuleException& ) + { + return OUString(); + } +} + +static OUString lcl_activeAppName(SfxViewFrame* pFrame) +{ + const OUString aModuleId = lcl_getModuleId(pFrame); + if ( aModuleId.startsWith("com.sun.star.text.") || aModuleId.startsWith("com.sun.star.xforms.") ) + return "Writer"; + else if ( aModuleId.startsWith("com.sun.star.sheet.") ) + return "Calc"; + else if ( aModuleId.startsWith("com.sun.star.presentation.") ) + return "Impress"; + else if ( aModuleId.startsWith("com.sun.star.drawing." ) ) + return "Draw"; + else if ( aModuleId.startsWith("com.sun.star.formula." ) ) + return "Math"; + else if ( aModuleId.startsWith("com.sun.star.sdb.") ) + return "Base"; + else + return OUString(); + +} + void SfxViewFrame::InitInterface_Impl() { GetStaticInterface()->RegisterChildWindow(SID_BROWSER); @@ -3385,7 +3425,10 @@ void SfxViewFrame::UpdateDocument_Impl() void SfxViewFrame::SetViewFrame( SfxViewFrame* pFrame ) { if(pFrame) + { + CrashReporter::setActiveApp(lcl_activeAppName(pFrame)); SetSVHelpData(pFrame->m_pHelpData); + } SetSVWinData(pFrame ? pFrame->m_pWinData : nullptr); |