mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 15:25:52 +00:00
Bug 1401551 - Only check for acceleration after the page is shown and we know the layer managers have been initialized. r=dvander
MozReview-Commit-ID: CA2gQxMIuXn --HG-- extra : rebase_source : ff859c7c4ba1ba6efd4fad5e7c174e3c8753c958
This commit is contained in:
parent
56e3802d92
commit
53d3421ba1
@ -20,118 +20,125 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=627498
|
||||
// Make sure that acceleration is enabled/disabled the way we expect it to be
|
||||
// based on platform.
|
||||
|
||||
var importObj = {};
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
var Cc = SpecialPowers.Cc;
|
||||
var Ci = SpecialPowers.Ci;
|
||||
addEventListener("pageshow", runTest, false);
|
||||
|
||||
var sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2);
|
||||
var xr = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
|
||||
function runTest() {
|
||||
var Cc = SpecialPowers.Cc;
|
||||
var Ci = SpecialPowers.Ci;
|
||||
|
||||
var windows = SpecialPowers.Services.ww.getWindowEnumerator();
|
||||
var windowutils;
|
||||
var acceleratedWindows = 0;
|
||||
var advancedLayersWindows = 0;
|
||||
var layerManagerLog = [];
|
||||
while (windows.hasMoreElements()) {
|
||||
windowutils = windows.getNext().QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
try {
|
||||
if (windowutils.layerManagerType != "Basic") {
|
||||
acceleratedWindows++;
|
||||
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;
|
||||
var advancedLayersWindows = 0;
|
||||
var layerManagerLog = [];
|
||||
while (windows.hasMoreElements()) {
|
||||
windowutils = windows.getNext().QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
try {
|
||||
if (windowutils.layerManagerType != "Basic") {
|
||||
acceleratedWindows++;
|
||||
}
|
||||
if (windowutils.usingAdvancedLayers) {
|
||||
advancedLayersWindows++;
|
||||
}
|
||||
layerManagerLog.push(windowutils.layerManagerType + ":" +
|
||||
windowutils.usingAdvancedLayers);
|
||||
} 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);
|
||||
}
|
||||
if (windowutils.usingAdvancedLayers) {
|
||||
advancedLayersWindows++;
|
||||
}
|
||||
layerManagerLog.push(windowutils.layerManagerType + ":" +
|
||||
windowutils.usingAdvancedLayers);
|
||||
} 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");
|
||||
if (version < 6.1) {
|
||||
ok(!gfxInfo.DWriteEnabled, "DirectWrite not supported on Windows 2008 or older");
|
||||
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");
|
||||
}
|
||||
} else {
|
||||
ok(gfxInfo.D2DEnabled, "Direct2D enabled on Windows 8 or newer");
|
||||
ok(gfxInfo.DWriteEnabled, "DirectWrite enabled on Windows 7 or newer");
|
||||
}
|
||||
|
||||
var advancedLayersEnabled = false;
|
||||
var advancedLayersEnabledOnWin7 = false;
|
||||
try {
|
||||
advancedLayersEnabled = SpecialPowers.getBoolPref("layers.mlgpu.enabled");
|
||||
advancedLayersEnabledOnWin7 = SpecialPowers.getBoolPref("layers.mlgpu.enable-on-windows7");
|
||||
} catch (e) {}
|
||||
var shouldGetAL = advancedLayersEnabled;
|
||||
if (version < 6.2) {
|
||||
shouldGetAL &= advancedLayersEnabledOnWin7;
|
||||
}
|
||||
if (shouldGetAL) {
|
||||
isnot(advancedLayersWindows, 0, "Advanced Layers enabled on Windows; "
|
||||
+ layerManagerLog.join(","));
|
||||
} else {
|
||||
is(advancedLayersWindows, 0, "Advanced Layers disabled on Windows");
|
||||
}
|
||||
break;
|
||||
var advancedLayersEnabled = false;
|
||||
var advancedLayersEnabledOnWin7 = false;
|
||||
try {
|
||||
advancedLayersEnabled = SpecialPowers.getBoolPref("layers.mlgpu.enabled");
|
||||
advancedLayersEnabledOnWin7 = SpecialPowers.getBoolPref("layers.mlgpu.enable-on-windows7");
|
||||
} catch (e) {}
|
||||
var shouldGetAL = advancedLayersEnabled;
|
||||
if (version < 6.2) {
|
||||
shouldGetAL &= advancedLayersEnabledOnWin7;
|
||||
}
|
||||
if (shouldGetAL) {
|
||||
isnot(advancedLayersWindows, 0, "Advanced Layers enabled on Windows; "
|
||||
+ layerManagerLog.join(","));
|
||||
} else {
|
||||
is(advancedLayersWindows, 0, "Advanced Layers disabled on Windows");
|
||||
}
|
||||
break;
|
||||
|
||||
case "Linux":
|
||||
todo(false, "Acceleration supported on Linux, but only on taskcluster instances (bug 1296086)");
|
||||
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 + "'");
|
||||
}
|
||||
default:
|
||||
if (xr.OS == "Android") {
|
||||
isnot(acceleratedWindows, 0, "Acceleration enabled on Android");
|
||||
} else {
|
||||
is(acceleratedWindows, 0, "Acceleration not supported on '" + osName + "'");
|
||||
}
|
||||
}
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user