From 572b70bc24e0bb411d4fe724acd8d82b923d02da Mon Sep 17 00:00:00 2001
From: Patrick Brosset <patrick.brosset@microsoft.com>
Date: Sat, 15 Mar 2025 16:09:10 +0100
Subject: [PATCH] Update bidi with new BCD keys

---
 features/webdriver-bidi.yml      |  88 ++++++++--
 features/webdriver-bidi.yml.dist | 288 ++++++++++++++++++++++++++++++-
 2 files changed, 362 insertions(+), 14 deletions(-)

diff --git a/features/webdriver-bidi.yml b/features/webdriver-bidi.yml
index 61f2962f92d..f76cbacdeee 100644
--- a/features/webdriver-bidi.yml
+++ b/features/webdriver-bidi.yml
@@ -1,17 +1,79 @@
 name: WebDriver BiDi
 description: WebDriver BiDi is a bidirectional protocol that allows a WebDriver client and a browser to communicate with each other.
 spec: https://w3c.github.io/webdriver-bidi/
-# WebDriver BiDi is not in BCD, see https://github.com/mdn/browser-compat-data/issues/20207
-# The browser releases listed here are from:
-# https://developer.chrome.com/blog/webdriver-bidi-2023
-# https://bugs.chromium.org/p/chromedriver/issues/detail?id=4016
-# https://bugzilla.mozilla.org/show_bug.cgi?id=1753997
 group: webdriver
-status:
-  baseline: false
-  support:
-    chrome: "106"
-    chrome_android: "106"
-    edge: "106"
-    firefox: "102"
-    firefox_android: "102"
+compat_features:
+  - webdriver.bidi.browser
+  - webdriver.bidi.browser.close
+  - webdriver.bidi.browser.createUserContext
+  - webdriver.bidi.browser.getClientWindows
+  - webdriver.bidi.browser.getUserContexts
+  - webdriver.bidi.browser.removeUserContext
+  - webdriver.bidi.browsingContext
+  - webdriver.bidi.browsingContext.activate
+  - webdriver.bidi.browsingContext.captureScreenshot
+  - webdriver.bidi.browsingContext.close
+  - webdriver.bidi.browsingContext.contextCreated_event
+  - webdriver.bidi.browsingContext.contextDestroyed_event
+  - webdriver.bidi.browsingContext.create
+  - webdriver.bidi.browsingContext.domContentLoaded_event
+  - webdriver.bidi.browsingContext.fragmentNavigated_event
+  - webdriver.bidi.browsingContext.getTree
+  - webdriver.bidi.browsingContext.handleUserPrompt
+  - webdriver.bidi.browsingContext.load_event
+  - webdriver.bidi.browsingContext.locateNodes
+  - webdriver.bidi.browsingContext.navigate
+  - webdriver.bidi.browsingContext.navigationCommitted_event
+  - webdriver.bidi.browsingContext.navigationFailed_event
+  - webdriver.bidi.browsingContext.navigationStarted_event
+  - webdriver.bidi.browsingContext.print
+  - webdriver.bidi.browsingContext.reload
+  - webdriver.bidi.browsingContext.setViewport
+  - webdriver.bidi.browsingContext.traverseHistory
+  - webdriver.bidi.browsingContext.userPromptClosed_event
+  - webdriver.bidi.browsingContext.userPromptOpened_event
+  - webdriver.bidi.input
+  - webdriver.bidi.input.performActions
+  - webdriver.bidi.input.releaseActions
+  - webdriver.bidi.input.setFiles
+  - webdriver.bidi.log
+  - webdriver.bidi.log.entryAdded_event
+  - webdriver.bidi.network
+  - webdriver.bidi.network.addIntercept
+  - webdriver.bidi.network.authRequired_event
+  - webdriver.bidi.network.beforeRequestSent_event
+  - webdriver.bidi.network.continueRequest
+  - webdriver.bidi.network.continueResponse
+  - webdriver.bidi.network.continueWithAuth
+  - webdriver.bidi.network.failRequest
+  - webdriver.bidi.network.fetchError_event
+  - webdriver.bidi.network.provideResponse
+  - webdriver.bidi.network.removeIntercept
+  - webdriver.bidi.network.responseCompleted_event
+  - webdriver.bidi.network.responseStarted_event
+  - webdriver.bidi.network.setCacheBehavior
+  - webdriver.bidi.permission
+  - webdriver.bidi.permission.setPermission
+  - webdriver.bidi.script
+  - webdriver.bidi.script.addPreloadScript
+  - webdriver.bidi.script.callFunction
+  - webdriver.bidi.script.disown
+  - webdriver.bidi.script.evaluate
+  - webdriver.bidi.script.getRealms
+  - webdriver.bidi.script.message_event
+  - webdriver.bidi.script.realmCreated_event
+  - webdriver.bidi.script.realmDestroyed_event
+  - webdriver.bidi.script.removePreloadScript
+  - webdriver.bidi.session
+  - webdriver.bidi.session.end
+  - webdriver.bidi.session.new
+  - webdriver.bidi.session.status
+  - webdriver.bidi.session.subscribe
+  - webdriver.bidi.session.unsubscribe
+  - webdriver.bidi.storage
+  - webdriver.bidi.storage.deleteCookies
+  - webdriver.bidi.storage.getCookies
+  - webdriver.bidi.storage.setCookie
+  - webdriver.bidi.webExtension
+  - webdriver.bidi.webExtension.install
+  - webdriver.bidi.webExtension.uninstall
diff --git a/features/webdriver-bidi.yml.dist b/features/webdriver-bidi.yml.dist
index d8851e1da01..426b2771306 100644
--- a/features/webdriver-bidi.yml.dist
+++ b/features/webdriver-bidi.yml.dist
@@ -1,4 +1,290 @@
 # Generated from: webdriver-bidi.yml
 # Do not edit this file by hand. Edit the source file instead!
 
