Bug 1382104 - Warn in VRDIsplay.isPresenting if the display has been forcibly shutdown. - r=kip draft
authorJeff Gilbert <jgilbert@mozilla.com>
Fri, 28 Jul 2017 16:29:27 -0700
changeset 649183 409a71eb80f8e86d86e5f7557548f8d5c8d94a18
parent 649182 8cf4775680ca8a507c4a80c9bfad137d9d16bc1b
child 649184 f0a13b4d5ba8fc78bd0288fc5ec9d0e5fb72f4f2
push id74978
push userbmo:jgilbert@mozilla.com
push dateFri, 18 Aug 2017 19:07:35 +0000
reviewerskip
bugs1382104
milestone57.0a1
Bug 1382104 - Warn in VRDIsplay.isPresenting if the display has been forcibly shutdown. - r=kip MozReview-Commit-ID: 9eUspD2q8pz
dom/vr/VRDisplay.cpp
--- a/dom/vr/VRDisplay.cpp
+++ b/dom/vr/VRDisplay.cpp
@@ -670,23 +670,41 @@ ErrorResult& aError)
 
 void
 VRDisplay::CancelAnimationFrame(int32_t aHandle, ErrorResult& aError)
 {
   gfx::VRManagerChild* vm = gfx::VRManagerChild::Get();
   vm->CancelFrameRequestCallback(aHandle);
 }
 
-
 bool
 VRDisplay::IsPresenting() const
 {
   // IsPresenting returns true only if this Javascript context is presenting
   // and will return false if another context is presenting.
-  return mPresentation != nullptr;
+  if (mPresentation)
+    return true;
+
+  do {
+    if (!mShutdown)
+      break;
+
+    dom::AutoJSAPI api;
+    if (!api.Init(GetOwnerGlobal())) {
+      MOZ_ASSERT(false);
+      break;
+    }
+
+    JS_ReportWarningASCII(api.cx(),
+                          "VRDisplay.isPresenting is always false after"
+                          " presentation is forcibly shutdown by window"
+                          " destruction.");
+  } while (false);
+
+  return false;
 }
 
 bool
 VRDisplay::IsAnyPresenting(uint32_t aGroupMask) const
 {
   // IsAnyPresenting returns true if either this VRDisplay object or any other
   // from anther Javascript context is presenting with a group matching
   // aGroupMask.