mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Bug 1430317: Add memory reporter to show basic information about active WebExtensions. r=erahm
MozReview-Commit-ID: FR8F30bhhA4 --HG-- extra : rebase_source : 651b3d1f5b6b6a646a89301dc236a7e10924a500
This commit is contained in:
parent
993bcbdbba
commit
f08a241760
@ -9,6 +9,7 @@
|
||||
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/ResultExtensions.h"
|
||||
#include "mozilla/Services.h"
|
||||
#include "mozilla/dom/ContentChild.h"
|
||||
#include "mozilla/dom/ContentParent.h"
|
||||
@ -67,6 +68,7 @@ ExtensionPolicyService::GetSingleton()
|
||||
|
||||
if (MOZ_UNLIKELY(!sExtensionPolicyService)) {
|
||||
sExtensionPolicyService = new ExtensionPolicyService();
|
||||
RegisterWeakMemoryReporter(sExtensionPolicyService);
|
||||
ClearOnShutdown(&sExtensionPolicyService);
|
||||
}
|
||||
return *sExtensionPolicyService.get();
|
||||
@ -82,6 +84,11 @@ ExtensionPolicyService::ExtensionPolicyService()
|
||||
RegisterObservers();
|
||||
}
|
||||
|
||||
ExtensionPolicyService::~ExtensionPolicyService()
|
||||
{
|
||||
UnregisterWeakMemoryReporter(this);
|
||||
}
|
||||
|
||||
bool
|
||||
ExtensionPolicyService::UseRemoteExtensions() const
|
||||
{
|
||||
@ -174,6 +181,45 @@ ExtensionPolicyService::DefaultCSP(nsAString& aDefaultCSP) const
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* nsIMemoryReporter
|
||||
*****************************************************************************/
|
||||
|
||||
NS_IMETHODIMP
|
||||
ExtensionPolicyService::CollectReports(nsIHandleReportCallback* aHandleReport,
|
||||
nsISupports* aData, bool aAnonymize)
|
||||
{
|
||||
for (auto iter = mExtensions.Iter(); !iter.Done(); iter.Next()) {
|
||||
auto& ext = iter.Data();
|
||||
|
||||
nsAtomCString id(ext->Id());
|
||||
|
||||
NS_ConvertUTF16toUTF8 name(ext->Name());
|
||||
name.ReplaceSubstring("\"", "");
|
||||
name.ReplaceSubstring("\\", "");
|
||||
|
||||
nsString url;
|
||||
MOZ_TRY_VAR(url, ext->GetURL(NS_LITERAL_STRING("")));
|
||||
|
||||
nsPrintfCString desc("Extension(id=%s, name=\"%s\", baseURL=%s)",
|
||||
id.get(), name.get(),
|
||||
NS_ConvertUTF16toUTF8(url).get());
|
||||
desc.ReplaceChar('/', '\\');
|
||||
|
||||
nsCString path("extensions/");
|
||||
path.Append(desc);
|
||||
|
||||
aHandleReport->Callback(
|
||||
EmptyCString(), path,
|
||||
KIND_NONHEAP, UNITS_COUNT, 1,
|
||||
NS_LITERAL_CSTRING("WebExtensions that are active in this session"),
|
||||
aData);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Content script management
|
||||
*****************************************************************************/
|
||||
|
@ -6,12 +6,14 @@
|
||||
#ifndef mozilla_ExtensionPolicyService_h
|
||||
#define mozilla_ExtensionPolicyService_h
|
||||
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/extensions/WebExtensionPolicy.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
#include "nsHashKeys.h"
|
||||
#include "nsIAddonPolicyService.h"
|
||||
#include "nsAtom.h"
|
||||
#include "nsIMemoryReporter.h"
|
||||
#include "nsIObserver.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsISupports.h"
|
||||
@ -33,6 +35,7 @@ using extensions::WebExtensionPolicy;
|
||||
|
||||
class ExtensionPolicyService final : public nsIAddonPolicyService
|
||||
, public nsIObserver
|
||||
, public nsIMemoryReporter
|
||||
{
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(ExtensionPolicyService,
|
||||
@ -40,6 +43,7 @@ public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_NSIADDONPOLICYSERVICE
|
||||
NS_DECL_NSIOBSERVER
|
||||
NS_DECL_NSIMEMORYREPORTER
|
||||
|
||||
static ExtensionPolicyService& GetSingleton();
|
||||
|
||||
@ -79,7 +83,7 @@ public:
|
||||
bool IsExtensionProcess() const;
|
||||
|
||||
protected:
|
||||
virtual ~ExtensionPolicyService() = default;
|
||||
virtual ~ExtensionPolicyService();
|
||||
|
||||
private:
|
||||
ExtensionPolicyService();
|
||||
|
Loading…
Reference in New Issue
Block a user