Bug 1412981 - Remove nsIStatusReporter as it is unused. r=froydnj

--HG--
extra : rebase_source : 9b917d55005e90abe26a61a58368ff82bf103c3f
This commit is contained in:
Marco Castelluccio 2017-10-30 18:49:05 +00:00
Родитель ede9d9fd21
Коммит ecf5ddbf21
7 изменённых файлов: 0 добавлений и 464 удалений

Просмотреть файл

@ -21,7 +21,6 @@ XPIDL_SOURCES += [
'nsIMessageLoop.idl',
'nsIMutable.idl',
'nsISecurityConsoleMessage.idl',
'nsIStatusReporter.idl',
'nsISupports.idl',
'nsIUUIDGenerator.idl',
'nsIVersionComparator.idl',
@ -160,7 +159,6 @@ UNIFIED_SOURCES += [
'nsMessageLoop.cpp',
'NSPRLogModulesParser.cpp',
'nsSecurityConsoleMessage.cpp',
'nsStatusReporterManager.cpp',
'nsSystemInfo.cpp',
'nsTraceRefcnt.cpp',
'nsUUIDGenerator.cpp',

Просмотреть файл

@ -1,90 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "nsISupports.idl"
interface nsISimpleEnumerator;
/*
* Status reporters show Firefox's service status.
*/
[scriptable, uuid(ffcb716c-deeb-44ea-9d9d-ab25dc6980a8)]
interface nsIStatusReporter : nsISupports
{
readonly attribute ACString name;
/*
* The name of the process containing this reporter. Each reporter initially
* has "" in this field, indicating that it applies to the current process.
*/
readonly attribute ACString process;
/*
* A human-readable status description.
*/
readonly attribute AUTF8String description;
};
[scriptable, uuid(fd531273-3319-4fcd-90f2-9f53876c3828)]
interface nsIStatusReporterManager : nsISupports
{
/*
* Return an enumerator of nsIStatusReporters that are currently registered.
*/
nsISimpleEnumerator enumerateReporters();
/*
* Register the given nsIStatusReporter. After a reporter is registered,
* it will be available via enumerateReporters(). The Manager service
* will hold a strong reference to the given reporter.
*/
void registerReporter(in nsIStatusReporter reporter);
/*
* Unregister the given status reporter.
*/
void unregisterReporter(in nsIStatusReporter reporter);
/*
* Initialize.
*/
void init();
/*
* Dump service status as a json file
*/
void dumpReports();
};
%{C++
/*
* Note that this defaults 'process' to "", which is usually what's desired.
*/
#define NS_STATUS_REPORTER_IMPLEMENT(_classname, _name, _desc_Function) \
class StatusReporter_##_classname final : public nsIStatusReporter { \
~StatusReporter_##_classname() {} \
public: \
NS_DECL_ISUPPORTS \
NS_IMETHOD GetName(nsACString &name) override \
{ name.AssignLiteral(_name); return NS_OK; } \
NS_IMETHOD GetProcess(nsACString &process) override \
{ process.Truncate(); return NS_OK; } \
NS_IMETHOD GetDescription(nsACString &desc) override \
{ _desc_Function(desc); return NS_OK; } \
}; \
NS_IMPL_ISUPPORTS(StatusReporter_##_classname, nsIStatusReporter)
#define NS_STATUS_REPORTER_NAME(_classname) StatusReporter_##_classname
nsresult NS_RegisterStatusReporter(nsIStatusReporter *reporter);
nsresult NS_UnregisterStatusReporter(nsIStatusReporter *reporter);
nsresult NS_DumpStatusReporter();
#define NS_STATUS_REPORTER_MANAGER_CID \
{ 0xe8eb4e7e, 0xf2cf, 0x45e5, \
{ 0xb8, 0xa4, 0x6a, 0x0f, 0x50, 0x18, 0x84, 0x63 } }
%}

Просмотреть файл

@ -1,321 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "nsStatusReporterManager.h"
#include "nsCOMPtr.h"
#include "nsDirectoryServiceDefs.h"
#include "nsArrayEnumerator.h"
#include "nsISimpleEnumerator.h"
#include "nsIFile.h"
#include "nsDumpUtils.h"
#include "nsIFileStreams.h"
#include "nsPrintfCString.h"
#ifdef XP_WIN
#include <process.h>
#define getpid _getpid
#else
#include <unistd.h>
#endif
#ifdef XP_UNIX
#define DO_STATUS_REPORT 1
#endif
#ifdef DO_STATUS_REPORT // {
namespace {
class DumpStatusInfoToTempDirRunnable : public mozilla::Runnable
{
public:
DumpStatusInfoToTempDirRunnable()
: mozilla::Runnable("DumpStatusInfoToTempDirRunnable")
{
}
NS_IMETHOD Run() override
{
nsCOMPtr<nsIStatusReporterManager> mgr =
do_GetService("@mozilla.org/status-reporter-manager;1");
mgr->DumpReports();
return NS_OK;
}
};
void
doStatusReport(const nsCString& aInputStr)
{
LOG("FifoWatcher(%s) dispatching status report runnable.", aInputStr.get());
RefPtr<DumpStatusInfoToTempDirRunnable> runnable =
new DumpStatusInfoToTempDirRunnable();
NS_DispatchToMainThread(runnable);
}
} //anonymous namespace
#endif // DO_STATUS_REPORT }
static bool gStatusReportProgress = 0;
static int gNumReporters = 0;
nsresult
getStatus(nsACString& aDesc)
{
if (!gStatusReportProgress) {
aDesc.AssignLiteral("Init");
} else {
aDesc.AssignLiteral("Running: There are ");
aDesc.AppendInt(gNumReporters);
aDesc.AppendLiteral(" reporters");
}
return NS_OK;
}
NS_STATUS_REPORTER_IMPLEMENT(StatusReporter, "StatusReporter State", getStatus)
#define DUMP(o, s) \
do { \
const char* s2 = (s); \
uint32_t dummy; \
nsresult rvDump = (o)->Write((s2), strlen(s2), &dummy); \
if (NS_WARN_IF(NS_FAILED(rvDump))) \
return rvDump; \
} while (0)
static nsresult
DumpReport(nsIFileOutputStream* aOStream, const nsCString& aProcess,
const nsCString& aName, const nsCString& aDescription)
{
if (aProcess.IsEmpty()) {
int pid = getpid();
nsPrintfCString pidStr("PID %u", pid);
DUMP(aOStream, "\n {\n \"Process\": \"");
DUMP(aOStream, pidStr.get());
} else {
DUMP(aOStream, "\n { \"Unknown Process\": \"");
}
DUMP(aOStream, "\",\n \"Reporter name\": \"");
DUMP(aOStream, aName.get());
DUMP(aOStream, "\",\n \"Status Description\": [\"");
nsCString desc = aDescription;
desc.ReplaceSubstring("|", "\",\"");
DUMP(aOStream, desc.get());
DUMP(aOStream, "\"]\n }");
return NS_OK;
}
/**
** nsStatusReporterManager implementation
**/
NS_IMPL_ISUPPORTS(nsStatusReporterManager, nsIStatusReporterManager)
nsStatusReporterManager::nsStatusReporterManager()
{
}
nsStatusReporterManager::~nsStatusReporterManager()
{
}
NS_IMETHODIMP
nsStatusReporterManager::Init()
{
RegisterReporter(new NS_STATUS_REPORTER_NAME(StatusReporter));
gStatusReportProgress = 1;
#ifdef DO_STATUS_REPORT
if (FifoWatcher::MaybeCreate()) {
FifoWatcher* fw = FifoWatcher::GetSingleton();
fw->RegisterCallback(NS_LITERAL_CSTRING("status report"), doStatusReport);
}
#endif
return NS_OK;
}
NS_IMETHODIMP
nsStatusReporterManager::DumpReports()
{
static unsigned number = 1;
nsresult rv;
nsCString filename("status-reports-");
filename.AppendInt((uint32_t)getpid());
filename.Append('-');
filename.AppendInt(number++);
filename.AppendLiteral(".json");
// Open a file in NS_OS_TEMP_DIR for writing.
// The file is initialized as "incomplete-status-reports-pid-number.json" in the
// begining, it will be rename as "status-reports-pid-number.json" in the end.
nsCOMPtr<nsIFile> tmpFile;
rv = nsDumpUtils::OpenTempFile(NS_LITERAL_CSTRING("incomplete-") +
filename,
getter_AddRefs(tmpFile),
NS_LITERAL_CSTRING("status-reports"));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
nsCOMPtr<nsIFileOutputStream> ostream =
do_CreateInstance("@mozilla.org/network/file-output-stream;1");
rv = ostream->Init(tmpFile, -1, -1, 0);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
//Write the reports to the file
DUMP(ostream, "{\n\"subject\":\"about:service reports\",\n");
DUMP(ostream, "\"reporters\": [ ");
nsCOMPtr<nsISimpleEnumerator> e;
bool more, first = true;
EnumerateReporters(getter_AddRefs(e));
while (NS_SUCCEEDED(e->HasMoreElements(&more)) && more) {
nsCOMPtr<nsISupports> supports;
e->GetNext(getter_AddRefs(supports));
nsCOMPtr<nsIStatusReporter> r = do_QueryInterface(supports);
nsCString process;
rv = r->GetProcess(process);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
nsCString name;
rv = r->GetName(name);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
nsCString description;
rv = r->GetDescription(description);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
if (first) {
first = false;
} else {
DUMP(ostream, ",");
}
rv = DumpReport(ostream, process, name, description);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
}
DUMP(ostream, "\n]\n}\n");
rv = ostream->Close();
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
// Rename the status reports file
nsCOMPtr<nsIFile> srFinalFile;
rv = NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(srFinalFile));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
#ifdef ANDROID
rv = srFinalFile->AppendNative(NS_LITERAL_CSTRING("status-reports"));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
#endif
rv = srFinalFile->AppendNative(filename);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = srFinalFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
nsAutoString srActualFinalFilename;
rv = srFinalFile->GetLeafName(srActualFinalFilename);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
rv = tmpFile->MoveTo(/* directory */ nullptr, srActualFinalFilename);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
return NS_OK;
}
NS_IMETHODIMP
nsStatusReporterManager::EnumerateReporters(nsISimpleEnumerator** aResult)
{
return NS_NewArrayEnumerator(aResult, mReporters);
}
NS_IMETHODIMP
nsStatusReporterManager::RegisterReporter(nsIStatusReporter* aReporter)
{
if (mReporters.IndexOf(aReporter) != -1) {
return NS_ERROR_FAILURE;
}
mReporters.AppendObject(aReporter);
gNumReporters++;
return NS_OK;
}
NS_IMETHODIMP
nsStatusReporterManager::UnregisterReporter(nsIStatusReporter* aReporter)
{
if (!mReporters.RemoveObject(aReporter)) {
return NS_ERROR_FAILURE;
}
gNumReporters--;
return NS_OK;
}
nsresult
NS_RegisterStatusReporter(nsIStatusReporter* aReporter)
{
nsCOMPtr<nsIStatusReporterManager> mgr =
do_GetService("@mozilla.org/status-reporter-manager;1");
if (!mgr) {
return NS_ERROR_FAILURE;
}
return mgr->RegisterReporter(aReporter);
}
nsresult
NS_UnregisterStatusReporter(nsIStatusReporter* aReporter)
{
nsCOMPtr<nsIStatusReporterManager> mgr =
do_GetService("@mozilla.org/status-reporter-manager;1");
if (!mgr) {
return NS_ERROR_FAILURE;
}
return mgr->UnregisterReporter(aReporter);
}
nsresult
NS_DumpStatusReporter()
{
nsCOMPtr<nsIStatusReporterManager> mgr =
do_GetService("@mozilla.org/status-reporter-manager;1");
if (!mgr) {
return NS_ERROR_FAILURE;
}
return mgr->DumpReports();
}

Просмотреть файл

@ -1,41 +0,0 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "nsIStatusReporter.h"
#include "nsCOMArray.h"
#include "nsString.h"
class nsStatusReporter final : public nsIStatusReporter
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISTATUSREPORTER
nsStatusReporter(nsACString& aProcess, nsACString& aDesc);
private:
nsCString sProcess;
nsCString sName;
nsCString sDesc;
virtual ~nsStatusReporter();
};
class nsStatusReporterManager : public nsIStatusReporterManager
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISTATUSREPORTERMANAGER
nsStatusReporterManager();
private:
nsCOMArray<nsIStatusReporter> mReporters;
virtual ~nsStatusReporterManager();
};

