Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add WKWebView to BCD #23747

Merged
merged 8 commits into from
Sep 10, 2024
Merged

Add WKWebView to BCD #23747

merged 8 commits into from
Sep 10, 2024

Conversation

queengooborg
Copy link
Contributor

This PR adds WKWebView to BCD, which fixes #23296. The data will be set to mirror for all features at first, which will occur in a follow-up PR.

@github-actions github-actions bot added schema Isses or pull requests regarding the JSON schema files used in this project. infra Infrastructure issues (npm, GitHub Actions, releases) of this project docs Issues or pull requests regarding the documentation of this project. data:browsers Data about browsers (versions, release dates, etc). This data is used for validation. scripts Issues or pull requests regarding the scripts in scripts/. labels Jul 10, 2024
Copy link

@NiklasMerz NiklasMerz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit confused about version. My iPad with iOS 17.5.1 reports version 605.1.15 as you can see in openwebdocs/mdn-bcd-results#1164. This does not really map out to the engine versions for Safari here.

@queengooborg
Copy link
Contributor Author

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 queengooborg requested a review from Elchi3 August 16, 2024 19:19
Copy link
Member

@Elchi3 Elchi3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me. However, prior to adding this, I would like to know how many values we would record that aren't "mirror". Do we have a collector run to assess that?

@github-actions github-actions bot added the bulk_update An update to a mass amount of data, or scripts/linters related to such changes label Aug 20, 2024
@queengooborg
Copy link
Contributor Author

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

@Elchi3
Copy link
Member

Elchi3 commented Aug 20, 2024

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

@RupertBenWiser
Copy link

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.

queengooborg and others added 2 commits September 10, 2024 02:44
Copy link
Member

@Elchi3 Elchi3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's do this! Given we are able to maintain this data using the OWD collector and BCD already has the android webview data, too, it seems reasonable to also maintain webview_ios data. The 179 features that are not supported webview_ios but are supported in safari_ios are particularly interesting to caniwebview.com and other consumers.

After this PR lands, I expect to see a PR that runs the migration and a collector run for webview_ios.

@Elchi3 Elchi3 merged commit c8920b1 into main Sep 10, 2024
9 checks passed
@Elchi3 Elchi3 deleted the browsers/webview_ios branch September 10, 2024 09:55
@queengooborg queengooborg added the semver-minor-bump A change that adds a new, non-potentially-breaking feature for consumers label Sep 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bulk_update An update to a mass amount of data, or scripts/linters related to such changes data:browsers Data about browsers (versions, release dates, etc). This data is used for validation. docs Issues or pull requests regarding the documentation of this project. infra Infrastructure issues (npm, GitHub Actions, releases) of this project schema Isses or pull requests regarding the JSON schema files used in this project. scripts Issues or pull requests regarding the scripts in scripts/. semver-minor-bump A change that adds a new, non-potentially-breaking feature for consumers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Consider adding WKWebView
4 participants