Bug 1457443 - Don't expect WebRender windows if WebRender isn't built. r?milan
MozReview-Commit-ID: 2i25nGMsvxE
--- 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) {}