File tree Expand file tree Collapse file tree 2 files changed +32
-0
lines changed
Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import type { Equal, Expect } from '@utils/types'
22
33import { clipboardItem } from './items/clipboard'
44import { fileSystemItem } from './items/fileSystem'
5+ import { mediaSessionItem } from './items/mediaSession'
56import { sharedArrayBufferItem } from './items/sharedArrayBuffer'
67import type { Compatibility as CP } from './types'
78
@@ -11,12 +12,14 @@ export const compatibilityMap = {
1112 [ fileSystemItem . key ] : fileSystemItem . meet ,
1213 [ clipboardItem . key ] : clipboardItem . meet ,
1314 [ sharedArrayBufferItem . key ] : sharedArrayBufferItem . meet ,
15+ [ mediaSessionItem . key ] : mediaSessionItem . meet ,
1416} as const satisfies Record < string , boolean >
1517
1618const _compatibilityList = [
1719 fileSystemItem ,
1820 clipboardItem ,
1921 sharedArrayBufferItem ,
22+ mediaSessionItem ,
2023] as const satisfies readonly CP . CompatibilityItem [ ]
2124
2225export const compatibilityList : readonly CP . CompatibilityItem [ ] = _compatibilityList
Original file line number Diff line number Diff line change 1+ import type { Compatibility as CP } from '..'
2+
3+ const mediaSessionInfo = {
4+ key : 'mediaSession' ,
5+ name : '媒体会话' ,
6+ description : '媒体会话 (Media Session) 允许网页自定义媒体通知和响应媒体键事件。' ,
7+ referenceUrls : [
8+ { label : 'Can I Use: Media Session' , url : 'https://caniuse.com/wf-media-session' } ,
9+ ] ,
10+ severity : 'info' ,
11+ effect : '将不能从系统媒体控制界面(如锁屏界面或通知中心)控制媒体播放。' ,
12+ } as const satisfies CP . CompatibilityInfo
13+
14+ const meet =
15+ 'mediaSession' in navigator &&
16+ typeof navigator . mediaSession . metadata === 'object' &&
17+ typeof navigator . mediaSession . setActionHandler === 'function'
18+
19+ function findWhy ( ) : string | undefined {
20+ if ( meet ) return undefined
21+ return '浏览器不支持媒体会话相关的 API。此 API 在 Chromium 72、Firefox 82、Safari 15 或以上版本中支持。Firefox Android 目前不支持。'
22+ }
23+ const why = findWhy ( )
24+
25+ export const mediaSessionItem = {
26+ ...mediaSessionInfo ,
27+ meet,
28+ why,
29+ } as const satisfies CP . CompatibilityItem
You can’t perform that action at this time.
0 commit comments