Bug 1457443 - Don't expect WebRender windows if WebRender isn't built. r?milan draft
authorKartikaya Gupta <kgupta@mozilla.com>
Fri, 27 Apr 2018 12:51:40 -0400
changeset 789925 389aed18d7892a62c76e7feca33191f82e8b6e2b
parent 789727 63519bfd42ee379f597c0357af2e712ec3cd9f50
push id108367
push userkgupta@mozilla.com
push dateMon, 30 Apr 2018 19:01:16 +0000
reviewersmilan
bugs1457443
milestone61.0a1
Bug 1457443 - Don't expect WebRender windows if WebRender isn't built. r?milan MozReview-Commit-ID: 2i25nGMsvxE
dom/base/nsDOMWindowUtils.cpp
dom/interfaces/base/nsIDOMWindowUtils.idl
gfx/tests/mochitest/test_acceleration.html
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -2295,16 +2295,27 @@ nsDOMWindowUtils::GetUsingAdvancedLayers
   *retval = false;
   if (KnowsCompositor* fwd = mgr->AsKnowsCompositor()) {
     *retval = fwd->GetTextureFactoryIdentifier().mUsingAdvancedLayers;
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
+nsDOMWindowUtils::GetIsWebRenderBuilt(bool* retval)
+{
+#ifdef MOZ_BUILD_WEBRENDER
+  *retval = true;
+#else
+  *retval = false;
+#endif
+  return NS_OK;
+}
+
+NS_IMETHODIMP
 nsDOMWindowUtils::GetIsWebRenderRequested(bool* retval)
 {
   *retval = gfxPlatform::WebRenderPrefEnabled() ||
             gfxPlatform::WebRenderEnvvarEnabled();
   return NS_OK;
 }
 
 NS_IMETHODIMP
--- a/dom/interfaces/base/nsIDOMWindowUtils.idl
+++ b/dom/interfaces/base/nsIDOMWindowUtils.idl
@@ -1278,16 +1278,21 @@ interface nsIDOMWindowUtils : nsISupport
   readonly attribute boolean layerManagerRemote;
 
   /**
    * True if advanced layers is enabled on this window, false otherwise.
    */
   readonly attribute boolean usingAdvancedLayers;
 
   /**
+   * True if the current build includes WebRender.
+   */
+  readonly attribute boolean isWebRenderBuilt;
+
+  /**
    * True if webrender was requested by the user (via pref or env-var), false
    * otherwise. Note that this doesn't represent whether or not webrender is
    * *actually* enabled, just whether or not it was requested.
    */
   readonly attribute boolean isWebRenderRequested;
 
   /**
    * Returns the current audio backend as a free-form string.
--- a/gfx/tests/mochitest/test_acceleration.html
+++ b/gfx/tests/mochitest/test_acceleration.html
@@ -109,17 +109,18 @@ function runTest() {
         }
       } else {
         ok(gfxInfo.D2DEnabled, "Direct2D enabled on Windows 8 or newer");
         ok(gfxInfo.DWriteEnabled, "DirectWrite enabled on Windows 7 or newer");
       }
 
       var shouldGetWR = false;
       try {
-        shouldGetWR = SpecialPowers.DOMWindowUtils.isWebRenderRequested;
+        shouldGetWR = SpecialPowers.DOMWindowUtils.isWebRenderBuilt &&
+                      SpecialPowers.DOMWindowUtils.isWebRenderRequested;
       } catch (e) {}
 
       var advancedLayersEnabled = false;
       var advancedLayersEnabledOnWin7 = false;
       try {
         advancedLayersEnabled = SpecialPowers.getBoolPref("layers.mlgpu.enabled");
         advancedLayersEnabledOnWin7 = SpecialPowers.getBoolPref("layers.mlgpu.enable-on-windows7");
       } catch (e) {}