From 298e26aef2737986f7b06f84ca05924c4e88d20f Mon Sep 17 00:00:00 2001 From: David Pennington Date: Tue, 4 Feb 2025 08:36:25 -0800 Subject: [PATCH 1/5] Create tab_group_shared_state.md add proposal. --- proposals/tab_group_shared_state.md | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 proposals/tab_group_shared_state.md diff --git a/proposals/tab_group_shared_state.md b/proposals/tab_group_shared_state.md new file mode 100644 index 00000000..3632f61d --- /dev/null +++ b/proposals/tab_group_shared_state.md @@ -0,0 +1,41 @@ +# Proposal: Add tabGroups.tabGroup.shared +**Summary** +Chromium is adding the concept of a shared group. Shared groups allow users of the browser to share a collection of tabs in their tabstrip with other users. +On Chrome this feature will update tabs in realtime across multiple logged in users and across all clients for these users. +In its current state we only plan for extensions to access information about whether the group is shared or not. +**Document Metadata** +**Author:** dpenning@google.com +**Sponsoring Browser:** Chrome +**Contributors:** dljames@google.com +**Created:** 2025-01-15 +**Related Issues:** +## Motivation +### Objective +Some browsers may want to restrict access to certain parts of the api as a result of the tabs affiliation with a shared group. Without the extensions knowledge of this shared state, the extension developer will not have an understanding of why querys or commands failed. +#### Use Cases +Extensions that provide heavy interaction/mutation on tab groups may want to exclude access to shared groups through their extensions. +## Specification +### Schema +[chrome.tabGroups.tabGroup](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#type-TabGroup)`.shared` +a boolean field which will denote whether the group is in a shared state or not. +[chrome.tabGroups.query](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#method-query) +the `queryInfo` parameter will accept a new field`shared bool optional` +When provided the tab groups query will filter based on the shared states of the group. +[chrome.tabGroups.onUpdated](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#event-onUpdated) +a method that is currently fired when a group is udated, will also fire when the group's shared state changes. +### Behavior +New restrictions may be placed on shared groups for security and privacy purposes. This is not limited to the tabGroups API and could extend to chrome.tabs and other related API surfaces. The restriction would result in an error that "the action can not be performed due to the object being in a shared state." or a similar error message. +### New Permissions +no new permissions +### Manifest File Changes +no new manifest fields +## Security and Privacy +### Exposed Sensitive Data, Abuse Mitigations, and Additional Security Considerations +This proposal only exposes existing state for a given group. All exposing of sensitive data, abuse mitigations and additional security considerations should be applied to the "shared" feature itself, and this is something likely to be different per browser vendor. +## Alternatives +### Existing Workarounds +Extensions developers currently need to rely on error handling in order to handle issues that arise from restrictions on "saved and synced" groups. These will also apply, and more restrictions may be put in place for "shared" groups +### Open Web API +the tabGroups functionality is purely a browser feature, which is why we only expose this information through the extensions API +## Implementation Notes +Other browser vendors have similar implementations of groups, however im not currently aware of any implementation of this shared state exposure for extensions. From 82890d87f8147a958d6a5e407aa106ac0468ac9e Mon Sep 17 00:00:00 2001 From: David Pennington Date: Mon, 10 Feb 2025 09:19:14 -0800 Subject: [PATCH 2/5] Update proposals/tab_group_shared_state.md Co-authored-by: Oliver Dunk --- proposals/tab_group_shared_state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/tab_group_shared_state.md b/proposals/tab_group_shared_state.md index 3632f61d..b0545a56 100644 --- a/proposals/tab_group_shared_state.md +++ b/proposals/tab_group_shared_state.md @@ -26,7 +26,7 @@ a method that is currently fired when a group is udated, will also fire when the ### Behavior New restrictions may be placed on shared groups for security and privacy purposes. This is not limited to the tabGroups API and could extend to chrome.tabs and other related API surfaces. The restriction would result in an error that "the action can not be performed due to the object being in a shared state." or a similar error message. ### New Permissions -no new permissions +This functionality would be gated behind the existing `tabGroups` permission. The new functionality is in line with the existing API and does not need to be guarded separately (see below). ### Manifest File Changes no new manifest fields ## Security and Privacy From e160f49eecce09e4daa3c6b4f498324a78e6a1f9 Mon Sep 17 00:00:00 2001 From: David Pennington Date: Mon, 10 Feb 2025 09:19:23 -0800 Subject: [PATCH 3/5] Update proposals/tab_group_shared_state.md Co-authored-by: Oliver Dunk --- proposals/tab_group_shared_state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/tab_group_shared_state.md b/proposals/tab_group_shared_state.md index b0545a56..531daa1e 100644 --- a/proposals/tab_group_shared_state.md +++ b/proposals/tab_group_shared_state.md @@ -24,7 +24,7 @@ When provided the tab groups query will filter based on the shared states of the [chrome.tabGroups.onUpdated](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#event-onUpdated) a method that is currently fired when a group is udated, will also fire when the group's shared state changes. ### Behavior -New restrictions may be placed on shared groups for security and privacy purposes. This is not limited to the tabGroups API and could extend to chrome.tabs and other related API surfaces. The restriction would result in an error that "the action can not be performed due to the object being in a shared state." or a similar error message. +Browsers may place browser-specific restrictions on shared groups for security and privacy purposes. This is not limited to the tabGroups API and could extend to chrome.tabs and other related API surfaces. The restriction would result in an error that "the action can not be performed due to the object being in a shared state." or a similar error message. ### New Permissions This functionality would be gated behind the existing `tabGroups` permission. The new functionality is in line with the existing API and does not need to be guarded separately (see below). ### Manifest File Changes From 8f181a858dc00d7cc9d31c2a8e47bdf5788791a0 Mon Sep 17 00:00:00 2001 From: David Pennington Date: Mon, 10 Feb 2025 09:20:24 -0800 Subject: [PATCH 4/5] Update tab_group_shared_state.md --- proposals/tab_group_shared_state.md | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/proposals/tab_group_shared_state.md b/proposals/tab_group_shared_state.md index 531daa1e..6e647015 100644 --- a/proposals/tab_group_shared_state.md +++ b/proposals/tab_group_shared_state.md @@ -3,19 +3,33 @@ Chromium is adding the concept of a shared group. Shared groups allow users of the browser to share a collection of tabs in their tabstrip with other users. On Chrome this feature will update tabs in realtime across multiple logged in users and across all clients for these users. In its current state we only plan for extensions to access information about whether the group is shared or not. + **Document Metadata** + **Author:** dpenning@google.com + **Sponsoring Browser:** Chrome + **Contributors:** dljames@google.com + **Created:** 2025-01-15 + **Related Issues:** + ## Motivation + ### Objective + Some browsers may want to restrict access to certain parts of the api as a result of the tabs affiliation with a shared group. Without the extensions knowledge of this shared state, the extension developer will not have an understanding of why querys or commands failed. + #### Use Cases + Extensions that provide heavy interaction/mutation on tab groups may want to exclude access to shared groups through their extensions. + ## Specification + ### Schema + [chrome.tabGroups.tabGroup](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#type-TabGroup)`.shared` a boolean field which will denote whether the group is in a shared state or not. [chrome.tabGroups.query](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#method-query) @@ -24,18 +38,32 @@ When provided the tab groups query will filter based on the shared states of the [chrome.tabGroups.onUpdated](https://developer.chrome.com/docs/extensions/reference/api/tabGroups#event-onUpdated) a method that is currently fired when a group is udated, will also fire when the group's shared state changes. ### Behavior + Browsers may place browser-specific restrictions on shared groups for security and privacy purposes. This is not limited to the tabGroups API and could extend to chrome.tabs and other related API surfaces. The restriction would result in an error that "the action can not be performed due to the object being in a shared state." or a similar error message. ### New Permissions + This functionality would be gated behind the existing `tabGroups` permission. The new functionality is in line with the existing API and does not need to be guarded separately (see below). ### Manifest File Changes + no new manifest fields + ## Security and Privacy + ### Exposed Sensitive Data, Abuse Mitigations, and Additional Security Considerations + This proposal only exposes existing state for a given group. All exposing of sensitive data, abuse mitigations and additional security considerations should be applied to the "shared" feature itself, and this is something likely to be different per browser vendor. + ## Alternatives + ### Existing Workarounds -Extensions developers currently need to rely on error handling in order to handle issues that arise from restrictions on "saved and synced" groups. These will also apply, and more restrictions may be put in place for "shared" groups + +Extensions developers currently need to rely on error handling in order to handle issues that arise from restrictions on "saved and synced" groups. These will also apply, and more restrictions may be +put in place for "shared" groups + ### Open Web API + the tabGroups functionality is purely a browser feature, which is why we only expose this information through the extensions API + ## Implementation Notes + Other browser vendors have similar implementations of groups, however im not currently aware of any implementation of this shared state exposure for extensions. From 4367f01438145642e51f052123ab8d1e88fc9adc Mon Sep 17 00:00:00 2001 From: David Pennington Date: Mon, 10 Feb 2025 09:21:03 -0800 Subject: [PATCH 5/5] Update tab_group_shared_state.md --- proposals/tab_group_shared_state.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proposals/tab_group_shared_state.md b/proposals/tab_group_shared_state.md index 6e647015..c7d970d5 100644 --- a/proposals/tab_group_shared_state.md +++ b/proposals/tab_group_shared_state.md @@ -1,5 +1,7 @@ # Proposal: Add tabGroups.tabGroup.shared + **Summary** + Chromium is adding the concept of a shared group. Shared groups allow users of the browser to share a collection of tabs in their tabstrip with other users. On Chrome this feature will update tabs in realtime across multiple logged in users and across all clients for these users. In its current state we only plan for extensions to access information about whether the group is shared or not.