mirror of
https://github.com/Modernizr/Modernizr.git
synced 2026-01-08 23:27:59 -05:00
Add latest feature detects and fixes from v4 branch (#2726)
* Fix: Update lowbandwidth condition to match new spec (#2688) * Adds PushManager feature detection #2703 (#2708) * Added detection of type worker option and aspect ratio (#2702)
This commit is contained in:
36
feature-detects/css/aspectratio.js
Normal file
36
feature-detects/css/aspectratio.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*!
|
||||
{
|
||||
"name": "aspectratio css property",
|
||||
"property": "aspectratio",
|
||||
"tags": ["css aspectratio", "aspect-ratio"],
|
||||
"builderAliases": ["aspectratio"],
|
||||
"caniuse":"mdn-css_properties_aspect-ratio",
|
||||
"authors": ["Debadutta Panda"],
|
||||
"notes": [{
|
||||
"name": "MDN Docs",
|
||||
"href": "https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio"
|
||||
}]
|
||||
}
|
||||
!*/
|
||||
/* DOC
|
||||
Detect working status of all aspectratio css property
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio
|
||||
*/
|
||||
define(['Modernizr', 'createElement'], function (Modernizr, createElement) {
|
||||
Modernizr.addTest("aspectratio", function () {
|
||||
if (typeof CSS !== "object" && typeof CSS.supports === "function") {
|
||||
return CSS.supports('aspect-ratio', '1 / 1')
|
||||
} else {
|
||||
var element = createElement('p'),
|
||||
elStyle = element.style
|
||||
if ('aspectRatio' in elStyle) {
|
||||
elStyle.cssText = 'aspect-ratio:1 / 1'
|
||||
element.remove()
|
||||
return (elStyle['aspectRatio'] === '1 / 1');
|
||||
} else {
|
||||
element.remove();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -9,7 +9,7 @@
|
||||
/* DOC
|
||||
Tests for determining low-bandwidth via `navigator.connection`
|
||||
|
||||
There are two iterations of the `navigator.connection` interface.
|
||||
There are three iterations of the `navigator.connection` interface.
|
||||
|
||||
The first is present in Android 2.2+ and only in the Browser (not WebView)
|
||||
|
||||
@@ -22,15 +22,19 @@ The second is speced at https://dvcs.w3.org/hg/dap/raw-file/tip/network-api/Over
|
||||
|
||||
Unknown devices are assumed as fast
|
||||
|
||||
The third is placed at https://wicg.github.io/netinfo/
|
||||
|
||||
- Support for the old type now only exists in Android 4 and below (https://caniuse.com/netinfo)
|
||||
|
||||
For more rigorous network testing, consider boomerang.js: https://github.com/bluesmoon/boomerang/
|
||||
*/
|
||||
define(['Modernizr'], function(Modernizr) {
|
||||
Modernizr.addTest('lowbandwidth', function() {
|
||||
// polyfill
|
||||
var connection = navigator.connection || {type: 0};
|
||||
// Polyfill the network info API to inculde both the old type and new effectiveType
|
||||
var connection = navigator.connection || {type: 0, effectiveType: 0};
|
||||
|
||||
return connection.type === 3 || // connection.CELL_2G
|
||||
connection.type === 4 || // connection.CELL_3G
|
||||
/^[23]g$/.test(connection.type); // string value in new spec
|
||||
/^[23]g$/.test(connection.effectiveType); // string value in new spec
|
||||
});
|
||||
});
|
||||
|
||||
19
feature-detects/window/pushmanager.js
Normal file
19
feature-detects/window/pushmanager.js
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
{
|
||||
"name": "PushManager",
|
||||
"property": "pushmanager",
|
||||
"caniuse": "mdn-api_pushmanager",
|
||||
"authors": ["Dawid Kulpa (@dawidkulpa)"],
|
||||
"notes": [{
|
||||
"name": "MDN Docs",
|
||||
"href": "https://developer.mozilla.org/en-US/docs/Web/API/PushManager"
|
||||
}]
|
||||
}
|
||||
!*/
|
||||
|
||||
/* DOC
|
||||
Detects support for PushManager.
|
||||
*/
|
||||
define(['Modernizr'], function(Modernizr) {
|
||||
Modernizr.addTest('pushmanager', 'PushManager' in window);
|
||||
});
|
||||
42
feature-detects/workers/workertypeoption.js
Normal file
42
feature-detects/workers/workertypeoption.js
Normal file
@@ -0,0 +1,42 @@
|
||||
/*!
|
||||
{
|
||||
"name": "worker type option test",
|
||||
"property": "workertypeoption",
|
||||
"caniuse":"mdn-api_worker_worker_ecmascript_modules",
|
||||
"tags": ["web worker type options", "web worker"],
|
||||
"builderAliases": ["worker_type_options"],
|
||||
"authors": ["Debadutta Panda"],
|
||||
"notes": [{
|
||||
"name": "MDN Docs",
|
||||
"href": "https://developer.mozilla.org/en-US/docs/Web/API/Worker/Worker"
|
||||
}]
|
||||
}
|
||||
!*/
|
||||
/* DOC
|
||||
Detect working status of all Workeroptions
|
||||
https://developer.mozilla.org/en-US/docs/Web/API/Worker/Worker
|
||||
*/
|
||||
define(['Modernizr'], function (Modernizr) {
|
||||
Modernizr.addTest("workertypeoption", function () {
|
||||
if ('Worker' in window) {
|
||||
var isTypeOptionSupported = false,
|
||||
textTypeOption = {
|
||||
get type() {
|
||||
isTypeOptionSupported = true;
|
||||
return "module"
|
||||
}
|
||||
},
|
||||
scriptText = `var message='hello'`,
|
||||
blob = new Blob([scriptText], { type: 'text/javascript' }),
|
||||
url = URL.createObjectURL(blob)
|
||||
try {
|
||||
new Worker(url, textTypeOption).terminate();
|
||||
return isTypeOptionSupported;
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -51,6 +51,7 @@
|
||||
"css/all",
|
||||
"css/animations",
|
||||
"css/appearance",
|
||||
"css/aspectratio",
|
||||
"css/backdropfilter",
|
||||
"css/backgroundblendmode",
|
||||
"css/backgroundcliptext",
|
||||
@@ -320,7 +321,9 @@
|
||||
"window/atob-btoa",
|
||||
"window/framed",
|
||||
"window/matchmedia",
|
||||
"window/pushmanager",
|
||||
"window/resizeobserver",
|
||||
"workers/workertypeoption",
|
||||
"workers/blobworkers",
|
||||
"workers/dataworkers",
|
||||
"workers/sharedworkers",
|
||||
|
||||
@@ -64,6 +64,7 @@ window.caniusecb = function(caniuse) {
|
||||
cssvmaxunit: 'viewport-units',
|
||||
cssvminunit: 'viewport-units',
|
||||
cssvwunit: 'viewport-units',
|
||||
cssaspectratio:'mdn-css_properties_aspect-ratio',
|
||||
customproperties: 'css-variables',
|
||||
datalistelem: 'datalist',
|
||||
dataset: 'dataset',
|
||||
@@ -126,6 +127,7 @@ window.caniusecb = function(caniuse) {
|
||||
progressbar: 'progress',
|
||||
promises: 'promises',
|
||||
proximity: 'proximity',
|
||||
pushmanager: 'mdn-api_pushmanager',
|
||||
queryselector: 'queryselector',
|
||||
regions: 'css-regions',
|
||||
requestanimationframe: 'requestanimationframe',
|
||||
@@ -165,6 +167,7 @@ window.caniusecb = function(caniuse) {
|
||||
websockets: 'websockets',
|
||||
websqldatabase: 'sql-storage',
|
||||
webworkers: 'webworkers',
|
||||
workertypeoption:'mdn-api_worker_worker_ecmascript_modules',
|
||||
willchange: 'will-change',
|
||||
xhr2: 'xhr2'
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user