Tone.js/test/helper/Supports.js

49 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-08-27 00:06:17 +00:00
define(["helper/ua-parser"], function(UserAgentParser){
var parsed = new UserAgentParser().getBrowser();
var name = parsed.name;
var version = parseInt(parsed.major);
function is(browser, above){
above = above || 0;
return name === browser && version >= above;
}
function isnt(browser, below){
below = below || Infinity;
return !(name === browser && version <= below);
}
return {
//setValueCurveAtTime interpolates
INTERPOLATED_VALUE_CURVE : is("Chrome", 46),
//waveshaper has correct value at 0
WAVESHAPER_0_POSITION : isnt("Safari"),
//has stereo panner node
STEREO_PANNER_NODE : isnt("Safari"),
//can schedule a mixture of curves correctly
2017-02-20 03:51:10 +00:00
ACCURATE_SIGNAL_SCHEDULING : isnt("Safari"),
//can disconnect from a specific node
NODE_DISCONNECT : is("Chrome", 50),
//stereo panner is equal power panning
EQUAL_POWER_PANNER : isnt("Firefox"),
//doesn't seem to support the pluck synth
PLUCK_SYNTH : isnt("Safari"),
//offline rendering matches Chrome closely
//chrome is the platform the files were rendered on
//so it is the default for continuity testing
2018-02-05 20:06:53 +00:00
CHROME_AUDIO_RENDERING : is("Chrome"),
//has float time domain analyser
ANALYZE_FLOAT_TIME_DOMAIN : AnalyserNode && typeof AnalyserNode.prototype.getFloatTimeDomainData === "function",
//if the tests run in focus
2018-08-27 00:06:17 +00:00
ONLINE_TESTING : is("Chrome"),
//the close method resolves a promise
AUDIO_CONTEXT_CLOSE_RESOLVES : isnt("Firefox") && isnt("Safari", 10),
2017-12-28 23:44:14 +00:00
//if it supports gUM testing
GET_USER_MEDIA : isnt("Safari"),
RUN_EXAMPLES : isnt("Safari", 10)
};
});