From 68d33c15dd734d83e67a75d94949415801ccf150 Mon Sep 17 00:00:00 2001 From: Richard Bloor Date: Wed, 7 May 2025 11:47:30 +1200 Subject: [PATCH 1/2] Add webextensions.api.tabGroups API --- webextensions/api/tabGroups.json | 697 ++++++++++++++++++ .../manifest/optional_permissions.json | 19 + webextensions/manifest/permissions.json | 19 + 3 files changed, 735 insertions(+) create mode 100644 webextensions/api/tabGroups.json diff --git a/webextensions/api/tabGroups.json b/webextensions/api/tabGroups.json new file mode 100644 index 00000000000000..bc801de04f0ffc --- /dev/null +++ b/webextensions/api/tabGroups.json @@ -0,0 +1,697 @@ +{ + "webextensions": { + "api": { + "tabGroups": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "Color": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "TAB_GROUP_ID_NONEs": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "TabGroup": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "collapsed": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "color": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "id": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "shared": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": false + }, + "firefox_android": "mirror", + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "title": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "windowId": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + } + }, + "get": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "groupId": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + } + }, + "move": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "groupId": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "moveProperties": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "index": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "windowId": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + } + } + }, + "onCreated": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "onMoved": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "onRemoved": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "onUpdated": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "query": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "queryInfo": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "collapsed": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "color": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "title": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "windowId": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + } + } + }, + "update": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "groupId": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "updateProperties": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + }, + "collapsed": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "color": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, + "title": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": { + "version_added": false + }, + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + } + } + } + } + } + } +} diff --git a/webextensions/manifest/optional_permissions.json b/webextensions/manifest/optional_permissions.json index 8112dd89673314..40b9dc73affa31 100644 --- a/webextensions/manifest/optional_permissions.json +++ b/webextensions/manifest/optional_permissions.json @@ -735,6 +735,25 @@ } } }, + "tabGroups": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": "mirror", + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, "tabHide": { "__compat": { "support": { diff --git a/webextensions/manifest/permissions.json b/webextensions/manifest/permissions.json index 7ae70211f22d0b..f47abc5d7d0434 100644 --- a/webextensions/manifest/permissions.json +++ b/webextensions/manifest/permissions.json @@ -824,6 +824,25 @@ } } }, + "tabGroups": { + "__compat": { + "support": { + "chrome": { + "version_added": "89" + }, + "edge": "mirror", + "firefox": { + "version_added": "139" + }, + "firefox_android": "mirror", + "opera": "mirror", + "safari": { + "version_added": false + }, + "safari_ios": "mirror" + } + } + }, "tabHide": { "__compat": { "support": { From 9ac6cd54a5d25b39d287015984b7eafcb73aff50 Mon Sep 17 00:00:00 2001 From: rebloor Date: Thu, 8 May 2025 11:55:43 +1200 Subject: [PATCH 2/2] Apply suggestions from review Co-authored-by: Rob Wu --- webextensions/api/tabGroups.json | 66 +------------------------------- 1 file changed, 2 insertions(+), 64 deletions(-) diff --git a/webextensions/api/tabGroups.json b/webextensions/api/tabGroups.json index bc801de04f0ffc..66b06239c09f1a 100644 --- a/webextensions/api/tabGroups.json +++ b/webextensions/api/tabGroups.json @@ -227,27 +227,6 @@ }, "safari_ios": "mirror" } - }, - "groupId": { - "__compat": { - "support": { - "chrome": { - "version_added": "89" - }, - "edge": "mirror", - "firefox": { - "version_added": "139" - }, - "firefox_android": { - "version_added": false - }, - "opera": "mirror", - "safari": { - "version_added": false - }, - "safari_ios": "mirror" - } - } } }, "move": { @@ -270,27 +249,6 @@ "safari_ios": "mirror" } }, - "groupId": { - "__compat": { - "support": { - "chrome": { - "version_added": "89" - }, - "edge": "mirror", - "firefox": { - "version_added": "139" - }, - "firefox_android": { - "version_added": false - }, - "opera": "mirror", - "safari": { - "version_added": false - }, - "safari_ios": "mirror" - } - } - }, "moveProperties": { "__compat": { "support": { @@ -380,7 +338,8 @@ "__compat": { "support": { "chrome": { - "version_added": "89" + "version_added": "89", + "notes": "Not fired when tab groups are moved to another window; tabGroups.onRemoved and onCreated are fired instead." }, "edge": "mirror", "firefox": { @@ -585,27 +544,6 @@ "safari_ios": "mirror" } }, - "groupId": { - "__compat": { - "support": { - "chrome": { - "version_added": "89" - }, - "edge": "mirror", - "firefox": { - "version_added": "139" - }, - "firefox_android": { - "version_added": false - }, - "opera": "mirror", - "safari": { - "version_added": false - }, - "safari_ios": "mirror" - } - } - }, "updateProperties": { "__compat": { "support": {