Add WKWebView to BCD
This PR adds WKWebView to BCD, which fixes https://github.com/mdn/browser-compat-data/issues/23296. The data will be set to mirror for all features at first, which will occur in a follow-up PR.
That's because the user agent string was frozen at that time, so it always reports WebKit "605" now, despite it being a much newer version of WebKit. This is the case for Safari Desktop and Safari iOS too.
Here's a file that contains the changes made by update-bcd, with some cleanup work: WKWebView.patch
Thanks @queengooborg!!
This get us 179 features that are not supported webview_ios but are supported in safari_ios.
Do we know if these findings are correct? @NiklasMerz @RupertBenWiser @jdatapple
If so, I think I'm fine with proceeding to add webview_ios to BCD.
Output of npm run traverse -- -b webview_ios -f nonmirror on this branch after running the migration script and applying @queengooborg patch from the collector run.
List
- api.Client
- api.Client.frameType
- api.Client.id
- api.Client.postMessage
- api.Client.type
- api.Client.url
- api.Clients
- api.Clients.claim
- api.Clients.get
- api.Clients.matchAll
- api.Clients.matchAll.options_includeUncontrolled_parameter
- api.Clients.openWindow
- api.DeviceMotionEventAcceleration
- api.DeviceMotionEventAcceleration.x
- api.DeviceMotionEventAcceleration.y
- api.DeviceMotionEventAcceleration.z
- api.DeviceMotionEventRotationRate
- api.DeviceMotionEventRotationRate.alpha
- api.DeviceMotionEventRotationRate.beta
- api.DeviceMotionEventRotationRate.gamma
- api.Document.exitFullscreen
- api.Document.fullscreen
- api.Document.fullscreenchange_event
- api.Document.fullscreenEnabled
- api.Document.fullscreenerror_event
- api.Element.fullscreenchange_event
- api.Element.fullscreenerror_event
- api.Element.requestFullscreen
- api.Element.requestFullscreen.returns_promise
- api.ExtendableEvent
- api.ExtendableEvent.ExtendableEvent
- api.ExtendableEvent.waitUntil
- api.ExtendableMessageEvent
- api.ExtendableMessageEvent.ExtendableMessageEvent
- api.ExtendableMessageEvent.data
- api.ExtendableMessageEvent.lastEventId
- api.ExtendableMessageEvent.origin
- api.ExtendableMessageEvent.ports
- api.ExtendableMessageEvent.source
- api.FetchEvent
- api.FetchEvent.FetchEvent
- api.FetchEvent.clientId
- api.FetchEvent.handled
- api.FetchEvent.preloadResponse
- api.FetchEvent.request
- api.FetchEvent.respondWith
- api.FetchEvent.resultingClientId
- api.InstallEvent
- api.MediaSource
- api.MediaSource.MediaSource
- api.MediaSource.activeSourceBuffers
- api.MediaSource.addSourceBuffer
- api.MediaSource.clearLiveSeekableRange
- api.MediaSource.duration
- api.MediaSource.endOfStream
- api.MediaSource.isTypeSupported_static
- api.MediaSource.readyState
- api.MediaSource.removeSourceBuffer
- api.MediaSource.setLiveSeekableRange
- api.MediaSource.sourceBuffers
- api.MediaSource.sourceclose_event
- api.MediaSource.sourceended_event
- api.MediaSource.sourceopen_event
- api.Navigator.clearAppBadge
- api.Navigator.serviceWorker
- api.Navigator.setAppBadge
- api.Notification
- api.Notification.Notification
- api.Notification.badge
- api.Notification.body
- api.Notification.close
- api.Notification.data
- api.Notification.dir
- api.Notification.icon
- api.Notification.lang
- api.Notification.permission_static
- api.Notification.requestPermission_static
- api.Notification.silent
- api.Notification.title
- api.NotificationEvent
- api.NotificationEvent.NotificationEvent
- api.Permissions.permission_camera
- api.Permissions.permission_geolocation
- api.Permissions.permission_microphone
- api.Permissions.permission_notifications
- api.Permissions.permission_push
- api.PushEvent
- api.PushEvent.PushEvent
- api.PushEvent.data
- api.PushManager
- api.PushManager.getSubscription
- api.PushManager.permissionState
- api.PushManager.subscribe
- api.PushManager.supportedContentEncodings_static
- api.PushMessageData
- api.PushMessageData.arrayBuffer
- api.PushMessageData.blob
- api.PushMessageData.json
- api.PushMessageData.text
- api.PushSubscription
- api.PushSubscription.endpoint
- api.PushSubscription.expirationTime
- api.PushSubscription.getKey
- api.PushSubscription.options
- api.PushSubscription.toJSON
- api.PushSubscription.unsubscribe
- api.PushSubscriptionChangeEvent
- api.PushSubscriptionChangeEvent.PushSubscriptionChangeEvent
- api.PushSubscriptionChangeEvent.newSubscription
- api.PushSubscriptionChangeEvent.oldSubscription
- api.PushSubscriptionOptions
- api.PushSubscriptionOptions.applicationServerKey
- api.PushSubscriptionOptions.userVisibleOnly
- api.ServiceWorker
- api.ServiceWorker.error_event
- api.ServiceWorker.postMessage
- api.ServiceWorker.scriptURL
- api.ServiceWorker.state
- api.ServiceWorker.statechange_event
- api.ServiceWorkerContainer
- api.ServiceWorkerContainer.controller
- api.ServiceWorkerContainer.controllerchange_event
- api.ServiceWorkerContainer.getRegistration
- api.ServiceWorkerContainer.getRegistrations
- api.ServiceWorkerContainer.message_event
- api.ServiceWorkerContainer.ready
- api.ServiceWorkerContainer.register
- api.ServiceWorkerContainer.startMessages
- api.ServiceWorkerGlobalScope
- api.ServiceWorkerGlobalScope.activate_event
- api.ServiceWorkerGlobalScope.clients
- api.ServiceWorkerGlobalScope.fetch_event
- api.ServiceWorkerGlobalScope.install_event
- api.ServiceWorkerGlobalScope.message_event
- api.ServiceWorkerGlobalScope.messageerror_event
- api.ServiceWorkerGlobalScope.push_event
- api.ServiceWorkerGlobalScope.registration
- api.ServiceWorkerGlobalScope.serviceWorker
- api.ServiceWorkerGlobalScope.skipWaiting
- api.ServiceWorkerRegistration
- api.ServiceWorkerRegistration.active
- api.ServiceWorkerRegistration.getNotifications
- api.ServiceWorkerRegistration.installing
- api.ServiceWorkerRegistration.navigationPreload
- api.ServiceWorkerRegistration.pushManager
- api.ServiceWorkerRegistration.scope
- api.ServiceWorkerRegistration.showNotification
- api.ServiceWorkerRegistration.unregister
- api.ServiceWorkerRegistration.update
- api.ServiceWorkerRegistration.updatefound_event
- api.ServiceWorkerRegistration.updateViaCache
- api.ServiceWorkerRegistration.waiting
- api.SourceBuffer
- api.SourceBuffer.abort
- api.SourceBuffer.abort_event
- api.SourceBuffer.appendBuffer
- api.SourceBuffer.appendWindowEnd
- api.SourceBuffer.appendWindowStart
- api.SourceBuffer.audioTracks
- api.SourceBuffer.buffered
- api.SourceBuffer.changeType
- api.SourceBuffer.error_event
- api.SourceBuffer.mode
- api.SourceBuffer.remove
- api.SourceBuffer.textTracks
- api.SourceBuffer.timestampOffset
- api.SourceBuffer.update_event
- api.SourceBuffer.updateend_event
- api.SourceBuffer.updatestart_event
- api.SourceBuffer.updating
- api.SourceBuffer.videoTracks
- api.WEBGL_compressed_texture_s3tc_srgb
- api.WindowClient
- api.WindowClient.ancestorOrigins
- api.WindowClient.focus
- api.WindowClient.focused
- api.WindowClient.visibilityState
- api.WorkerGlobalScope.languagechange_event
- api.WorkerNavigator.serviceWorker
Given I don't have experience in WKWebView, I just created an emulator on my macbook and verified that the results you flagged were not supported in an emulator, but were in safari.
The only issue I flagged was that on my ios 17.5.1 device, api.DeviceMotionEventAcceleration, DeviceMotionEventRotationRate, Navigator.clearAppBadge, and Navigator.setAppBadge were also not supported in safari. That seems like an issue with the larger data set though so no concerns regarding this list.
Would love to hopefully get @jdatapple 's eyes on this before landing.