Просмотреть файл

@ -104,8 +104,6 @@ extern nsresult nsStringInputStreamConstructor(nsISupports*, REFNSIID, void**);
#include "nsSecurityConsoleMessage.h"
#include "nsMessageLoop.h"
#include "nsStatusReporterManager.h"
#include <locale.h>
#include "mozilla/Services.h"
#include "mozilla/Omnijar.h"
@ -228,8 +226,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsMemoryReporterManager, Init)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMemoryInfoDumper)
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStatusReporterManager, Init)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsIOUtil)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSecurityConsoleMessage)

Просмотреть файл

@ -75,4 +75,3 @@
COMPONENT(IOUTIL, nsIOUtilConstructor)
COMPONENT(CYCLE_COLLECTOR_LOGGER, nsCycleCollectorLoggerConstructor)
COMPONENT(MESSAGE_LOOP, nsMessageLoopConstructor)
COMPONENT(STATUS_REPORTER_MANAGER, nsStatusReporterManagerConstructor)

Просмотреть файл

@ -76,11 +76,6 @@
*/
#define NS_MEMORY_INFO_DUMPER_CONTRACTID "@mozilla.org/memory-info-dumper;1"
/**
* Status reporter service CID
*/
#define NS_STATUS_REPORTER_MANAGER_CONTRACTID "@mozilla.org/status-reporter-manager;1"
/**
* Cycle collector logger contract id
*/