browser-compat-data icon indicating copy to clipboard operation
browser-compat-data copied to clipboard

Add WKWebView to BCD

Open queengooborg opened this issue 1 year ago • 4 comments

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.

queengooborg avatar Jul 10 '24 16:07 queengooborg

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.

queengooborg avatar Jul 10 '24 18:07 queengooborg

Here's a file that contains the changes made by update-bcd, with some cleanup work: WKWebView.patch

queengooborg avatar Aug 20 '24 05:08 queengooborg

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

  1. api.Client
  2. api.Client.frameType
  3. api.Client.id
  4. api.Client.postMessage
  5. api.Client.type
  6. api.Client.url
  7. api.Clients
  8. api.Clients.claim
  9. api.Clients.get
  10. api.Clients.matchAll
  11. api.Clients.matchAll.options_includeUncontrolled_parameter
  12. api.Clients.openWindow
  13. api.DeviceMotionEventAcceleration
  14. api.DeviceMotionEventAcceleration.x
  15. api.DeviceMotionEventAcceleration.y
  16. api.DeviceMotionEventAcceleration.z
  17. api.DeviceMotionEventRotationRate
  18. api.DeviceMotionEventRotationRate.alpha
  19. api.DeviceMotionEventRotationRate.beta
  20. api.DeviceMotionEventRotationRate.gamma
  21. api.Document.exitFullscreen
  22. api.Document.fullscreen
  23. api.Document.fullscreenchange_event
  24. api.Document.fullscreenEnabled
  25. api.Document.fullscreenerror_event
  26. api.Element.fullscreenchange_event
  27. api.Element.fullscreenerror_event
  28. api.Element.requestFullscreen
  29. api.Element.requestFullscreen.returns_promise
  30. api.ExtendableEvent
  31. api.ExtendableEvent.ExtendableEvent
  32. api.ExtendableEvent.waitUntil
  33. api.ExtendableMessageEvent
  34. api.ExtendableMessageEvent.ExtendableMessageEvent
  35. api.ExtendableMessageEvent.data
  36. api.ExtendableMessageEvent.lastEventId
  37. api.ExtendableMessageEvent.origin
  38. api.ExtendableMessageEvent.ports
  39. api.ExtendableMessageEvent.source
  40. api.FetchEvent
  41. api.FetchEvent.FetchEvent
  42. api.FetchEvent.clientId
  43. api.FetchEvent.handled
  44. api.FetchEvent.preloadResponse
  45. api.FetchEvent.request
  46. api.FetchEvent.respondWith
  47. api.FetchEvent.resultingClientId
  48. api.InstallEvent
  49. api.MediaSource
  50. api.MediaSource.MediaSource
  51. api.MediaSource.activeSourceBuffers
  52. api.MediaSource.addSourceBuffer
  53. api.MediaSource.clearLiveSeekableRange
  54. api.MediaSource.duration
  55. api.MediaSource.endOfStream
  56. api.MediaSource.isTypeSupported_static
  57. api.MediaSource.readyState
  58. api.MediaSource.removeSourceBuffer
  59. api.MediaSource.setLiveSeekableRange
  60. api.MediaSource.sourceBuffers
  61. api.MediaSource.sourceclose_event
  62. api.MediaSource.sourceended_event
  63. api.MediaSource.sourceopen_event
  64. api.Navigator.clearAppBadge
  65. api.Navigator.serviceWorker
  66. api.Navigator.setAppBadge
  67. api.Notification
  68. api.Notification.Notification
  69. api.Notification.badge
  70. api.Notification.body
  71. api.Notification.close
  72. api.Notification.data
  73. api.Notification.dir
  74. api.Notification.icon
  75. api.Notification.lang
  76. api.Notification.permission_static
  77. api.Notification.requestPermission_static
  78. api.Notification.silent
  79. api.Notification.title
  80. api.NotificationEvent
  81. api.NotificationEvent.NotificationEvent
  82. api.Permissions.permission_camera
  83. api.Permissions.permission_geolocation
  84. api.Permissions.permission_microphone
  85. api.Permissions.permission_notifications
  86. api.Permissions.permission_push
  87. api.PushEvent
  88. api.PushEvent.PushEvent
  89. api.PushEvent.data
  90. api.PushManager
  91. api.PushManager.getSubscription
  92. api.PushManager.permissionState
  93. api.PushManager.subscribe
  94. api.PushManager.supportedContentEncodings_static
  95. api.PushMessageData
  96. api.PushMessageData.arrayBuffer
  97. api.PushMessageData.blob
  98. api.PushMessageData.json
  99. api.PushMessageData.text
  100. api.PushSubscription
  101. api.PushSubscription.endpoint
  102. api.PushSubscription.expirationTime
  103. api.PushSubscription.getKey
  104. api.PushSubscription.options
  105. api.PushSubscription.toJSON
  106. api.PushSubscription.unsubscribe
  107. api.PushSubscriptionChangeEvent
  108. api.PushSubscriptionChangeEvent.PushSubscriptionChangeEvent
  109. api.PushSubscriptionChangeEvent.newSubscription
  110. api.PushSubscriptionChangeEvent.oldSubscription
  111. api.PushSubscriptionOptions
  112. api.PushSubscriptionOptions.applicationServerKey
  113. api.PushSubscriptionOptions.userVisibleOnly
  114. api.ServiceWorker
  115. api.ServiceWorker.error_event
  116. api.ServiceWorker.postMessage
  117. api.ServiceWorker.scriptURL
  118. api.ServiceWorker.state
  119. api.ServiceWorker.statechange_event
  120. api.ServiceWorkerContainer
  121. api.ServiceWorkerContainer.controller
  122. api.ServiceWorkerContainer.controllerchange_event
  123. api.ServiceWorkerContainer.getRegistration
  124. api.ServiceWorkerContainer.getRegistrations
  125. api.ServiceWorkerContainer.message_event
  126. api.ServiceWorkerContainer.ready
  127. api.ServiceWorkerContainer.register
  128. api.ServiceWorkerContainer.startMessages
  129. api.ServiceWorkerGlobalScope
  130. api.ServiceWorkerGlobalScope.activate_event
  131. api.ServiceWorkerGlobalScope.clients
  132. api.ServiceWorkerGlobalScope.fetch_event
  133. api.ServiceWorkerGlobalScope.install_event
  134. api.ServiceWorkerGlobalScope.message_event
  135. api.ServiceWorkerGlobalScope.messageerror_event
  136. api.ServiceWorkerGlobalScope.push_event
  137. api.ServiceWorkerGlobalScope.registration
  138. api.ServiceWorkerGlobalScope.serviceWorker
  139. api.ServiceWorkerGlobalScope.skipWaiting
  140. api.ServiceWorkerRegistration
  141. api.ServiceWorkerRegistration.active
  142. api.ServiceWorkerRegistration.getNotifications
  143. api.ServiceWorkerRegistration.installing
  144. api.ServiceWorkerRegistration.navigationPreload
  145. api.ServiceWorkerRegistration.pushManager
  146. api.ServiceWorkerRegistration.scope
  147. api.ServiceWorkerRegistration.showNotification
  148. api.ServiceWorkerRegistration.unregister
  149. api.ServiceWorkerRegistration.update
  150. api.ServiceWorkerRegistration.updatefound_event
  151. api.ServiceWorkerRegistration.updateViaCache
  152. api.ServiceWorkerRegistration.waiting
  153. api.SourceBuffer
  154. api.SourceBuffer.abort
  155. api.SourceBuffer.abort_event
  156. api.SourceBuffer.appendBuffer
  157. api.SourceBuffer.appendWindowEnd
  158. api.SourceBuffer.appendWindowStart
  159. api.SourceBuffer.audioTracks
  160. api.SourceBuffer.buffered
  161. api.SourceBuffer.changeType
  162. api.SourceBuffer.error_event
  163. api.SourceBuffer.mode
  164. api.SourceBuffer.remove
  165. api.SourceBuffer.textTracks
  166. api.SourceBuffer.timestampOffset
  167. api.SourceBuffer.update_event
  168. api.SourceBuffer.updateend_event
  169. api.SourceBuffer.updatestart_event
  170. api.SourceBuffer.updating
  171. api.SourceBuffer.videoTracks
  172. api.WEBGL_compressed_texture_s3tc_srgb
  173. api.WindowClient
  174. api.WindowClient.ancestorOrigins
  175. api.WindowClient.focus
  176. api.WindowClient.focused
  177. api.WindowClient.visibilityState
  178. api.WorkerGlobalScope.languagechange_event
  179. api.WorkerNavigator.serviceWorker

Elchi3 avatar Aug 20 '24 07:08 Elchi3

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.

RupertBenWiser avatar Aug 21 '24 07:08 RupertBenWiser