summaryrefslogtreecommitdiff
path: root/gfx/src/gfxCrashReporterUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/src/gfxCrashReporterUtils.cpp')
-rw-r--r--gfx/src/gfxCrashReporterUtils.cpp141
1 files changed, 0 insertions, 141 deletions
diff --git a/gfx/src/gfxCrashReporterUtils.cpp b/gfx/src/gfxCrashReporterUtils.cpp
deleted file mode 100644
index 757c15527a..0000000000
--- 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