<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=627498 --> <head> <title>Test hardware acceleration</title> <script type="application/javascript" 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. var importObj = {}; var Cc = SpecialPowers.Cc; var Ci = SpecialPowers.Ci; var sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2); var xr = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime); var windows = SpecialPowers.Services.ww.getWindowEnumerator(); var windowutils; var acceleratedWindows = 0; while (windows.hasMoreElements()) { windowutils = windows.getNext().QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIDOMWindowUtils); try { if (windowutils.layerManagerType != "Basic") { acceleratedWindows++; } } 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. } } 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"); ok(!gfxInfo.DWriteEnabled, "DirectWrite not supported on Windows 2008 or older"); } else { ok(gfxInfo.D2DEnabled, "Direct2D enabled on Windows 8 or newer"); ok(gfxInfo.DWriteEnabled, "DirectWrite enabled on Windows 8 or newer"); } 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 + "'"); } } </script> </pre> </body> </html>