Skip to content

Commit

Permalink
Add latest feature detects and fixes from v4 branch (#2726)
Browse files Browse the repository at this point in the history
* 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)
  • Loading branch information
rejas committed Jul 20, 2023
1 parent f42c12d commit d57b8ca
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 4 deletions.
36 changes: 36 additions & 0 deletions feature-detects/css/aspectratio.js
Original file line number Diff line number Diff line change
@@ -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;
}
}
});
});
12 changes: 8 additions & 4 deletions feature-detects/network/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 changes: 19 additions & 0 deletions feature-detects/window/pushmanager.js
Original file line number Diff line number Diff line change
@@ -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 changes: 42 additions & 0 deletions feature-detects/workers/workertypeoption.js
Original file line number Diff line number Diff line change
@@ -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;
}
});
});
3 changes: 3 additions & 0 deletions lib/config-all.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
"css/all",
"css/animations",
"css/appearance",
"css/aspectratio",
"css/backdropfilter",
"css/backgroundblendmode",
"css/backgroundcliptext",
Expand Down Expand Up @@ -320,7 +321,9 @@
"window/atob-btoa",
"window/framed",
"window/matchmedia",
"window/pushmanager",
"window/resizeobserver",
"workers/workertypeoption",
"workers/blobworkers",
"workers/dataworkers",
"workers/sharedworkers",
Expand Down
3 changes: 3 additions & 0 deletions test/browser/integration/caniuse.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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',
Expand Down Expand Up @@ -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'
};
Expand Down

0 comments on commit d57b8ca

Please sign in to comment.