summaryrefslogtreecommitdiff
path: root/sfx2/source/view
diff options
context:
space:
mode:
authorGopi Krishna Menon <gopi.menon@collabora.com>2021-06-07 14:21:33 +0000
committerTor Lillqvist <tml@collabora.com>2021-06-16 14:45:35 +0200
commit4b925781760ba84e62cb847ddfe8f8c667a44c95 (patch)
tree0aac7bdda3cae5d84a0845eb42e0b6ce8d9ac43c /sfx2/source/view
parent3f9fcf0e7f154e49bbffeaea925edb6055add494 (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.cxx43
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);