* feat: Allow detection of MITM HTTPS proxies like ZScaler
For security purposes, Figma heavily restrics the origins that are
allowed to load within our Electron app. Unfortunately some corporate
environments use MITM proxies like ZScaler, which intercepts our
connection to `https://www.figma.com` and serves a redirect to e.g.
`https://gateway.zscloud.net` before finally redirecting back to
`https://www.figma.com`.
In order to detect this situation and handle it gracefully, we need to
be able to know whether or not the certificate for our own origin
(`https://www.figma.com`) is chained to a known root. We do this by
exposesing `CertVerifyResult::is_issued_by_known_root`.
If the certification verification passed without the certificate being
tied to a known root, we can safely assume that we are dealing with a
MITM proxy that has its root CA installed locally on the machine. This
means that HTTPS can't be trusted so we might as well make life easier
for corporate users by loosening our origin restrictions without any
manual steps.
* Tweak docs wording
* fix: ensure the typescript definitions only export correct value types
In typescript there are two main types of "types" you can export, value types (class, const) and definition types (type, interface). The typescript compiler will let anything declared via const or class be used as a value. Unfortunately we were exporting a bunch of things (see the diff) as class/const when they weren't actually exported values. This lead to typescript being happy but the runtime throwing errors (not something we want).
This change passes "exported-in" context through our docs, to the parser and then to the definitions generator to ensure we only mark things as exported in the ts defs that we actually export.
Fixes#22167
* chore: update typescript-defs
* chore: update typescript-defs
* chore: fix bad typescript in IPC test
* docs: test rendering of new syntax
* chore: update per feedback, use same syntax but with 'this is not exportedd' line
* fix: correctly identify clipboard read permission
* Update tests for variable clipboard content
* chore: add all possible permission conversions
* VIDEO_CAPTURE and AUDIO_CAPTURE were already defined
* Handle all PermissionTypes
* use skewer case for accessibility events to match permissions api
https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API
* feat: Added support for all proxy modes
This commit extended setProxy to support all proxy modes including
direct, auto_detect, pac_script, fixed_servers and system.
* feat: New api for reload proxy configurations
These methods are needed for closing all idle and in-flight connections after
switching to another proxy from same origin for a session, otherwise
these connections may be reused for future requests which is
unexpected for most of users.
* feat: add serial api support
resolves#22478
* Put serial port support behind a flag and mark as experimental
* Update docs/api/session.md
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* Use enable-blink-features=Serial instead of enable-experimental-web-platform-features
* Set enableBlinkFeatures on webPreferences instead of commandline
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* feat(extensions): expose ExtensionRegistryObserver events in Session
Extensions can be loaded and unloaded for various reasons. In some cases this can
occur by no means of the Electron programmer, such as in the case of chrome.runtime.reload().
In order to be able to manage state about extensions outside of Electron's APIs, events
reloaded to loading and unloaded are needed.
* docs(extensions): elaborate on extension-loaded/unloaded details
* fix: remove scoped extension registry observer
* docs: update extension-unloaded
* feat: add API for receiving logs from service workers
* feat: add new serviceWorkerContext APIs
* chore: add missing #include's
* refactor: rename serviceWorkerContext to serviceWorkers
* chore: clean up based on review
* chore: remove native_mate
* chore: add tests for the service worker module
* Update spec-main/api-service-workers-spec.ts
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* chore: fix linting
* chore: handle renames
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* docs: add references to app.whenReady() in isReady
* refactor: prefer app.whenReady()
In the docs, specs, and lib, replace instances of `app.once('ready')`
(seen occasionally) and `app.on('ready')` (extremely common) with
`app.whenReady()`.
It's better to encourage users to use whenReady():
1. it handles the edge case of registering for 'ready' after it's fired
2. it avoids the minor wart of leaving an active listener alive for
an event that wll never fire again
* test: clean up some stale code in renderer spec runner
* remove jquery from spec
* remove extraneous close tag
* Revert "remove jquery from spec"
This reverts commit 7b885c8ca807e15bad3b7bf94691eee3c53d0a8d.
* re-clean-up html
* don't highlight tags
* update session docs; clear cache on boot
* clear user-data-dir before running tests
* chore: add code required to use chromes spellchecker
* chore: fix linting
* chore: manifests needs buildflags now
* chore: add dictionarySuggestions to the context menu event when the spellchecker is active
* chore: enable by default for windows builds
* chore: add patch to remove incognito usage in the spellchecker
* chore: add dependencies on spellcheck common and flags
* chore: conditionally include spell check panel impl
* chore: fix deps for spellcheck feature flags
* chore: add patch for electron resources
* chore: add dependency on //components/language/core/browser
* chore: patches to make hunspell work on windows
* build: collect hunspell dictionaries into a zip file and publish
* chore: clean up patches
* chore: add docs and set spell checker url method
* chore: fix error handling
* chore: fix hash logic
* build: update hunspell filename generator
* fix: default spellchecker list to the current system locale if we can
* docs: document the language getter
* chore: patch IDS_ resources for linux builds
* feat: add spellcheck webpref flag to disable the builtin spellchecker
* chore: fix docs typo
* chore: clean up spellchecker impl as per feedback
* remove unneeded deps
* feat: provide the frame URL with permission requests and checks
Also provides a handy isMainFrame property to determine if it is an
iframe making the request
* chore: refactor to use base::Value
* chore: use Set<Type>Key over SetPath
* fix: add parentheses
Add parentheses to the end `app.showAboutPanel`, because this is method.
* fix: change 'Promise<string>' to 'Promise<String>'
Change `Promise<string>` to `Promise<String>`, because this is class name.
* docs: change lower case to upper case
Change lower case in word `menu` to upper case - `Menu`, because it's method.
* [ci skip] refactor: create request context from network context
* [ci skip] refactor: subscribe to mojo cookiemanager for cookie changes
* [ci skip] refactor: manage the lifetime of custom URLRequestJobFactory
* refactor: use OOP mojo proxy resolver
* revert: add support for kIgnoreCertificateErrorsSPKIList
* build: provide service manifest overlays for content services
* chore: gn format
* fix: log-net-log switch not working as expected
* spec: verify proxy settings are respected from pac script with session.setProxy
* chore: use chrome constants where possible
* fix: initialize request context for global cert fetcher
* refactor: fix destruction of request context getters
* spec: use custom session for proxy tests
* fix: queue up additional stop callbacks while net log is being stopped
* fix: Add CHECK for cookie manager retrieval
* chore: add helper to retrieve logging state for net log module
* fix: ui::ResourceBundle::GetRawDataResourceForScale => GetRawDataResource
* style: comment unused parameters
* build: move //components/certificate_transparency deps from //brightray
* chore: update gritsettings_resource_ids patch
* chore: update api for chromium 68
* fix: net log instance is now a property of session
* Fix URLs and Paths in docs/
* Avoiding link break to /docs/development/updgrading-chrome.md
* Fix URLs and Paths in docs/ #2
* Removed double spaces in docs
As far as I'm aware, after using the `ses.resolveProxy` API, it seems to return a string in the shape of `PROXY foopy:80;SOCKS5 bar.com:1080`, not an object. Correct me if I'm wrong.