A lot of the changes in v3 seem great. However, Thomas clearly describes some important accessibility concerns [0] - that some extensions need to run on all URLs, automatically, in order to help their users access those pages.
As Devlin mentioned, the draft Manifest v3 document acknowledges this need, and states that users will be able to enable an extension for all URLs in the browser's settings [1]. However this is likely to exclude some users: those who are not technically literate, or who have access needs that could prevent them from being able to reach, or understand, that option [0].
As Thomas' post covers several issues, with the conversation leaning towards content blockers, I thought it would be OK to start a thread specifically relating to accessibility concerns and suggestions.
// Suggestions
These could work in concert. Only the last one would maintain the current Manifest v2 level of accessibility support out-of-the-box.
A. In order to make the "all URLs" option more understandable, extensions should provide the reason why they need the access, to be displayed in the browser's UI (e.g. next to the "enable for all URLs" button or checkbox).
B(1). Provide an API, like runtime.openOptionsPage(), to allow the extension to send the user directly to the extension's "browser-side" settings, to make the journey to the "all URLs" option easier. Also provide an API to allow an extension to check if it has that permission, like extension.isAllowedFileSchemeAccess(). Then, if it doesn't, a splash page (created by the extension developer) could be used to inform users why they may wish to enable it, and direct them to it.
There's a possibility this may encourage extensions to follow this pattern unnecessarily, but I'm not sure that would happen in practice - developers would have to put effort in to use the APIs. Plus the user would have to feel there's value in enabling the option, or they wouldn't enable it.
B(2). Alternatively, you could allow an extension to request the <all_urls> optional permission (i.e. strictly not at install time), but restrict this to only one attempt to do so, and only after the user has activated the extension x times, perhaps across y domains - which indicates the user has some level of interest in using it. The reason for the request would be included in the browser's permissions pop-up.
Whilst supporting <all_urls> as an optional permission appears to've been discounted in the v3 document, perhaps it's more viable with the above limits? In order to make this approach work, an API to check for the permission before attempting to ask for it would need to be added, as with B(1) above.
C. Have the browser detect that the user is choosing to activate the extension's features (via UI or keyboard command) on several/many pages, and have the browser itself offer to enable the extension for all URLs.
D. Allow extensions in the "accessibility" category to request the "all URLs" permission on install - i.e. the install confirmation pop-up would state the extension's reason for needing that access (if the extension requires it) and proceeding with the install would enable that option.
Are there any other approaches that could be used? I hope the above might contribute to a discussion as to how accessibility extensions can continue to be fully supported under the new approach.
// Background info on the Landmarks extension
[ I'm including this as it may provide use-case info for Chromium developers. ]
Like some other accessibility extensions, the Landmarks extension [2] (which I maintain) needs to run on all pages, automatically. Specifically in order to:
* Scan for landmarks when the user visits a new page (or a new view within a single-page app), and put a badge on the browserAction icon, to let users know if there are any landmark regions on the page - and therefore if it’s going to work for them to use the keyboard navigation commands. If the DevTools panel is open (or the sidebar, on Firefox or Opera) then it needs to be updated with any landmarks found.
* Set up a mutation observer to detect changes to the page that may add/remove landmarks, so the information presented to the user (i.e. browserAction badge, DevTools panel if it's open and sidebar on Firefox and Opera) is always up-to-date.
As this extension is intended for people who use the keyboard only, I do have some concerns about the barriers raised by the process of traversing through the UI to get to the forthcoming "all URLs" option (I just tried it on the current version of Chrome and I found it non-trivial, as there is weak visual focus indication on some elements such as the Settings/Extensions hamburger menu and the search box), which was one of the factors behind suggestion B above.
best regards,
Matthew
[0]
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-extensions/NgUi_TysRPI[1]
https://docs.google.com/document/d/1nPu6Wy4LWR66EFLeYInl3NzzhHzc-qnk4w4PX-0XMw8/edit#heading=h.oenw1ekaaubz[2]
http://matatk.agrip.org.uk/landmarks/