[tbb-commits] [tor-browser] 48/76: Bug 1758549, part 1 - Check that WebVR is enabled before creating PVR, PVRGPU and PVRLayer actors. r=jgilbert a=RyanVM
gitolite role
git at cupani.torproject.org
Wed Mar 30 20:40:16 UTC 2022
This is an automated email from the git hooks/post-receive script.
richard pushed a commit to branch tor-browser-91.8.0esr-11.0-1
in repository tor-browser.
commit 513b0d091fb177b04706a51720bfa33b40ce2beb
Author: Andrew McCreight <continuation at gmail.com>
AuthorDate: Sat Mar 12 15:30:37 2022 +0000
Bug 1758549, part 1 - Check that WebVR is enabled before creating PVR, PVRGPU and PVRLayer actors. r=jgilbert a=RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D140784
---
gfx/vr/ipc/VRGPUChild.cpp | 5 +++++
gfx/vr/ipc/VRGPUParent.cpp | 5 +++++
gfx/vr/ipc/VRLayerChild.cpp | 5 +++++
gfx/vr/ipc/VRManagerParent.cpp | 5 +++++
gfx/vr/ipc/VRProcessChild.cpp | 6 ++++++
gfx/vr/ipc/VRProcessParent.cpp | 6 ++++++
testing/web-platform/meta/webvr/__dir__.ini | 1 +
7 files changed, 33 insertions(+)
diff --git a/gfx/vr/ipc/VRGPUChild.cpp b/gfx/vr/ipc/VRGPUChild.cpp
index f8b90a5b4423b..793778c03276b 100644
--- a/gfx/vr/ipc/VRGPUChild.cpp
+++ b/gfx/vr/ipc/VRGPUChild.cpp
@@ -9,6 +9,7 @@
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/layers/CompositorThread.h"
+#include "mozilla/StaticPrefs_dom.h"
#include "VRManager.h"
namespace mozilla {
@@ -21,6 +22,10 @@ bool VRGPUChild::InitForGPUProcess(Endpoint<PVRGPUChild>&& aEndpoint) {
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(!sVRGPUChildSingleton);
+ if (!StaticPrefs::dom_vr_enabled() && !StaticPrefs::dom_vr_webxr_enabled()) {
+ return false;
+ }
+
RefPtr<VRGPUChild> child(new VRGPUChild());
if (!aEndpoint.Bind(child)) {
return false;
diff --git a/gfx/vr/ipc/VRGPUParent.cpp b/gfx/vr/ipc/VRGPUParent.cpp
index ce1eef77fac5c..72d943086d2a4 100644
--- a/gfx/vr/ipc/VRGPUParent.cpp
+++ b/gfx/vr/ipc/VRGPUParent.cpp
@@ -9,6 +9,7 @@
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProcessChild.h"
+#include "mozilla/StaticPrefs_dom.h"
namespace mozilla {
namespace gfx {
@@ -43,6 +44,10 @@ void VRGPUParent::DeferredDestroy() { mSelfRef = nullptr; }
/* static */
RefPtr<VRGPUParent> VRGPUParent::CreateForGPU(
Endpoint<PVRGPUParent>&& aEndpoint) {
+ if (!StaticPrefs::dom_vr_enabled() && !StaticPrefs::dom_vr_webxr_enabled()) {
+ return nullptr;
+ }
+
RefPtr<VRGPUParent> vcp = new VRGPUParent(aEndpoint.OtherPid());
GetCurrentSerialEventTarget()->Dispatch(
NewRunnableMethod<Endpoint<PVRGPUParent>&&>("gfx::VRGPUParent::Bind", vcp,
diff --git a/gfx/vr/ipc/VRLayerChild.cpp b/gfx/vr/ipc/VRLayerChild.cpp
index fd9dd19988016..57f69f7d2b1f3 100644
--- a/gfx/vr/ipc/VRLayerChild.cpp
+++ b/gfx/vr/ipc/VRLayerChild.cpp
@@ -10,6 +10,7 @@
#include "mozilla/layers/ImageBridgeChild.h"
#include "mozilla/layers/LayersMessages.h" // for TimedTexture
#include "mozilla/layers/SyncObject.h" // for SyncObjectClient
+#include "mozilla/StaticPrefs_dom.h"
#include "mozilla/StaticPrefs_webgl.h"
#include "ClientWebGLContext.h"
@@ -122,6 +123,10 @@ void VRLayerChild::ActorDestroy(ActorDestroyReason aWhy) { mIPCOpen = false; }
// static
PVRLayerChild* VRLayerChild::CreateIPDLActor() {
+ if (!StaticPrefs::dom_vr_enabled() && !StaticPrefs::dom_vr_webxr_enabled()) {
+ return nullptr;
+ }
+
VRLayerChild* c = new VRLayerChild();
c->AddIPDLReference();
return c;
diff --git a/gfx/vr/ipc/VRManagerParent.cpp b/gfx/vr/ipc/VRManagerParent.cpp
index 5d154e1b32d00..01a2f4e6a566f 100644
--- a/gfx/vr/ipc/VRManagerParent.cpp
+++ b/gfx/vr/ipc/VRManagerParent.cpp
@@ -10,6 +10,7 @@
#include "mozilla/gfx/PVRManagerParent.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProtocolTypes.h"
+#include "mozilla/StaticPrefs_dom.h"
#include "mozilla/ipc/ProtocolUtils.h" // for IToplevelProtocol
#include "mozilla/TimeStamp.h" // for TimeStamp
#include "mozilla/Unused.h"
@@ -45,6 +46,10 @@ VRManagerParent::~VRManagerParent() {
PVRLayerParent* VRManagerParent::AllocPVRLayerParent(const uint32_t& aDisplayID,
const uint32_t& aGroup) {
+ if (!StaticPrefs::dom_vr_enabled() && !StaticPrefs::dom_vr_webxr_enabled()) {
+ return nullptr;
+ }
+
RefPtr<VRLayerParent> layer;
layer = new VRLayerParent(aDisplayID, aGroup);
VRManager* vm = VRManager::Get();
diff --git a/gfx/vr/ipc/VRProcessChild.cpp b/gfx/vr/ipc/VRProcessChild.cpp
index 4da047f7afea1..9fb42ab307331 100644
--- a/gfx/vr/ipc/VRProcessChild.cpp
+++ b/gfx/vr/ipc/VRProcessChild.cpp
@@ -9,6 +9,7 @@
#include "mozilla/BackgroundHangMonitor.h"
#include "mozilla/ipc/IOThreadChild.h"
#include "mozilla/ipc/ProcessUtils.h"
+#include "mozilla/StaticPrefs_dom.h"
using namespace mozilla;
using namespace mozilla::gfx;
@@ -28,6 +29,11 @@ VRParent* VRProcessChild::GetVRParent() {
}
bool VRProcessChild::Init(int aArgc, char* aArgv[]) {
+ if (!StaticPrefs::dom_vr_enabled() && !StaticPrefs::dom_vr_webxr_enabled()) {
+ NS_WARNING("VR is not enabled when trying to create a VRParent");
+ return false;
+ }
+
char* parentBuildID = nullptr;
char* prefsHandle = nullptr;
char* prefMapHandle = nullptr;
diff --git a/gfx/vr/ipc/VRProcessParent.cpp b/gfx/vr/ipc/VRProcessParent.cpp
index e24cff62c2cce..0f810779f0f83 100644
--- a/gfx/vr/ipc/VRProcessParent.cpp
+++ b/gfx/vr/ipc/VRProcessParent.cpp
@@ -156,6 +156,12 @@ bool VRProcessParent::InitAfterConnect(bool aSucceeded) {
return false;
}
+ if (!StaticPrefs::dom_vr_enabled() &&
+ !StaticPrefs::dom_vr_webxr_enabled()) {
+ NS_WARNING("VR is not enabled when trying to create a VRChild");
+ return false;
+ }
+
mVRChild = MakeUnique<VRChild>(this);
DebugOnly<bool> rv = mVRChild->Open(
diff --git a/testing/web-platform/meta/webvr/__dir__.ini b/testing/web-platform/meta/webvr/__dir__.ini
index d6cfe0eb08777..bde38b749b459 100644
--- a/testing/web-platform/meta/webvr/__dir__.ini
+++ b/testing/web-platform/meta/webvr/__dir__.ini
@@ -1 +1,2 @@
prefs: [dom.vr.enabled:true, dom.vr.prompt.testing:true, dom.vr.prompt.testing.allow:true, dom.security.featurePolicy.experimental.enabled:true, dom.security.featurePolicy.header.enabled:true, dom.security.featurePolicy.webidl.enabled:true]
+leak-threshold: [vr:500]
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tbb-commits
mailing list