summaryrefslogtreecommitdiffstats
path: root/gfx/src
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/src')
-rw-r--r--gfx/src/gfxCrashReporterUtils.cpp141
-rw-r--r--gfx/src/gfxCrashReporterUtils.h51
-rw-r--r--gfx/src/moz.build2
3 files changed, 0 insertions, 194 deletions
diff --git a/gfx/src/gfxCrashReporterUtils.cpp b/gfx/src/gfxCrashReporterUtils.cpp
deleted file mode 100644
index 757c15527..000000000
--- a/gfx/src/gfxCrashReporterUtils.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/. */
-
-#include "gfxCrashReporterUtils.h"
-
-#ifdef MOZ_GFXFEATUREREPORTER
-#include "gfxCrashReporterUtils.h"
-#include <string.h> // for strcmp
-#include "mozilla/Assertions.h" // for MOZ_ASSERT_HELPER2
-#include "mozilla/Services.h" // for GetObserverService
-#include "mozilla/StaticMutex.h"
-#include "mozilla/mozalloc.h" // for operator new, etc
-#include "mozilla/RefPtr.h" // for RefPtr
-#include "nsCOMPtr.h" // for nsCOMPtr
-#include "nsError.h" // for NS_OK, NS_FAILED, nsresult
-#include "nsExceptionHandler.h" // for AppendAppNotesToCrashReport
-#include "nsID.h"
-#include "nsIEventTarget.h" // for NS_DISPATCH_NORMAL
-#include "nsIObserver.h" // for nsIObserver, etc
-#include "nsIObserverService.h" // for nsIObserverService
-#include "nsIRunnable.h" // for nsIRunnable
-#include "nsISupports.h"
-#include "nsTArray.h" // for nsTArray
-#include "nsThreadUtils.h" // for NS_DispatchToMainThread, etc
-#include "nscore.h" // for NS_IMETHOD, NS_IMETHODIMP, etc
-
-namespace mozilla {
-
-static nsTArray<nsCString> *gFeaturesAlreadyReported = nullptr;
-static StaticMutex gFeaturesAlreadyReportedMutex;
-
-class ObserverToDestroyFeaturesAlreadyReported final : public nsIObserver
-{
-
-public:
- NS_DECL_ISUPPORTS
- NS_DECL_NSIOBSERVER
-
- ObserverToDestroyFeaturesAlreadyReported() {}
-private:
- virtual ~ObserverToDestroyFeaturesAlreadyReported() {}
-};
-
-NS_IMPL_ISUPPORTS(ObserverToDestroyFeaturesAlreadyReported,
- nsIObserver)
-
-NS_IMETHODIMP
-ObserverToDestroyFeaturesAlreadyReported::Observe(nsISupports* aSubject,
- const char* aTopic,
- const char16_t* aData)
-{
- if (!strcmp(aTopic, "xpcom-shutdown")) {
- StaticMutexAutoLock al(gFeaturesAlreadyReportedMutex);
- if (gFeaturesAlreadyReported) {
- delete gFeaturesAlreadyReported;
- gFeaturesAlreadyReported = nullptr;
- }
- }
- return NS_OK;
-}
-
-class RegisterObserverRunnable : public Runnable {
-public:
- NS_IMETHOD Run() override {
- // LeakLog made me do this. Basically, I just wanted gFeaturesAlreadyReported to be a static nsTArray<nsCString>,
- // and LeakLog was complaining about leaks like this:
- // leaked 1 instance of nsTArray_base with size 8 bytes
- // leaked 7 instances of nsStringBuffer with size 8 bytes each (56 bytes total)
- // So this is a work-around using a pointer, and using a nsIObserver to deallocate on xpcom shutdown.
- // Yay for fighting bloat.
- nsCOMPtr<nsIObserverService> observerService = mozilla::services::GetObserverService();
- if (!observerService)
- return NS_OK;
- RefPtr<ObserverToDestroyFeaturesAlreadyReported> observer = new ObserverToDestroyFeaturesAlreadyReported;
- observerService->AddObserver(observer, "xpcom-shutdown", false);
- return NS_OK;
- }
-};
-
-class AppendAppNotesRunnable : public CancelableRunnable {
-public:
- explicit AppendAppNotesRunnable(const nsACString& aFeatureStr)
- : mFeatureString(aFeatureStr)
- {
- }
-
- NS_IMETHOD Run() override {
- CrashReporter::AppendAppNotesToCrashReport(mFeatureString);
- return NS_OK;
- }
-
-private:
- nsAutoCString mFeatureString;
-};
-
-void
-ScopedGfxFeatureReporter::WriteAppNote(char statusChar)
-{
- StaticMutexAutoLock al(gFeaturesAlreadyReportedMutex);
-
- if (!gFeaturesAlreadyReported) {
- gFeaturesAlreadyReported = new nsTArray<nsCString>;
- nsCOMPtr<nsIRunnable> r = new RegisterObserverRunnable();
- NS_DispatchToMainThread(r);
- }
-
- nsAutoCString featureString;
- featureString.AppendPrintf("%s%c ",
- mFeature,
- statusChar);
-
- if (!gFeaturesAlreadyReported->Contains(featureString)) {
- gFeaturesAlreadyReported->AppendElement(featureString);
- AppNote(featureString);
- }
-}
-
-void
-ScopedGfxFeatureReporter::AppNote(const nsACString& aMessage)
-{
- if (NS_IsMainThread()) {
- CrashReporter::AppendAppNotesToCrashReport(aMessage);
- } else {
- nsCOMPtr<nsIRunnable> r = new AppendAppNotesRunnable(aMessage);
- NS_DispatchToMainThread(r);
- }
-}
-
-} // end namespace mozilla
-
-#else
-
-namespace mozilla {
-void ScopedGfxFeatureReporter::WriteAppNote(char) {}
-void ScopedGfxFeatureReporter::AppNote(const nsACString&) {}
-
-} // namespace mozilla
-
-#endif
diff --git a/gfx/src/gfxCrashReporterUtils.h b/gfx/src/gfxCrashReporterUtils.h
deleted file mode 100644
index efc5ab1ab..000000000
--- a/gfx/src/gfxCrashReporterUtils.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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 gfxCrashReporterUtils_h__
-#define gfxCrashReporterUtils_h__
-
-#include "nsString.h"
-
-namespace mozilla {
-
-/** \class ScopedGfxFeatureReporter
- *
- * On creation, adds "FeatureName?" to AppNotes
- * On destruction, adds "FeatureName-", or "FeatureName+" if you called SetSuccessful().
- *
- * Any such string is added at most once to AppNotes, and is subsequently skipped.
- *
- * This ScopedGfxFeatureReporter class is designed to be fool-proof to use in functions that
- * have many exit points. We don't want to encourage having function with many exit points.
- * It just happens that our graphics features initialization functions are like that.
- */
-class ScopedGfxFeatureReporter
-{
-public:
- explicit ScopedGfxFeatureReporter(const char *aFeature, bool aForce = false)
- : mFeature(aFeature), mStatusChar('-')
- {
- WriteAppNote(aForce ? '!' : '?');
- }
- ~ScopedGfxFeatureReporter() {
- WriteAppNote(mStatusChar);
- }
- void SetSuccessful() { mStatusChar = '+'; }
-
- static void AppNote(const nsACString& aMessage);
-
- class AppNoteWritingRunnable;
-
-protected:
- const char *mFeature;
- char mStatusChar;
-
-private:
- void WriteAppNote(char statusChar);
-};
-
-} // end namespace mozilla
-
-#endif // gfxCrashReporterUtils_h__
diff --git a/gfx/src/moz.build b/gfx/src/moz.build
index 3678eee7a..ea707a340 100644
--- a/gfx/src/moz.build
+++ b/gfx/src/moz.build
@@ -16,7 +16,6 @@ DEFINES['MOZ_APP_VERSION'] = '"%s"' % CONFIG['MOZ_APP_VERSION']
EXPORTS += [
'DriverCrashGuard.h',
'FilterSupport.h',
- 'gfxCrashReporterUtils.h',
'gfxTelemetry.h',
'nsBoundingMetrics.h',
'nsColor.h',
@@ -60,7 +59,6 @@ if CONFIG['MOZ_X11']:
UNIFIED_SOURCES += [
'DriverCrashGuard.cpp',
'FilterSupport.cpp',
- 'gfxCrashReporterUtils.cpp',
'gfxTelemetry.cpp',
'nsColor.cpp',
'nsFont.cpp',