Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: document supported extensions apis (#22021)
* docs: document supported extensions apis * Update extensions.md * Update README.md * Apply suggestions from code review Co-Authored-By: Mark Lee <malept@users.noreply.github.com> Co-authored-by: Mark Lee <malept@users.noreply.github.com>
- Loading branch information
Showing
3 changed files
with
103 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
# Chrome Extension Support | ||
|
||
Electron supports a subset of the [Chrome Extensions | ||
API][chrome-extensions-api-index], primarily to support DevTools extensions and | ||
Chromium-internal extensions, but it also happens to support some other | ||
extension capabilities. | ||
|
||
[chrome-extensions-api-index]: https://developer.chrome.com/extensions/api_index | ||
|
||
> **Note:** Electron does not support arbitrary Chrome extensions from the | ||
> store, and it is a **non-goal** of the Electron project to be perfectly | ||
> compatible with Chrome's implementation of Extensions. | ||
## Loading extensions | ||
|
||
Electron only supports loading unpacked extensions (i.e., `.crx` files do not | ||
work). Extensions are installed per-`session`. To load an extension, call | ||
[`ses.loadExtension`](session.md#sesloadextensionpath): | ||
|
||
```js | ||
const { session } = require('electron') | ||
|
||
session.loadExtension('path/to/unpacked/extension').then(({ id }) => { | ||
// ... | ||
}) | ||
``` | ||
|
||
Loaded extensions will not be automatically remembered across exits; if you do | ||
not call `loadExtension` when the app runs, the extension will not be loaded. | ||
|
||
See the [`session`](session.md) documentation for more information about | ||
loading, unloading, and querying active extensions. | ||
|
||
## Supported Extensions APIs | ||
|
||
We support the following extensions APIs, with some caveats. Other APIs may | ||
additionally be supported, but support for any APIs not listed here is | ||
provisional and may be removed. | ||
|
||
### `chrome.devtools.inspectedWindow` | ||
|
||
All features of this API are supported. | ||
|
||
### `chrome.devtools.network` | ||
|
||
All features of this API are supported. | ||
|
||
### `chrome.devtools.panels` | ||
|
||
All features of this API are supported. | ||
|
||
### `chrome.extension` | ||
|
||
The following properties of `chrome.extension` are supported: | ||
|
||
- `chrome.extension.lastError` | ||
|
||
The following methods of `chrome.extension` are supported: | ||
|
||
- `chrome.extension.getURL` | ||
- `chrome.extension.getBackgroundPage` | ||
|
||
### `chrome.runtime` | ||
|
||
The following properties of `chrome.runtime` are supported: | ||
|
||
- `chrome.runtime.lastError` | ||
- `chrome.runtime.id` | ||
|
||
The following methods of `chrome.runtime` are supported: | ||
|
||
- `chrome.runtime.getBackgroundPage` | ||
- `chrome.runtime.getManifest` | ||
- `chrome.runtime.getURL` | ||
- `chrome.runtime.connect` | ||
- `chrome.runtime.sendMessage` | ||
|
||
The following events of `chrome.runtime` are supported: | ||
|
||
- `chrome.runtime.onStartup` | ||
- `chrome.runtime.onInstalled` | ||
- `chrome.runtime.onSuspend` | ||
- `chrome.runtime.onSuspendCanceled` | ||
- `chrome.runtime.onConnect` | ||
- `chrome.runtime.onMessage` | ||
|
||
### `chrome.storage` | ||
|
||
Only `chrome.storage.local` is supported; `chrome.storage.sync` and | ||
`chrome.storage.managed` are not. | ||
|
||
### `chrome.tabs` | ||
|
||
The following methods of `chrome.tabs` are supported: | ||
|
||
- `chrome.tabs.sendMessage` | ||
- `chrome.tabs.executeScript` | ||
|
||
> **Note:** In Chrome, passing `-1` as a tab ID signifies the "currently active | ||
> tab". Since Electron has no such concept, passing `-1` as a tab ID is not | ||
> supported and will raise an error. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters