For #109277
- Add `option` opener priority. This means the oper will only be shown if requested but will not replace the default opener
- Persist registered openers for IntelliSense suggestions
If the user has configured a specific external uri opener, we should always try to use that without first calling `canOpen` to filter down the list of openers.
This change also adds `ExternalUriOpenerEnablement` which allows an opener to mark itself as the preferred opener for a given uri. If only a single preferred opener is returned, it will be used automatically for that uri (although user configuration can override this)
- Add error notification if opener throws an exception
- Add public facing id to openers. This is used in settings
- Add intellisense for the opener id setting
This changes makes a few changes to the openers:
- Move the opener prompting from the extension host into the main thread
- Make the external opener process two phases: get openers and then open. This would let us skip the trusted domain validation for extension handled links if we want to in the future
- Add lifecycle to commands used by the uri opener
For #109277
This change moves the extension uri opener contribution point to instead use the internal `IExternalOpener` api instead of the more generic `IOpener` api. This is required since external uri openers should see the resolved uri that has gone through port forwarding, not the raw uri that the user clicked on
* Add support for TS's Hierarchical refactorings API
https://github.com/microsoft/TypeScript/pull/41975
* Add simple browser extension
This change adds a new 'simple browser' extension. This extension uses a webview to render webpages directly in VS Code. We plan on using it for optionally previewing local servers in both desktop and codespaces
The browser itself has a number of limitations due to the security around iframes:
- It traps keyboard focus
- We can't detect if a page fails to load
- We can't track the current url of the iframe
* Add experimental alert when the iframe is focused
* Disable events on focus warning
* Hooking up simple browser to opener