forked from mirrors/gecko-dev
Bug 1436744 - Get rid of WorkerCheckAPIExposureOnMainThreadRunnable, r=catalinb
This commit is contained in:
parent
3088ddd210
commit
dce09604e1
8 changed files with 7 additions and 91 deletions
|
|
@ -39,6 +39,7 @@ DOM_PREF(NetworkInformationEnabled, "dom.netinfo.enabled")
|
||||||
DOM_PREF(FetchObserverEnabled, "dom.fetchObserver.enabled")
|
DOM_PREF(FetchObserverEnabled, "dom.fetchObserver.enabled")
|
||||||
DOM_PREF(ResistFingerprintingEnabled, "privacy.resistFingerprinting")
|
DOM_PREF(ResistFingerprintingEnabled, "privacy.resistFingerprinting")
|
||||||
DOM_PREF(DevToolsEnabled, "devtools.enabled")
|
DOM_PREF(DevToolsEnabled, "devtools.enabled")
|
||||||
|
DOM_PREF(PerformanceObserverEnabled, "dom.enable_performance_observer")
|
||||||
|
|
||||||
DOM_WEBIDL_PREF(ImageBitmapExtensionsEnabled)
|
DOM_WEBIDL_PREF(ImageBitmapExtensionsEnabled)
|
||||||
DOM_WEBIDL_PREF(DOMCachesEnabled)
|
DOM_WEBIDL_PREF(DOMCachesEnabled)
|
||||||
|
|
@ -54,3 +55,4 @@ DOM_WEBIDL_PREF(OffscreenCanvasEnabled)
|
||||||
DOM_WEBIDL_PREF(WebkitBlinkDirectoryPickerEnabled)
|
DOM_WEBIDL_PREF(WebkitBlinkDirectoryPickerEnabled)
|
||||||
DOM_WEBIDL_PREF(NetworkInformationEnabled)
|
DOM_WEBIDL_PREF(NetworkInformationEnabled)
|
||||||
DOM_WEBIDL_PREF(FetchObserverEnabled)
|
DOM_WEBIDL_PREF(FetchObserverEnabled)
|
||||||
|
DOM_WEBIDL_PREF(PerformanceObserverEnabled)
|
||||||
|
|
|
||||||
|
|
@ -36,38 +36,6 @@
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace dom {
|
namespace dom {
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
class PrefEnabledRunnable final
|
|
||||||
: public WorkerCheckAPIExposureOnMainThreadRunnable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
PrefEnabledRunnable(WorkerPrivate* aWorkerPrivate,
|
|
||||||
const nsCString& aPrefName)
|
|
||||||
: WorkerCheckAPIExposureOnMainThreadRunnable(aWorkerPrivate)
|
|
||||||
, mEnabled(false)
|
|
||||||
, mPrefName(aPrefName)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
bool MainThreadRun() override
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
|
||||||
mEnabled = Preferences::GetBool(mPrefName.get(), false);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsEnabled() const
|
|
||||||
{
|
|
||||||
return mEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool mEnabled;
|
|
||||||
nsCString mPrefName;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // anonymous namespace
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Performance)
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Performance)
|
||||||
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
|
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
|
||||||
|
|
||||||
|
|
@ -539,24 +507,6 @@ Performance::QueueEntry(PerformanceEntry* aEntry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */ bool
|
|
||||||
Performance::IsObserverEnabled(JSContext* aCx, JSObject* aGlobal)
|
|
||||||
{
|
|
||||||
if (NS_IsMainThread()) {
|
|
||||||
return Preferences::GetBool("dom.enable_performance_observer", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
|
|
||||||
MOZ_ASSERT(workerPrivate);
|
|
||||||
workerPrivate->AssertIsOnWorkerThread();
|
|
||||||
|
|
||||||
RefPtr<PrefEnabledRunnable> runnable =
|
|
||||||
new PrefEnabledRunnable(workerPrivate,
|
|
||||||
NS_LITERAL_CSTRING("dom.enable_performance_observer"));
|
|
||||||
|
|
||||||
return runnable->Dispatch() && runnable->IsEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Performance::MemoryPressure()
|
Performance::MemoryPressure()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "mozilla/Attributes.h"
|
#include "mozilla/Attributes.h"
|
||||||
#include "mozilla/DOMEventTargetHelper.h"
|
#include "mozilla/DOMEventTargetHelper.h"
|
||||||
|
#include "mozilla/dom/DOMPrefs.h"
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
#include "nsDOMNavigationTiming.h"
|
#include "nsDOMNavigationTiming.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
#include "nsISupports.h"
|
#include "nsISupports.h"
|
||||||
#include "nsTArray.h"
|
#include "nsTArray.h"
|
||||||
#include "nsWrapperCache.h"
|
#include "nsWrapperCache.h"
|
||||||
|
#include "mozilla/dom/DOMPrefs.h"
|
||||||
#include "mozilla/dom/PerformanceEntryBinding.h"
|
#include "mozilla/dom/PerformanceEntryBinding.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ dictionary PerformanceObserverInit {
|
||||||
callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries,
|
callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries,
|
||||||
PerformanceObserver observer);
|
PerformanceObserver observer);
|
||||||
|
|
||||||
[Func="Performance::IsObserverEnabled",
|
[Func="mozilla::dom::DOMPrefs::PerformanceObserverEnabled",
|
||||||
Constructor(PerformanceObserverCallback callback),
|
Constructor(PerformanceObserverCallback callback),
|
||||||
Exposed=(Window,Worker)]
|
Exposed=(Window,Worker)]
|
||||||
interface PerformanceObserver {
|
interface PerformanceObserver {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ dictionary PerformanceEntryFilterOptions {
|
||||||
DOMString initiatorType;
|
DOMString initiatorType;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Func="Performance::IsObserverEnabled", Exposed=(Window,Worker)]
|
[Func="mozilla::dom::DOMPrefs::PerformanceObserverEnabled",
|
||||||
|
Exposed=(Window,Worker)]
|
||||||
interface PerformanceObserverEntryList {
|
interface PerformanceObserverEntryList {
|
||||||
PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter);
|
PerformanceEntryList getEntries(optional PerformanceEntryFilterOptions filter);
|
||||||
PerformanceEntryList getEntriesByType(DOMString entryType);
|
PerformanceEntryList getEntriesByType(DOMString entryType);
|
||||||
|
|
|
||||||
|
|
@ -626,24 +626,6 @@ WorkerMainThreadRunnable::Run()
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkerCheckAPIExposureOnMainThreadRunnable::WorkerCheckAPIExposureOnMainThreadRunnable(WorkerPrivate* aWorkerPrivate):
|
|
||||||
WorkerMainThreadRunnable(aWorkerPrivate,
|
|
||||||
NS_LITERAL_CSTRING("WorkerCheckAPIExposureOnMainThread"))
|
|
||||||
{}
|
|
||||||
|
|
||||||
WorkerCheckAPIExposureOnMainThreadRunnable::~WorkerCheckAPIExposureOnMainThreadRunnable()
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool
|
|
||||||
WorkerCheckAPIExposureOnMainThreadRunnable::Dispatch()
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
WorkerMainThreadRunnable::Dispatch(Terminating, rv);
|
|
||||||
bool ok = !rv.Failed();
|
|
||||||
rv.SuppressException();
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
WorkerSameThreadRunnable::PreDispatch(WorkerPrivate* aWorkerPrivate)
|
WorkerSameThreadRunnable::PreDispatch(WorkerPrivate* aWorkerPrivate)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -457,27 +457,6 @@ protected:
|
||||||
UniquePtr<WorkerHolder> mWorkerHolder;
|
UniquePtr<WorkerHolder> mWorkerHolder;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Class for checking API exposure. This totally violates the "MUST" in the
|
|
||||||
// comments on WorkerMainThreadRunnable::Dispatch, because API exposure checks
|
|
||||||
// can't throw. Maybe we should change it so they _could_ throw. But for now
|
|
||||||
// we are bad people and should be ashamed of ourselves. Let's hope none of
|
|
||||||
// them happen while a worker is shutting down.
|
|
||||||
//
|
|
||||||
// Do NOT copy what this class is doing elsewhere. Just don't.
|
|
||||||
class WorkerCheckAPIExposureOnMainThreadRunnable
|
|
||||||
: public WorkerMainThreadRunnable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit
|
|
||||||
WorkerCheckAPIExposureOnMainThreadRunnable(WorkerPrivate* aWorkerPrivate);
|
|
||||||
virtual
|
|
||||||
~WorkerCheckAPIExposureOnMainThreadRunnable();
|
|
||||||
|
|
||||||
// Returns whether the dispatch succeeded. If this returns false, the API
|
|
||||||
// should not be exposed.
|
|
||||||
bool Dispatch();
|
|
||||||
};
|
|
||||||
|
|
||||||
// This runnable is used to stop a sync loop and it's meant to be used on the
|
// This runnable is used to stop a sync loop and it's meant to be used on the
|
||||||
// main-thread only. As sync loops keep the busy count incremented as long as
|
// main-thread only. As sync loops keep the busy count incremented as long as
|
||||||
// they run this runnable does not modify the busy count
|
// they run this runnable does not modify the busy count
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue