Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sections from TPAC 2023 draft #487

Merged
merged 3 commits into from
Dec 8, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 77 additions & 27 deletions index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,33 @@ Abstract: [Placeholder] Abstract.
Markup Shorthands: markdown yes
</pre>

# File structure
## File structure

Once unpacked from the distribution format, a WebExtension is a directory containing a number of files.

Note: In some operating systems, filenames are case insensitive. This can lead to naming collisions.

## manifest.json
### manifest.json

A <a href="#manifest">Manifest</a> file.

## _locales subdirectory
### _locales subdirectory

An optional directory containing strings as defined in <a href="#localization">localization</a>.

## Other files
### Other files

An extension may also contain other files, such as those referenced in the <a href="#key-content_scripts">content_scripts</a> and <a href="#key-background">background</a> part of the <a href="#manifest">Manifest</a>.

# Manifest
## Manifest

A WebExtension must have a manifest file at its root directory.

## Manifest file
### Manifest file

A manifest file is a [[!JSON]] document named `manifest.json`. Malformed JSON files are not supported.

## Manifest keys
### Manifest keys

If manifest keys that are not defined in this specification are specified, implementors must ignore those keys.

Expand Down Expand Up @@ -68,88 +68,138 @@ The following keys must be considered valid in Manifest V3:
* <a href="#key-host_permissions">`host_permissions`</a>: optional
* <a href="#key-optional_host_permissions">`optional_host_permissions`</a>: optional

### Key `manifest_version`
#### Key `manifest_version`

This key must be present.

### Key `name`
#### Key `name`

Name of the extension used in the browser’s user interface. This should be the full name used to identify the extension. See also <a href="#key-short_name">`short_name`</a>.

This key must be present. This property can be localized.

### Key `version`
#### Key `version`

This key must be present.

### Key `permissions`
#### Key `permissions`

This key may be present.

### Key `optional_permissions`
#### Key `optional_permissions`

This key may be present.

### Key `host_permissions`
#### Key `host_permissions`

This key may be present.

### Key `optional_host_permissions`
#### Key `optional_host_permissions`

This key may be present.

### Key `default_locale`
#### Key `default_locale`

This key must be present if the `_locales` subdirectory is present, must be absent otherwise.

### Key `background`
#### Key `background`

This key may be present.

### Key `commands`
#### Key `commands`

This key may be present.

### Key `content_scripts`
#### Key `content_scripts`

This key may be present.

### Key `content_security_policy`
#### Key `content_security_policy`

This key may be present.

### Key `description`
#### Key `description`

This key may be present.

### Key `icons`
#### Key `icons`

This key may be present.

### Key `options_ui`
#### Key `options_ui`

This key may be present.

### Key `short_name`
#### Key `short_name`

The short name of the extension. This value should be used in contexts where <a href="#key-name">`name`</a> is too long to use in full. If `short_name` is not provided, manifest consumers should use a truncated version of `name`.

This key may be present. This property can be localized.

### Key `web_accessible_resources`
#### Key `web_accessible_resources`

This key may be present.

### Key `externally_connectable`
#### Key `externally_connectable`

This key may be present.

### Key `devtools_page`
#### Key `devtools_page`

This key may be present.

# Localization
### Reserved file names

Filenames beginning with an underscore (`_`) are reserved for use by user agent.

## Isolated worlds

## Unavailable APIs

## The `browser` global

## Extension origin

## Localization

The _locales subdirectory of a WebExtension can contain strings for internationalization purposes.

Issue(62): Specify localization handling.

## Host permissions

### Cross-origin fetch

## Match patterns

## Concepts

### Uniqueness of extnsion IDs
dotproto marked this conversation as resolved.
Show resolved Hide resolved

### Promises & callbacks
dotproto marked this conversation as resolved.
Show resolved Hide resolved

### User gestures and activeTab

### Extension permissions and web perissions

## Content security policy

## Architecture

### Background content

### Content scripts

#### Isolated worlds

### Extension pages

## Classes of security risk

## Web accessible resources

## Interaction with the web

### Current behavior of cookie partitioning

## Version number handling
Loading