-{}
+status:
+  baseline: false
+  support: {}
+compat_features:
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "92"
+  #   firefox_android: "92"
+  - webdriver.bidi.session
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "94"
+  #   firefox_android: "94"
+  - webdriver.bidi.log
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "97"
+  #   firefox_android: "97"
+  - webdriver.bidi.session.status
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "99"
+  #   firefox_android: "99"
+  - webdriver.bidi.browsingContext
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "100"
+  #   firefox_android: "100"
+  - webdriver.bidi.browsingContext.getTree
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "106"
+  #   firefox_android: "106"
+  - webdriver.bidi.browsingContext.load_event
+  - webdriver.bidi.script
+  - webdriver.bidi.script.callFunction
+  - webdriver.bidi.script.disown
+  - webdriver.bidi.script.evaluate
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "108"
+  #   firefox_android: "108"
+  - webdriver.bidi.browsingContext.domContentLoaded_event
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "110"
+  #   firefox_android: "110"
+  - webdriver.bidi.network
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "112"
+  #   firefox_android: "112"
+  - webdriver.bidi.script.removePreloadScript
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "113"
+  #   firefox_android: "113"
+  - webdriver.bidi.input
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "114"
+  #   firefox_android: "114"
+  - webdriver.bidi.input.performActions
+  - webdriver.bidi.input.releaseActions
+  - webdriver.bidi.script.addPreloadScript
+  - webdriver.bidi.script.message_event
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "117"
+  #   firefox_android: "117"
+  - webdriver.bidi.browser
+  - webdriver.bidi.browsingContext.fragmentNavigated_event
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "118"
+  #   firefox_android: "118"
+  - webdriver.bidi.browsingContext.activate
+  - webdriver.bidi.network.removeIntercept
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "119"
+  #   firefox_android: "119"
+  - webdriver.bidi.browsingContext.navigationStarted_event
+  - webdriver.bidi.script.realmDestroyed_event
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "123"
+  #   firefox_android: "123"
+  - webdriver.bidi.network.failRequest
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "124"
+  #   firefox_android: "124"
+  - webdriver.bidi.browser.createUserContext
+  - webdriver.bidi.browser.getUserContexts
+  - webdriver.bidi.storage
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "126"
+  #   firefox_android: "126"
+  - webdriver.bidi.storage.deleteCookies
+  - webdriver.bidi.storage.getCookies
+  - webdriver.bidi.storage.setCookie
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "127"
+  #   firefox_android: "127"
+  - webdriver.bidi.permission
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "128"
+  #   firefox_android: "128"
+  - webdriver.bidi.permission.setPermission
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "129"
+  #   firefox_android: "129"
+  - webdriver.bidi.browser.close
+  - webdriver.bidi.browser.removeUserContext
+  - webdriver.bidi.browsingContext.close
+  - webdriver.bidi.browsingContext.handleUserPrompt
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  #   firefox: "136"
+  #   firefox_android: "136"
+  - webdriver.bidi.session.subscribe
+  - webdriver.bidi.session.unsubscribe
+
+  # baseline: false
+  # support:
+  #   chrome: "131"
+  #   chrome_android: "131"
+  #   edge: "131"
+  #   firefox: "135"
+  #   firefox_android: "135"
+  - webdriver.bidi.browsingContext.captureScreenshot
+
+  # baseline: false
+  # support:
+  #   chrome: "132"
+  #   chrome_android: "132"
+  #   edge: "132"
+  #   firefox: "130"
+  #   firefox_android: "130"
+  - webdriver.bidi.network.setCacheBehavior
+
+  # baseline: false
+  # support:
+  #   chrome: "126"
+  #   chrome_android: "126"
+  #   edge: "126"
+  - webdriver.bidi.browsingContext.contextCreated_event
+  - webdriver.bidi.browsingContext.contextDestroyed_event
+  - webdriver.bidi.browsingContext.create
+  - webdriver.bidi.browsingContext.locateNodes
+  - webdriver.bidi.browsingContext.navigate
+  - webdriver.bidi.browsingContext.navigationCommitted_event
+  - webdriver.bidi.browsingContext.navigationFailed_event
+  - webdriver.bidi.browsingContext.reload
+  - webdriver.bidi.browsingContext.setViewport
+  - webdriver.bidi.browsingContext.traverseHistory
+  - webdriver.bidi.browsingContext.userPromptClosed_event
+  - webdriver.bidi.browsingContext.userPromptOpened_event
+  - webdriver.bidi.input.setFiles
+  - webdriver.bidi.log.entryAdded_event
+  - webdriver.bidi.network.continueWithAuth
+  - webdriver.bidi.script.getRealms
+  - webdriver.bidi.script.realmCreated_event
+  - webdriver.bidi.session.new
+
+  # baseline: false
+  # support:
+  #   chrome: "133"
+  #   chrome_android: "133"
+  #   edge: "133"
+  - webdriver.bidi.network.fetchError_event
+
+  # baseline: false
+  # support:
+  #   firefox: "122"
+  #   firefox_android: "122"
+  - webdriver.bidi.network.authRequired_event
+
+  # baseline: false
+  # support:
+  #   firefox: "134"
+  #   firefox_android: "134"
+  - webdriver.bidi.browser.getClientWindows
+
+  # ⬇️ Same status as overall feature ⬇️
+  # baseline: false
+  # support: {}
+  - webdriver.bidi.browsingContext.print
+  - webdriver.bidi.network.addIntercept
+  - webdriver.bidi.network.beforeRequestSent_event
+  - webdriver.bidi.network.continueRequest
+  - webdriver.bidi.network.continueResponse
+  - webdriver.bidi.network.provideResponse
+  - webdriver.bidi.network.responseCompleted_event
+  - webdriver.bidi.network.responseStarted_event
+  - webdriver.bidi.session.end
+  - webdriver.bidi.webExtension
+  - webdriver.bidi.webExtension.install
+  - webdriver.bidi.webExtension.uninstall