diff options
Diffstat (limited to 'include/desktop')
-rw-r--r-- | include/desktop/crashreport.hxx | 118 | ||||
-rw-r--r-- | include/desktop/dllapi.h | 30 | ||||
-rw-r--r-- | include/desktop/exithelper.h | 37 | ||||
-rw-r--r-- | include/desktop/minidump.hxx | 35 |
4 files changed, 220 insertions, 0 deletions
diff --git a/include/desktop/crashreport.hxx b/include/desktop/crashreport.hxx new file mode 100644 index 000000000..403e31171 --- /dev/null +++ b/include/desktop/crashreport.hxx @@ -0,0 +1,118 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_DESKTOP_CRASHREPORT_HXX +#define INCLUDED_DESKTOP_CRASHREPORT_HXX + +#include <desktop/dllapi.h> + +#include <rtl/ustring.hxx> +#include <osl/mutex.hxx> + +#include <config_features.h> + +// vector not sort the entries +#include <memory> +#include <vector> +#include <deque> +#include <string> + +namespace google_breakpad +{ +class ExceptionHandler; +} + +/** + * Provides access to the crash reporter service. + * + * Valid keys are: + * * AdapterVendorId + * * AdapterDeviceId + * + */ +class +#if HAVE_FEATURE_BREAKPAD +// MSVC 2013 has undefined symbols for inline functions if it's exported +CRASHREPORT_DLLPUBLIC +#endif +/*class*/ CrashReporter +{ +public: + typedef enum {AddItem, Write, Create} tAddKeyHandling; +#if HAVE_FEATURE_BREAKPAD + static void addKeyValue(const OUString& rKey, const OUString& rValue, tAddKeyHandling AddKeyHandling); + + static void installExceptionHandler(); + static void removeExceptionHandler(); + + static void setActiveSfxObjectName(const OUString& rActiveSfxObjectName); + static OUString getActiveSfxObjectName(); + + static void logUnoCommand(const OUString& rUnoCommand); + static OUString getLoggedUnoCommands(); + + static bool crashReportInfoExists(); + + static bool readSendConfig(std::string& response); + + static bool IsDumpEnable(); + +private: + static osl::Mutex maMutex; + static osl::Mutex maActiveSfxObjectNameMutex; + static osl::Mutex maUnoLogCmdMutex; + static bool mbInit; + typedef struct _mpair + { + OUString first; + OUString second; + _mpair(const OUString& First, const OUString& Second) + { + first = First; + second = Second; + }; + } mpair; + + typedef std::vector<mpair> vmaKeyValues; + static vmaKeyValues maKeyValues; // used to temporarily save entries before the old info has been uploaded + typedef std::deque<OUString> vmaloggedUnoCommands; + static vmaloggedUnoCommands maloggedUnoCommands; + static OUString msActiveSfxObjectName; + + static std::unique_ptr<google_breakpad::ExceptionHandler> mpExceptionHandler; + + static std::string getIniFileName(); + static void writeCommonInfo(); + static void writeSystemInfo(); + static void writeToFile(std::ios_base::openmode Openmode); + // when we create the ExceptionHandler we have no access to the user + // profile yet, so update when we have access + static void updateMinidumpLocation(); + +#else + // Add dummy methods for the non-breakpad case. That allows us to use + // // the code without linking to the lib and without adding HAVE_FEATURE_BREAKPAD + // // everywhere we want to log something to the crash report system. + inline static void addKeyValue(SAL_UNUSED_PARAMETER const OUString& /*rKey*/, SAL_UNUSED_PARAMETER const OUString& /*rValue*/, SAL_UNUSED_PARAMETER tAddKeyHandling /*AddKeyHandling*/) {}; + inline static void setActiveSfxObjectName(SAL_UNUSED_PARAMETER const OUString& /*rActiveSfxObjectName*/) {}; + inline static OUString getActiveSfxObjectName() + { + return OUString(); + } + inline static void logUnoCommand(SAL_UNUSED_PARAMETER const OUString& /*rUnoCommand*/) {}; + inline static OUString getLoggedUnoCommands() + { + return OUString(); + } +#endif // HAVE_FEATURE_BREAKPAD +}; + +#endif // INCLUDED_DESKTOP_CRASHREPORT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/desktop/dllapi.h b/include/desktop/dllapi.h new file mode 100644 index 000000000..5cf948ce0 --- /dev/null +++ b/include/desktop/dllapi.h @@ -0,0 +1,30 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_DESKTOP_SOURCE_INC_DESKTOPDLLAPI_H +#define INCLUDED_DESKTOP_SOURCE_INC_DESKTOPDLLAPI_H + +#include <sal/config.h> +#include <sal/types.h> + +#if defined(DESKTOP_DLLIMPLEMENTATION) +#define DESKTOP_DLLPUBLIC SAL_DLLPUBLIC_EXPORT +#else +#define DESKTOP_DLLPUBLIC SAL_DLLPUBLIC_IMPORT +#endif + +#if defined(CRASHREPORT_DLLIMPLEMENTATION) +#define CRASHREPORT_DLLPUBLIC SAL_DLLPUBLIC_EXPORT +#else +#define CRASHREPORT_DLLPUBLIC SAL_DLLPUBLIC_IMPORT +#endif + +#endif + +/* vim: set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/desktop/exithelper.h b/include/desktop/exithelper.h new file mode 100644 index 000000000..b4f618783 --- /dev/null +++ b/include/desktop/exithelper.h @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_DESKTOP_EXITHELPER_H +#define INCLUDED_DESKTOP_EXITHELPER_H + +enum EExitCodes +{ + /* e.g. used to force showing of the command line help */ + EXITHELPER_NO_ERROR = 0, + /* a uno exception was caught during startup */ + EXITHELPER_FATAL_ERROR = 77, + /* user force automatic restart after crash */ + EXITHELPER_CRASH_WITH_RESTART = 79, + /* the office restarts itself */ + EXITHELPER_NORMAL_RESTART = 81 +}; + +#endif // INCLUDED_DESKTOP_EXITHELPER_H + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/desktop/minidump.hxx b/include/desktop/minidump.hxx new file mode 100644 index 000000000..93c02f3e0 --- /dev/null +++ b/include/desktop/minidump.hxx @@ -0,0 +1,35 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_DESKTOP_MINIDUMP_MINIDUMP_HXX +#define INCLUDED_DESKTOP_MINIDUMP_MINIDUMP_HXX + +#include <string> + +#include <desktop/dllapi.h> + +namespace crashreport +{ +// when response = nullptr only make test +/** Read+Send, Test and send info from the Dump.ini . + + @param [in] iniPath Path-file to the read/test ini-file (UTF-8 on Windows) + @param [in] response=nullptr in this case made the Test only + @param [in] response!=nullptr in this case made the Read+Send + + @retval true Read+Send, Test was okay + @retval false Read+Send, Test is a error +*/ + +CRASHREPORT_DLLPUBLIC bool readConfig(const std::string& iniPath, std::string* response); +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |