diff options
Diffstat (limited to 'gfx/tests/mochitest/test_acceleration.html')
-rw-r--r-- | gfx/tests/mochitest/test_acceleration.html | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/gfx/tests/mochitest/test_acceleration.html b/gfx/tests/mochitest/test_acceleration.html new file mode 100644 index 0000000000..06a942e8cb --- /dev/null +++ b/gfx/tests/mochitest/test_acceleration.html @@ -0,0 +1,142 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=627498 +--> +<head> + <title>Test hardware acceleration</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=627498">Mozilla Bug 627498</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script type="application/javascript"> + +// Make sure that acceleration is enabled/disabled the way we expect it to be +// based on platform. + +SimpleTest.waitForExplicitFinish(); + +addEventListener("pageshow", runTest, false); + +function runTest() { + var Cc = SpecialPowers.Cc; + var Ci = SpecialPowers.Ci; + + var sysInfo = SpecialPowers.Services.sysinfo; + var xr = SpecialPowers.Services.appinfo; + + var windows = SpecialPowers.Services.ww.getWindowEnumerator(); + var windowutils; + var acceleratedWindows = 0; + var webrenderWindows = 0; + var layerManagerLog = []; + while (windows.hasMoreElements()) { + try { + windowutils = windows.getNext().windowUtils; + } catch (e) { + todo(false, "Bug X - don't expose BFCached pages through window enumerator"); + } + try { + var layerManager = windowutils.layerManagerType; + if (layerManager != "Basic" && layerManager != "WebRender (Software)") { + acceleratedWindows++; + } + if (layerManager.startsWith("WebRender")) { + webrenderWindows++; + } + layerManagerLog.push(layerManager); + } catch (e) { + // The window may not have a layer manager, in which case we get an error. + // Don't count it as an accelerated window. + dump("Didn't get a layer manager! " + e); + } + } + + var osName = sysInfo.getProperty("name"); + switch (osName) { + case "Darwin": // Mac OS X. + // We only enable OpenGL layers on machines that don't support QuickDraw + // plugins. x86-64 architecture is a good proxy for this plugin support. + if (sysInfo.getProperty("arch") != "x86-64") { + is(acceleratedWindows, 0, "Acceleration not supported on x86 OS X"); + } else { + // Workaround for SeaMonkey tinderboxes which don't support acceleration. + if (navigator.userAgent.match(/ SeaMonkey\//)) { + if (acceleratedWindows == 0) { + todo(false, "Acceleration not supported on x86-64 OS X" + + " (This is expected on SeaMonkey (tinderboxes).)"); + break; + } + } + + isnot(acceleratedWindows, 0, "Acceleration enabled on x86-64 OS X"); + } + break; + + case "Windows_NT": // Windows. + var version = parseFloat(sysInfo.getProperty("version")); + if (version == 5.0) { + is(acceleratedWindows, 0, "Acceleration not supported on Windows 2000"); + } else { + // Workaround for SeaMonkey tinderboxes which don't support acceleration. + if (navigator.userAgent.match(/ SeaMonkey\//)) { + if (acceleratedWindows == 0) { + todo(false, "Acceleration not supported on Windows XP or newer" + + " (This is expected on SeaMonkey (tinderboxes).)"); + break; + } + } + + isnot(acceleratedWindows, 0, "Acceleration enabled on Windows XP or newer"); + } + + var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo); + if (version < 6.2) { + ok(!gfxInfo.D2DEnabled, "Direct2D not supported on Windows 2008 or older"); + if (version < 6.1) { + ok(!gfxInfo.DWriteEnabled, "DirectWrite not supported on Windows 2008 or older"); + } else { + ok(gfxInfo.DWriteEnabled, "DirectWrite enabled on Windows 7 or newer"); + } + } 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; + } catch (e) {} + + if (shouldGetWR) { + isnot(webrenderWindows, 0, "WebRender enabled on Windows"); + } else { + is(webrenderWindows, 0, "WebRender disabled on Windows"); + } + break; + + case "Linux": + todo(false, "Acceleration supported on Linux, but only on taskcluster instances (bug 1296086)"); + break; + + default: + if (xr.OS == "Android") { + isnot(acceleratedWindows, 0, "Acceleration enabled on Android"); + } else { + is(acceleratedWindows, 0, "Acceleration not supported on '" + osName + "'"); + } + } + + SimpleTest.finish(); +} + +</script> +</pre> +</body> +</html> |