Bug 2058821 - doc: apply the markdownlint fixes over the tree r=firefox-source-docs-reviewers,ipc-reviewers,devtools-reviewers,releng-reviewers,android-reviewers,bhearsum,nchevobbe,ahal,tcampbell DONTBUILD
Mostly mechanical: `markdownlint-cli2 --fix` over the directories the md
linter covers (blank lines around fences and lists, list indentation, bare
URLs wrapped in angle brackets, stray spaces inside code spans).
A few spots needed to be fixed by hand because they were malformed in the
first place: reference links left dangling by the RST conversion in
ipc/docs/ipdl.md and devtools/docs/user/debugger-api/index.md, an `{image}`
directive whose options had escaped the fence in
docs/contributing/debugging/capturing_minidump.md, and text where a literal
asterisk or underscore was being parsed as emphasis.
Differential Revision: https://phabricator.services.mozilla.com/D315001
This commit is contained in:
committed by
sledru@mozilla.com
parent
b14ad10e3f
commit
e173c24599
@@ -37,7 +37,7 @@ this service at:
|
||||
* [Source for nsIPrefBranch](https://searchfox.org/firefox-main/source/modules/libpref/nsIPrefBranch.idl)
|
||||
* [Source for nsIPrefService](https://searchfox.org/firefox-main/source/modules/libpref/nsIPrefService.idl)
|
||||
|
||||
### Services.pref.get* and Services.pref.set*
|
||||
### `Services.pref.get*` and `Services.pref.set*`
|
||||
|
||||
The main APIs you will have to know and use are getters and setters.
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ Here are some things you can try out yourself that show off some of `Debugger`
|
||||
|
||||
While the `Debugger` core API deals only with concepts common to any JavaScript implementation, it also includes some Gecko-specific features:
|
||||
|
||||
- [Global tracking][global] supports debugging all the code running in a Gecko instance at once—the ‘chrome debugging’ model.
|
||||
- [Object wrapper][wrapper] functions help manipulate object references that cross privilege boundaries.
|
||||
- {doc}`Global tracking <debugger/index>` supports debugging all the code running in a Gecko instance at once—the ‘chrome debugging’ model.
|
||||
- {doc}`Object wrapper <debugger.object/index>` functions help manipulate object references that cross privilege boundaries.
|
||||
|
||||
### Source Metadata
|
||||
|
||||
|
||||
@@ -96,12 +96,12 @@ Truncate DOM attributes
|
||||
Default color unit
|
||||
: A setting to control how colors are represented in the inspector:
|
||||
|
||||
- Hex
|
||||
- HSL(A)
|
||||
- RGB(A)
|
||||
- HWB
|
||||
- color name
|
||||
- As authored.
|
||||
- Hex
|
||||
- HSL(A)
|
||||
- RGB(A)
|
||||
- HWB
|
||||
- color name
|
||||
- As authored.
|
||||
|
||||
Enable layout panel
|
||||
: Enable the experimental layout panel. This setting only exists in Firefox Nightly.
|
||||
@@ -168,9 +168,9 @@ Tab size
|
||||
Keybindings
|
||||
: Choose the default CodeMirror keybindings or keybindings from one of several popular editors:
|
||||
|
||||
- Vim
|
||||
- Emacs
|
||||
- Sublime Text
|
||||
- Vim
|
||||
- Emacs
|
||||
- Sublime Text
|
||||
|
||||
(settings-advanced-settings)=
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ monitoring, console logs, user input simulation, and Firefox logging. It isn't
|
||||
complete yet, but can already be useful.
|
||||
|
||||
This documentation refers to the official Mozilla MCP for
|
||||
Firefox development: https://github.com/mozilla/firefox-devtools-mcp
|
||||
Firefox development: <https://github.com/mozilla/firefox-devtools-mcp>
|
||||
|
||||
### Key Features
|
||||
|
||||
|
||||
@@ -150,6 +150,7 @@ will be removed from our queue until you post a comment with the requested
|
||||
information, and re-add the group.**
|
||||
|
||||
Here's what you'll see:
|
||||
|
||||
```markdown
|
||||
You've tagged the accessibility team for review. If you've already spoken
|
||||
to a team member about your request, please request review from the
|
||||
|
||||
@@ -26,7 +26,7 @@ developer friction when landing security patches.
|
||||
|
||||
## Process for Security Bugs (Developer Perspective)
|
||||
|
||||
One type of security bug is a straightforward vulnerability. A
|
||||
One type of security bug is a straightforward vulnerability. A
|
||||
second type is a more casual analysis of a code pattern, an architecture
|
||||
limitation, or a general observation about bug patterns.
|
||||
|
||||
@@ -47,10 +47,10 @@ especially when commenting in bugs with external reporters.
|
||||
- Try not to discuss problematic code patterns or architecture limitations
|
||||
in bugs filed by external reporters, or in situations where fixing the
|
||||
undesirable behavior is likely to be a project that does not complete
|
||||
within half a year or more. Instead, file a second bug tagged
|
||||
within half a year or more. Instead, file a second bug tagged
|
||||
`sec-audit` (for identifying patterns and addressing them) or `sec-want`
|
||||
(for developing more comprehensive checks or fixing a design), and move
|
||||
that discussion there. AI is very good at taking patterns and
|
||||
that discussion there. AI is very good at taking patterns and
|
||||
descriptions and finding new bugs based on them.
|
||||
|
||||
### Developing the Patch
|
||||
@@ -83,7 +83,7 @@ for more details.
|
||||
### On Requesting sec-approval
|
||||
|
||||
Previously, sec-approval was required for all `sec-high` rated security
|
||||
bugs in most circumstances. This is now inverted.
|
||||
bugs in most circumstances. This is now inverted.
|
||||
|
||||
**sec-approval is only required for bugs that represent a vulnerability
|
||||
in the parent process, triggerable from a content process**.
|
||||
@@ -91,29 +91,29 @@ in the parent process, triggerable from a content process**.
|
||||
This is typically constrained to bugs with the keywords `sec-high` and
|
||||
`csectype-sandbox-escape`.
|
||||
|
||||
- If a bug does not have a security rating, you are invited to give it
|
||||
one, following the [Client Severity Guidelines](https://wiki.mozilla.org/Security_Severity_Ratings/Client)
|
||||
- If a bug is a cross-process bug that does not affect the Parent
|
||||
Process, the correct keyword is `csectype-priv-escalation`. In the
|
||||
past, these were given `csectype-sandbox-escape` but this is no longer
|
||||
correct, and you are invited to fix the keywords if you encounter them
|
||||
used incorrectly.
|
||||
- If a bug does not have a security rating, you are invited to give it
|
||||
one, following the [Client Severity Guidelines](https://wiki.mozilla.org/Security_Severity_Ratings/Client)
|
||||
- If a bug is a cross-process bug that does not affect the Parent
|
||||
Process, the correct keyword is `csectype-priv-escalation`. In the
|
||||
past, these were given `csectype-sandbox-escape` but this is no longer
|
||||
correct, and you are invited to fix the keywords if you encounter them
|
||||
used incorrectly.
|
||||
|
||||
For the avoidance of doubt, core-security bug fixes can be landed by
|
||||
a developer without any explicit approval if:
|
||||
|
||||
- The bug has a sec-low, sec-moderate, sec-other, or sec-want rating.
|
||||
- The bug has a sec-high rating, but only affects the content process
|
||||
- The bug has a sec-high rating, but only affects some other, non-Parent process
|
||||
- The bug has a sec-high rating, is a cross-process bug, but that target process
|
||||
is the GPU, RDD, GMP, Utility, Socket, or other non-Parent process
|
||||
- The bug _is_ a parent process bug _but_ it is a recent regression on
|
||||
mozilla-central. Meaning:
|
||||
- A specific regressing check-in has been identified
|
||||
- The developer can (**and has**) marked the status flags for ESR and
|
||||
Beta as "unaffected"
|
||||
- We have not shipped this vulnerability in anything other than a
|
||||
nightly build
|
||||
- The bug has a sec-low, sec-moderate, sec-other, or sec-want rating.
|
||||
- The bug has a sec-high rating, but only affects the content process
|
||||
- The bug has a sec-high rating, but only affects some other, non-Parent process
|
||||
- The bug has a sec-high rating, is a cross-process bug, but that target process
|
||||
is the GPU, RDD, GMP, Utility, Socket, or other non-Parent process
|
||||
- The bug _is_ a parent process bug _but_ it is a recent regression on
|
||||
mozilla-central. Meaning:
|
||||
- A specific regressing check-in has been identified
|
||||
- The developer can (**and has**) marked the status flags for ESR and
|
||||
Beta as "unaffected"
|
||||
- We have not shipped this vulnerability in anything other than a
|
||||
nightly build
|
||||
|
||||
If it meets any of the above criteria, developers do not need to ask for
|
||||
sec-approval.
|
||||
|
||||
@@ -64,9 +64,8 @@ line tool, please follow [Capture a minidump from the command line](#capture-a-m
|
||||
icons are registered under "Windows Kits" as below.
|
||||
|
||||
```{image} img/windbg-in-startmenu.png
|
||||
:width: 50%
|
||||
|
||||
```
|
||||
:width: 50%
|
||||
```
|
||||
|
||||
2. Connect Firefox to the debugger.
|
||||
|
||||
|
||||
+1
-1
@@ -145,7 +145,7 @@ tear down any dependencies you have in your test fixtures. Avoid
|
||||
writing integration tests and focus on testing individual units.
|
||||
:::
|
||||
|
||||
See https://hg.mozilla.org/mozilla-central/rev/ed612eec41a44867a for an
|
||||
See <https://hg.mozilla.org/mozilla-central/rev/ed612eec41a44867a> for an
|
||||
example of how to add a simple test.
|
||||
|
||||
If you're converting an existing C++ unit test to a GTest, [this
|
||||
|
||||
@@ -589,7 +589,6 @@ If you've ever used the subscript loader, you might not know that it can
|
||||
load scripts asynchronously, and return a Promise once they're loaded.
|
||||
For example:
|
||||
|
||||
|
||||
Services.scriptloader.loadSubScriptWithOptions(myScriptURL, { async: true }).then(() => {
|
||||
console.log("Script at " + myScriptURL + " loaded asynchronously!");
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@ sudo dtrace -n 'mach_kernel::wakeup { @[ustack()] = count(); }' -p $FIREFOX_PID
|
||||
|
||||
Let's break that down further.
|
||||
|
||||
- The` -n` option combined with the `mach_kernel::wakeup` selects a
|
||||
- The `-n` option combined with the `mach_kernel::wakeup` selects a
|
||||
*probe point*. `mach_kernel` is the *module name* and `wakeup` is
|
||||
the *probe name*. You can see a complete list of probes by running
|
||||
`sudo dtrace -l`.
|
||||
|
||||
@@ -174,7 +174,7 @@ contains a strong reference to the EventListenerManager
|
||||
`0x7f0899b4e550`. "[via hash] mListenerManager" is a description of
|
||||
that strong reference. Together, these lines show a chain of strong
|
||||
references from an object the cycle collector thinks needs to be kept
|
||||
alive, `0x7f0899b4e550`, to the object` 0x7f0897082c00` that you asked
|
||||
alive, `0x7f0899b4e550`, to the object `0x7f0897082c00` that you asked
|
||||
about. Most of the time, the actual chain is not important, because the
|
||||
cycle collector can only tell us about what went right. Let us call the
|
||||
address of the leaking object (`0x7f0882fe3230` in this case)
|
||||
|
||||
@@ -21,7 +21,7 @@ Version
|
||||
7.1)](http://www.microsoft.com/downloads/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en "http://www.microsoft.com/downloads/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en"){.external}.
|
||||
Use the web installer to install at least the \"Win32 Development
|
||||
Tools\". Once the SDK installs, execute either `wpt_x86.msi` or
|
||||
`wpt_x64.msi` in the `Redist/Windows Performance Toolkit `folder of the
|
||||
`wpt_x64.msi` in the `Redist/Windows Performance Toolkit` folder of the
|
||||
SDK's install location (typically Program Files/Microsoft
|
||||
SDKs/Windows/v7.1/Redist/Windows Performance Toolkit) to actually
|
||||
install the Windows Performance Toolkit tools.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# RustAdsClient.sys.mjs
|
||||
|
||||
```{js:autoclass} RustAdsClient.sys.Other
|
||||
:members:
|
||||
:exclude-members: Other
|
||||
|
||||
@@ -1,99 +1,125 @@
|
||||
# RustAutofill.sys.mjs
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.Address
|
||||
:members:
|
||||
:exclude-members: Address
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.AddressBulkResultEntry
|
||||
:members:
|
||||
:exclude-members: AddressBulkResultEntry
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.AddressBulkTombstoneResultEntry
|
||||
:members:
|
||||
:exclude-members: AddressBulkTombstoneResultEntry
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.AddressMeta
|
||||
:members:
|
||||
:exclude-members: AddressMeta
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.AddressTombstone
|
||||
:members:
|
||||
:exclude-members: AddressTombstone
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.AddressesBridgedEngine
|
||||
:members:
|
||||
:exclude-members: AddressesBridgedEngine
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CreditCard
|
||||
:members:
|
||||
:exclude-members: CreditCard
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CreditCardBulkResultEntry
|
||||
:members:
|
||||
:exclude-members: CreditCardBulkResultEntry
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CreditCardBulkTombstoneResultEntry
|
||||
:members:
|
||||
:exclude-members: CreditCardBulkTombstoneResultEntry
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CreditCardMeta
|
||||
:members:
|
||||
:exclude-members: CreditCardMeta
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CreditCardTombstone
|
||||
:members:
|
||||
:exclude-members: CreditCardTombstone
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CreditCardsDeletionMetrics
|
||||
:members:
|
||||
:exclude-members: CreditCardsDeletionMetrics
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.CryptoError
|
||||
:members:
|
||||
:exclude-members: CryptoError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.InterruptedError
|
||||
:members:
|
||||
:exclude-members: InterruptedError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.NoSuchRecord
|
||||
:members:
|
||||
:exclude-members: NoSuchRecord
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.Passport
|
||||
:members:
|
||||
:exclude-members: Passport
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.SqlError
|
||||
:members:
|
||||
:exclude-members: SqlError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.UnexpectedAutofillApiError
|
||||
:members:
|
||||
:exclude-members: UnexpectedAutofillApiError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.UpdatableAddressFields
|
||||
:members:
|
||||
:exclude-members: UpdatableAddressFields
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.UpdatableAddressFieldsWithMeta
|
||||
:members:
|
||||
:exclude-members: UpdatableAddressFieldsWithMeta
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.UpdatableCreditCardFields
|
||||
:members:
|
||||
:exclude-members: UpdatableCreditCardFields
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.UpdatableCreditCardFieldsWithMeta
|
||||
:members:
|
||||
:exclude-members: UpdatableCreditCardFieldsWithMeta
|
||||
```
|
||||
|
||||
```{js:autoclass} RustAutofill.sys.UpdatablePassportFields
|
||||
:members:
|
||||
:exclude-members: UpdatablePassportFields
|
||||
```
|
||||
|
||||
```{js:autofunction} RustAutofill.sys.createAutofillKey
|
||||
```
|
||||
|
||||
```{js:autofunction} RustAutofill.sys.decryptString
|
||||
```
|
||||
|
||||
```{js:autofunction} RustAutofill.sys.encryptString
|
||||
```
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
# RustBreachAlerts.sys.mjs
|
||||
|
||||
```{js:autoclass} RustBreachAlerts.sys.BreachAlertsApiError
|
||||
:members:
|
||||
:exclude-members: BreachAlertsApiError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustBreachAlerts.sys.BreachAlertsStore
|
||||
:members:
|
||||
:exclude-members: BreachAlertsStore
|
||||
```
|
||||
|
||||
```{js:autoclass} RustBreachAlerts.sys.Unexpected
|
||||
:members:
|
||||
:exclude-members: Unexpected
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# RustContextId.sys.mjs
|
||||
|
||||
```{js:autoclass} RustContextId.sys.ContextIdComponent
|
||||
:members:
|
||||
:exclude-members: ContextIdComponent
|
||||
```
|
||||
|
||||
```{js:autoclass} RustContextId.sys.Other
|
||||
:members:
|
||||
:exclude-members: Other
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# RustFilterAdult.sys.mjs
|
||||
|
||||
```{js:autoclass} RustFilterAdult.sys.ApiError
|
||||
:members:
|
||||
:exclude-members: ApiError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustFilterAdult.sys.Other
|
||||
:members:
|
||||
:exclude-members: Other
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# RustInitRustComponents.sys.mjs
|
||||
|
||||
```{js:autofunction} RustInitRustComponents.sys.initialize
|
||||
```
|
||||
|
||||
@@ -1,107 +1,137 @@
|
||||
# RustLogins.sys.mjs
|
||||
|
||||
```{js:autoclass} RustLogins.sys.AuthenticationCanceled
|
||||
:members:
|
||||
:exclude-members: AuthenticationCanceled
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.AuthenticationError
|
||||
:members:
|
||||
:exclude-members: AuthenticationError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.BulkResultEntry
|
||||
:members:
|
||||
:exclude-members: BulkResultEntry
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.DecryptionFailed
|
||||
:members:
|
||||
:exclude-members: DecryptionFailed
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.EncryptionFailed
|
||||
:members:
|
||||
:exclude-members: EncryptionFailed
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.Interrupted
|
||||
:members:
|
||||
:exclude-members: Interrupted
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.InvalidKey
|
||||
:members:
|
||||
:exclude-members: InvalidKey
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.InvalidRecord
|
||||
:members:
|
||||
:exclude-members: InvalidRecord
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.Login
|
||||
:members:
|
||||
:exclude-members: Login
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginCandidate
|
||||
:members:
|
||||
:exclude-members: LoginCandidate
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginEntry
|
||||
:members:
|
||||
:exclude-members: LoginEntry
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginEntryWithMeta
|
||||
:members:
|
||||
:exclude-members: LoginEntryWithMeta
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginMeta
|
||||
:members:
|
||||
:exclude-members: LoginMeta
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginsApiError
|
||||
:members:
|
||||
:exclude-members: LoginsApiError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginsBridgedEngine
|
||||
:members:
|
||||
:exclude-members: LoginsBridgedEngine
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.LoginsDeletionMetrics
|
||||
:members:
|
||||
:exclude-members: LoginsDeletionMetrics
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.MissingKey
|
||||
:members:
|
||||
:exclude-members: MissingKey
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.NoSuchRecord
|
||||
:members:
|
||||
:exclude-members: NoSuchRecord
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.NssAuthenticationError
|
||||
:members:
|
||||
:exclude-members: NssAuthenticationError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.NssKeyManager
|
||||
:members:
|
||||
:exclude-members: NssKeyManager
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.NssUninitialized
|
||||
:members:
|
||||
:exclude-members: NssUninitialized
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.PrimaryPasswordAuthenticator
|
||||
:members:
|
||||
:exclude-members: PrimaryPasswordAuthenticator
|
||||
```
|
||||
|
||||
```{js:autoclass} RustLogins.sys.UnexpectedLoginsApiError
|
||||
:members:
|
||||
:exclude-members: UnexpectedLoginsApiError
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.checkCanary
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.createCanary
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.createKey
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.createLoginStoreWithNssKeymanager
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.createLoginStoreWithStaticKeyManager
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.createManagedEncdec
|
||||
```
|
||||
|
||||
```{js:autofunction} RustLogins.sys.createStaticKeyManager
|
||||
```
|
||||
|
||||
@@ -1,23 +1,29 @@
|
||||
# RustRelevancy.sys.mjs
|
||||
|
||||
```{js:autoclass} RustRelevancy.sys.Interest
|
||||
:members:
|
||||
:exclude-members: Interest
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRelevancy.sys.InterestMetrics
|
||||
:members:
|
||||
:exclude-members: InterestMetrics
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRelevancy.sys.InterestVector
|
||||
:members:
|
||||
:exclude-members: InterestVector
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRelevancy.sys.RelevancyApiError
|
||||
:members:
|
||||
:exclude-members: RelevancyApiError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRelevancy.sys.Unexpected
|
||||
:members:
|
||||
:exclude-members: Unexpected
|
||||
```
|
||||
|
||||
```{js:autofunction} RustRelevancy.sys.score
|
||||
```
|
||||
|
||||
@@ -1,48 +1,60 @@
|
||||
# RustRemoteSettings.sys.mjs
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.Attachment
|
||||
:members:
|
||||
:exclude-members: Attachment
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.Backoff
|
||||
:members:
|
||||
:exclude-members: Backoff
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.Network
|
||||
:members:
|
||||
:exclude-members: Network
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.Other
|
||||
:members:
|
||||
:exclude-members: Other
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsClient
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsClient
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsConfig
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsConfig
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsContext
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsContext
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsError
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsRecord
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsRecord
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsServer
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsServer
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.RemoteSettingsService
|
||||
:members:
|
||||
:exclude-members: RemoteSettingsService
|
||||
```
|
||||
|
||||
```{js:autoclass} RustRemoteSettings.sys.SyncStatus
|
||||
:members:
|
||||
:exclude-members: SyncStatus
|
||||
|
||||
@@ -1,56 +1,70 @@
|
||||
# RustSearch.sys.mjs
|
||||
|
||||
```{js:autoclass} RustSearch.sys.JsonEngineMethod
|
||||
:members:
|
||||
:exclude-members: JsonEngineMethod
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.JsonEngineUrl
|
||||
:members:
|
||||
:exclude-members: JsonEngineUrl
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.JsonEngineUrls
|
||||
:members:
|
||||
:exclude-members: JsonEngineUrls
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.Other
|
||||
:members:
|
||||
:exclude-members: Other
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.RefinedSearchConfig
|
||||
:members:
|
||||
:exclude-members: RefinedSearchConfig
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchApplicationName
|
||||
:members:
|
||||
:exclude-members: SearchApplicationName
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchEngineClassification
|
||||
:members:
|
||||
:exclude-members: SearchEngineClassification
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchEngineDefinition
|
||||
:members:
|
||||
:exclude-members: SearchEngineDefinition
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchEngineSelector
|
||||
:members:
|
||||
:exclude-members: SearchEngineSelector
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchEngineUrl
|
||||
:members:
|
||||
:exclude-members: SearchEngineUrl
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchEngineUrls
|
||||
:members:
|
||||
:exclude-members: SearchEngineUrls
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchUpdateChannel
|
||||
:members:
|
||||
:exclude-members: SearchUpdateChannel
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchUrlParam
|
||||
:members:
|
||||
:exclude-members: SearchUrlParam
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSearch.sys.SearchUserEnvironment
|
||||
:members:
|
||||
:exclude-members: SearchUserEnvironment
|
||||
|
||||
@@ -1,99 +1,124 @@
|
||||
# RustSuggest.sys.mjs
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.AlternateNames
|
||||
:members:
|
||||
:exclude-members: AlternateNames
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.Backoff
|
||||
:members:
|
||||
:exclude-members: Backoff
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.FtsMatchInfo
|
||||
:members:
|
||||
:exclude-members: FtsMatchInfo
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.Geoname
|
||||
:members:
|
||||
:exclude-members: Geoname
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.GeonameAlternates
|
||||
:members:
|
||||
:exclude-members: GeonameAlternates
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.GeonameMatch
|
||||
:members:
|
||||
:exclude-members: GeonameMatch
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.GeonameType
|
||||
:members:
|
||||
:exclude-members: GeonameType
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.InterruptKind
|
||||
:members:
|
||||
:exclude-members: InterruptKind
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.Interrupted
|
||||
:members:
|
||||
:exclude-members: Interrupted
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.LabeledTimingSample
|
||||
:members:
|
||||
:exclude-members: LabeledTimingSample
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.Network
|
||||
:members:
|
||||
:exclude-members: Network
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.Other
|
||||
:members:
|
||||
:exclude-members: Other
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestApiError
|
||||
:members:
|
||||
:exclude-members: SuggestApiError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestGlobalConfig
|
||||
:members:
|
||||
:exclude-members: SuggestGlobalConfig
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestIngestionConstraints
|
||||
:members:
|
||||
:exclude-members: SuggestIngestionConstraints
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestIngestionMetrics
|
||||
:members:
|
||||
:exclude-members: SuggestIngestionMetrics
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestProviderConfig
|
||||
:members:
|
||||
:exclude-members: SuggestProviderConfig
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestStore
|
||||
:members:
|
||||
:exclude-members: SuggestStore
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestStoreBuilder
|
||||
:members:
|
||||
:exclude-members: SuggestStoreBuilder
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.Suggestion
|
||||
:members:
|
||||
:exclude-members: Suggestion
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestionProvider
|
||||
:members:
|
||||
:exclude-members: SuggestionProvider
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestionProviderConstraints
|
||||
:members:
|
||||
:exclude-members: SuggestionProviderConstraints
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.SuggestionQuery
|
||||
:members:
|
||||
:exclude-members: SuggestionQuery
|
||||
```
|
||||
|
||||
```{js:autoclass} RustSuggest.sys.YelpSubjectType
|
||||
:members:
|
||||
:exclude-members: YelpSubjectType
|
||||
```
|
||||
|
||||
```{js:autofunction} RustSuggest.sys.rawSuggestionUrlMatches
|
||||
```
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# RustSync15.sys.mjs
|
||||
|
||||
```{js:autoclass} RustSync15.sys.DeviceType
|
||||
:members:
|
||||
:exclude-members: DeviceType
|
||||
|
||||
@@ -1,28 +1,35 @@
|
||||
# RustTabs.sys.mjs
|
||||
|
||||
```{js:autoclass} RustTabs.sys.PendingCommand
|
||||
:members:
|
||||
:exclude-members: PendingCommand
|
||||
```
|
||||
|
||||
```{js:autoclass} RustTabs.sys.RemoteCommand
|
||||
:members:
|
||||
:exclude-members: RemoteCommand
|
||||
```
|
||||
|
||||
```{js:autoclass} RustTabs.sys.SqlError
|
||||
:members:
|
||||
:exclude-members: SqlError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustTabs.sys.SyncError
|
||||
:members:
|
||||
:exclude-members: SyncError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustTabs.sys.TabGroup
|
||||
:members:
|
||||
:exclude-members: TabGroup
|
||||
```
|
||||
|
||||
```{js:autoclass} RustTabs.sys.TabsBridgedEngine
|
||||
:members:
|
||||
:exclude-members: TabsBridgedEngine
|
||||
```
|
||||
|
||||
```{js:autoclass} RustTabs.sys.UnexpectedTabsError
|
||||
:members:
|
||||
:exclude-members: UnexpectedTabsError
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
# RustTracing.sys.mjs
|
||||
|
||||
```{js:autoclass} RustTracing.sys.EventSinkSpecification
|
||||
:members:
|
||||
:exclude-members: EventSinkSpecification
|
||||
```
|
||||
|
||||
```{js:autofunction} RustTracing.sys.registerEventSink
|
||||
```
|
||||
|
||||
```{js:autofunction} RustTracing.sys.unregisterEventSink
|
||||
```
|
||||
|
||||
@@ -1,81 +1,105 @@
|
||||
# RustViaduct.sys.mjs
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.BackendAlreadyInitialized
|
||||
:members:
|
||||
:exclude-members: BackendAlreadyInitialized
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.BackendError
|
||||
:members:
|
||||
:exclude-members: BackendError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.BackendNotInitialized
|
||||
:members:
|
||||
:exclude-members: BackendNotInitialized
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.Method
|
||||
:members:
|
||||
:exclude-members: Method
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.NetworkError
|
||||
:members:
|
||||
:exclude-members: NetworkError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.NonTlsUrl
|
||||
:members:
|
||||
:exclude-members: NonTlsUrl
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.OhttpChannelNotConfigured
|
||||
:members:
|
||||
:exclude-members: OhttpChannelNotConfigured
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.OhttpConfig
|
||||
:members:
|
||||
:exclude-members: OhttpConfig
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.OhttpConfigFetchFailed
|
||||
:members:
|
||||
:exclude-members: OhttpConfigFetchFailed
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.OhttpNotSupported
|
||||
:members:
|
||||
:exclude-members: OhttpNotSupported
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.OhttpRequestError
|
||||
:members:
|
||||
:exclude-members: OhttpRequestError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.OhttpResponseError
|
||||
:members:
|
||||
:exclude-members: OhttpResponseError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.RequestHeaderError
|
||||
:members:
|
||||
:exclude-members: RequestHeaderError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.Response
|
||||
:members:
|
||||
:exclude-members: Response
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.SetBackendError
|
||||
:members:
|
||||
:exclude-members: SetBackendError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustViaduct.sys.UrlError
|
||||
:members:
|
||||
:exclude-members: UrlError
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.allowAndroidEmulatorLoopback
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.clearOhttpChannels
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.configureDefaultOhttpChannels
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.configureOhttpChannel
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.initBackend
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.listOhttpChannels
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.sendOhttpRequest
|
||||
```
|
||||
|
||||
```{js:autofunction} RustViaduct.sys.setGlobalDefaultUserAgent
|
||||
```
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
# RustWebextstorage.sys.mjs
|
||||
|
||||
```{js:autoclass} RustWebextstorage.sys.JsonError
|
||||
:members:
|
||||
:exclude-members: JsonError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustWebextstorage.sys.QuotaError
|
||||
:members:
|
||||
:exclude-members: QuotaError
|
||||
```
|
||||
|
||||
```{js:autoclass} RustWebextstorage.sys.UnexpectedError
|
||||
:members:
|
||||
:exclude-members: UnexpectedError
|
||||
|
||||
@@ -36,7 +36,6 @@ Teams that write shared Rust components are responsible for maintaining their he
|
||||
This includes monitoring error reports and working with application teams to maintain integrations as the application code changes.
|
||||
Error reports are currently only available for Android, but we will soon be extending this to all platforms.
|
||||
|
||||
|
||||
```{toctree}
|
||||
:titlesonly:
|
||||
:maxdepth: 1
|
||||
|
||||
@@ -26,8 +26,8 @@ Keep a few things in mind before you create a new set of bindings:
|
||||
If any of these are blockers for your work, consider discussing it further with the UniFFI devs to see if we can support
|
||||
your project:
|
||||
|
||||
- Chat with us on `#uniffi` on Matrix/Element
|
||||
- File an issue on [mozilla/uniffi](https://github.com/mozilla/uniffi-rs/)
|
||||
- Chat with us on `#uniffi` on Matrix/Element
|
||||
- File an issue on [mozilla/uniffi](https://github.com/mozilla/uniffi-rs/)
|
||||
|
||||
## Creating new bindings with UniFFI
|
||||
|
||||
@@ -35,32 +35,32 @@ You can see an example of this feature in use: [when application-services swappe
|
||||
|
||||
Here's how you can create a new set of bindings using UniFFI:
|
||||
|
||||
1. UniFFI your crate (if it isn't already):
|
||||
- Follow the steps from the [UniFFI user guide](https://mozilla.github.io/uniffi-rs/0.27/) to add support to your crate.
|
||||
- UDL and proc-macros are both supported.
|
||||
2. Add your crate as a Firefox dependency (if it isn't already)
|
||||
- **If the code will exist in the mozilla-central repo:**
|
||||
- Create a new directory for the Rust crate
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/components/Cargo.toml` and add a dependency to your library path
|
||||
- **If the code exists in an external repo:**
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/components/Cargo.toml` and add a dependency to your library URL
|
||||
- Run `mach vendor rust` to vendor in your Rust code
|
||||
3. Configure your crate (optional)
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/config.toml` and add an entry for your crate.
|
||||
4. Add scaffolding for your crate
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/components/lib.rs` and add an entry for the uniffi scaffolding for your crate.
|
||||
5. Generate bindings code for your crate
|
||||
- Run `./mach uniffi generate`
|
||||
- add your newly generated `Rust{udl-name}.sys.mjs` file to `toolkit/components/uniffi-bindgen-gecko-js/components/moz.build`
|
||||
- Then simply import your module to the file you want to use it in and start using your APIs!
|
||||
1. UniFFI your crate (if it isn't already):
|
||||
- Follow the steps from the [UniFFI user guide](https://mozilla.github.io/uniffi-rs/0.27/) to add support to your crate.
|
||||
- UDL and proc-macros are both supported.
|
||||
2. Add your crate as a Firefox dependency (if it isn't already)
|
||||
- **If the code will exist in the mozilla-central repo:**
|
||||
- Create a new directory for the Rust crate
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/components/Cargo.toml` and add a dependency to your library path
|
||||
- **If the code exists in an external repo:**
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/components/Cargo.toml` and add a dependency to your library URL
|
||||
- Run `mach vendor rust` to vendor in your Rust code
|
||||
3. Configure your crate (optional)
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/config.toml` and add an entry for your crate.
|
||||
4. Add scaffolding for your crate
|
||||
- Edit `toolkit/components/uniffi-bindgen-gecko-js/components/lib.rs` and add an entry for the uniffi scaffolding for your crate.
|
||||
5. Generate bindings code for your crate
|
||||
- Run `./mach uniffi generate`
|
||||
- add your newly generated `Rust{udl-name}.sys.mjs` file to `toolkit/components/uniffi-bindgen-gecko-js/components/moz.build`
|
||||
- Then simply import your module to the file you want to use it in and start using your APIs!
|
||||
|
||||
Example from tabs module:
|
||||
Example from tabs module:
|
||||
|
||||
``` js
|
||||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
...
|
||||
TabsStore: "moz-src:///toolkit/components/uniffi-bindgen-gecko-js/components/generated/RustTabs.sys.mjs",
|
||||
});
|
||||
...
|
||||
this._rustStore = await lazy.TabsStore.init(path);
|
||||
```
|
||||
``` js
|
||||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
...
|
||||
TabsStore: "moz-src:///toolkit/components/uniffi-bindgen-gecko-js/components/generated/RustTabs.sys.mjs",
|
||||
});
|
||||
...
|
||||
this._rustStore = await lazy.TabsStore.init(path);
|
||||
```
|
||||
|
||||
@@ -269,12 +269,14 @@ if (!iter.Seek(childNode)) {
|
||||
```
|
||||
|
||||
Then, you can iterate the remaining children:
|
||||
|
||||
```cpp
|
||||
for (nsIContent* sibling = iter.GetNextChild(); sibling;
|
||||
sibling = iter.GetNextChild()) {
|
||||
// Do something with sibling.
|
||||
}
|
||||
```
|
||||
|
||||
```cpp
|
||||
for (nsIContent* sibling = iter.GetPreviousChild(); sibling;
|
||||
sibling = iter.GetPreviousChild()) {
|
||||
|
||||
+11
-11
@@ -378,11 +378,11 @@ e.g. steps 6 and 8 involve IPC, not just "stack unwinding").
|
||||
1. 1. If the input events landed outside a dispatch-to-content region,
|
||||
any available events in the input block are processed. These may
|
||||
trigger behaviours like scrolling or tap gestures.
|
||||
1. If the input events landed inside a dispatch-to-content region,
|
||||
the events are left in the queue and a timeout is initiated. If
|
||||
the timeout expires before step 9 is completed, the APZ assumes
|
||||
the input block was not cancelled and the tentative target is
|
||||
correct, and processes them as part of step 10.
|
||||
1. If the input events landed inside a dispatch-to-content region,
|
||||
the events are left in the queue and a timeout is initiated. If
|
||||
the timeout expires before step 9 is completed, the APZ assumes
|
||||
the input block was not cancelled and the tentative target is
|
||||
correct, and processes them as part of step 10.
|
||||
4. The call stack unwinds back to APZCTreeManager::ReceiveInputEvent,
|
||||
which does an in-place modification of the input event so that any
|
||||
async transforms are removed.
|
||||
@@ -407,12 +407,12 @@ e.g. steps 6 and 8 involve IPC, not just "stack unwinding").
|
||||
depending on the input type.
|
||||
1. 1. If the events were processed as part of step 4(i), the
|
||||
notifications from step 8 are ignored and step 10 is skipped.
|
||||
1. If events were queued as part of step 4(ii), and steps 5-8
|
||||
complete before the timeout, the arrival of both notifications
|
||||
from step 8 will mark the input block ready for processing.
|
||||
2. If events were queued as part of step 4(ii), but steps 5-8 take
|
||||
longer than the timeout, the notifications from step 8 will be
|
||||
ignored and step 10 will already have happened.
|
||||
1. If events were queued as part of step 4(ii), and steps 5-8
|
||||
complete before the timeout, the arrival of both notifications
|
||||
from step 8 will mark the input block ready for processing.
|
||||
2. If events were queued as part of step 4(ii), but steps 5-8 take
|
||||
longer than the timeout, the notifications from step 8 will be
|
||||
ignored and step 10 will already have happened.
|
||||
8. If events were queued as part of step 4(ii) they are now either
|
||||
processed (if the input block was not cancelled and Gecko detected a
|
||||
scrollframe under the input event, or if the timeout expired) or
|
||||
|
||||
+2
-2
@@ -136,7 +136,7 @@ IPDL compiler](#using-the-ipdl-compiler) for a complete list of required build c
|
||||
> Write `ParamTraits` for C++ data types that don't have them. See
|
||||
> [Generating IPDL-Aware C++ Data Types: IPDL Structs and Unions](#generating-ipdl-aware-c-data-types-ipdl-structs-and-unions) for IPDL
|
||||
> structures. See [Referencing Externally Defined Data Types: IPDL
|
||||
> Includes][referencing externally defined data types: ipdl includes] and [ParamTraits](#paramtraits) for C++ data types.
|
||||
> Includes](#referencing-externally-defined-data-types-ipdl-includes) and [ParamTraits](#paramtraits) for C++ data types.
|
||||
> 3. Write your actor and its messages. See [Defining Actors](#defining-actors).
|
||||
|
||||
3. Write C++ code to create and destroy instances of your actor at runtime.
|
||||
@@ -258,7 +258,7 @@ no concern.
|
||||
The second line includes the file `MyTypes.ipdlh`, which defines types like
|
||||
structs and unions, but in IPDL, which means they have behavior that goes
|
||||
beyond the similar C++ concepts. Details can be found in [Generating
|
||||
IPDL-Aware C++ Data Types: IPDL Structs and Unions][generating ipdl-aware c++ data types: ipdl structs and unions].
|
||||
IPDL-Aware C++ Data Types: IPDL Structs and Unions](#generating-ipdl-aware-c-data-types-ipdl-structs-and-unions).
|
||||
|
||||
The final lines include types from C++ headers. Additionally, the [RefCounted]
|
||||
and [MoveOnly] attributes tell IPDL that the types have special functionality
|
||||
|
||||
@@ -34,20 +34,20 @@ Created a new subscription: [context data]
|
||||
|
||||
**Q. Why are credentials stored in Google Drive?**
|
||||
|
||||
* Firebase services require a credential file, typically named `google-services.json`, which are retrieved from the Firebase console for all the applications in that project. Our requirements are somewhat unique, so we generate our own XML file from `google-services.json` and use that.
|
||||
According to [Firebase engineers](https://groups.google.com/forum/#!msg/firebase-talk/bamCgTDajkw/uVEJXjtiBwAJ), it should be safe to commit our `google-services.json` but we avoid doing that as there are other forks of Fenix that must not use these credentials.
|
||||
For example, the Google I/O app commits [their release version](https://github.com/google/iosched/blob/b428d2be4bb96bd423e47cb709c906ce5d02150f/mobile/google-services.json) of the file to Github as well.
|
||||
* Firebase services require a credential file, typically named `google-services.json`, which are retrieved from the Firebase console for all the applications in that project. Our requirements are somewhat unique, so we generate our own XML file from `google-services.json` and use that.
|
||||
According to [Firebase engineers](https://groups.google.com/forum/#!msg/firebase-talk/bamCgTDajkw/uVEJXjtiBwAJ), it should be safe to commit our `google-services.json` but we avoid doing that as there are other forks of Fenix that must not use these credentials.
|
||||
For example, the Google I/O app commits [their release version](https://github.com/google/iosched/blob/b428d2be4bb96bd423e47cb709c906ce5d02150f/mobile/google-services.json) of the file to Github as well.
|
||||
|
||||
**Q. What are the special requirements which mean we can't directly use `google-services.json`?**
|
||||
|
||||
* Following the 'Getting Started' Firebase instructions to initialize the service in Fenix would not work as we explicitly chose not to use the `com.google.gms.google-services` Gradle plugin as the Android service would be initialized with a [`ContentProvider`](https://firebase.blog/posts/2016/12/how-does-firebase-initialize-on-android) eagerly which reduces our control on how the application can start up in a performant way since the Browser startup sequence is quite unique.
|
||||
* Following the 'Getting Started' Firebase instructions to initialize the service in Fenix would not work as we explicitly chose not to use the `com.google.gms.google-services` Gradle plugin as the Android service would be initialized with a [`ContentProvider`](https://firebase.blog/posts/2016/12/how-does-firebase-initialize-on-android) eagerly which reduces our control on how the application can start up in a performant way since the Browser startup sequence is quite unique.
|
||||
|
||||
**Q. Where do we get the `google-services.json` file from?**
|
||||
|
||||
* Ask your friendly Release Management teammate if they can access the Cloud Messaging console at `console.firebase.google.com`.
|
||||
* Ask your friendly Release Management teammate if they can access the Cloud Messaging console at `console.firebase.google.com`.
|
||||
|
||||
**Q. How do I generate the XML file from `google-services.json`?**
|
||||
|
||||
* The easiest way is to use [this clever web app](https://dandar3.github.io/android/google-services-json-to-xml.html) that does this for you.
|
||||
* The more official and tedious way, would be to do this manually by following [the instructions on the google services plugin](https://developers.google.com/android/guides/google-services-plugin#adding_the_json_file) site.
|
||||
* Note that the `google-services.json` file may have the credentials for multiple applications, so ensure you are copying the instructions for the correct project.
|
||||
* The easiest way is to use [this clever web app](https://dandar3.github.io/android/google-services-json-to-xml.html) that does this for you.
|
||||
* The more official and tedious way, would be to do this manually by following [the instructions on the google services plugin](https://developers.google.com/android/guides/google-services-plugin#adding_the_json_file) site.
|
||||
* Note that the `google-services.json` file may have the credentials for multiple applications, so ensure you are copying the instructions for the correct project.
|
||||
|
||||
@@ -166,7 +166,7 @@ Calls: [Controllers](#controller), other Interactors
|
||||
|
||||
### Description
|
||||
|
||||
This is the first object called whenever the user performs an action. Typically this will result in code in the [View](#view) that looks something like `some_button.onClickListener { interactor.onSomeButtonClicked() } `. It is the Interactors job to delegate this button click to whichever object should handle it.
|
||||
This is the first object called whenever the user performs an action. Typically this will result in code in the [View](#view) that looks something like `some_button.onClickListener { interactor.onSomeButtonClicked() }`. It is the Interactors job to delegate this button click to whichever object should handle it.
|
||||
|
||||
Interactors may hold references to multiple other Interactors and Controllers, in which case they delegate specific methods to their appropriate handlers. This helps prevent bloated Controllers that both perform logic and delegate to other objects.
|
||||
|
||||
|
||||
@@ -39,10 +39,10 @@ To create an emulator:
|
||||
|
||||
simulator: '**focusX86Debug**' or '**klarX86Debug**'
|
||||
|
||||
1. Click on the drop down on the top left of Android Studio below the path view, and select '**Tests**'
|
||||
2. navigate the sub-directories to the folder locations of the tests to be run. For example, UI Tests are located in **focus-android/app/src/androidTest/java/org.mozilla.focus.activity**
|
||||
3. To run all tests in folder right click on the folder and select run. For individual tests you will do the same but right click on the specific test.
|
||||
4. select your simulator or device (connected via ADB).
|
||||
5. Click on the drop down on the top left of Android Studio below the path view, and select '**Tests**'
|
||||
6. navigate the sub-directories to the folder locations of the tests to be run. For example, UI Tests are located in **focus-android/app/src/androidTest/java/org.mozilla.focus.activity**
|
||||
7. To run all tests in folder right click on the folder and select run. For individual tests you will do the same but right click on the specific test.
|
||||
8. select your simulator or device (connected via ADB).
|
||||
|
||||
From there Android Studio will compile and install Focus on the simulator or device and start running the tests.
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@ bool/int/float values, not strings or complex values.
|
||||
|
||||
Each mirror variable is read-only, accessible via a getter function. The base
|
||||
name of the getter function is the same as the pref's name, but with '.' or '-'
|
||||
converted to '_'. Sometimes a suffix is added, e.g. _AtStartup for the mirror
|
||||
converted to '_'. Sometimes a suffix is added, e.g. `_AtStartup` for the mirror
|
||||
once kind.
|
||||
|
||||
Mirror variables have two benefits. First, they allow C++ and Rust code to get
|
||||
@@ -415,7 +415,7 @@ is subsequently used only to store changed pref values.
|
||||
|
||||
When any child process is created, the parent process serializes all pref
|
||||
values present in the hash table (i.e. those that have changed since the
|
||||
snapshot was made) _except sanitized prefs__ and stores them in a second,
|
||||
snapshot was made) *except sanitized prefs* and stores them in a second,
|
||||
short-lived shared memory region. This represents the set of changes the child
|
||||
process needs to apply on top of the snapshot, and allows it to build a hash
|
||||
table which should exactly match the parent's, modulo the sanitized prefs.
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
% <https://raw.githubusercontent.com/mozilla/treeherder/HEAD/ui/helpers/constants.js>
|
||||
% awk -e /thPlatformMap = {/,/};/ constants.js |grep ""|cut -d: -f2|sed -e s/^/ /|sed -e "s/$/ ,, /g"
|
||||
% TODO:
|
||||
% * Leverage verify_docs - <https://bugzilla.mozilla.org/show_bug.cgi?id=1636400>
|
||||
% * Add a new column (when executed ? ie always, rarely, etc)
|
||||
% - Leverage verify_docs - <https://bugzilla.mozilla.org/show_bug.cgi?id=1636400>
|
||||
% - Add a new column (when executed ? ie always, rarely, etc)
|
||||
|
||||
## Build Platforms
|
||||
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
# {{ module_name }}
|
||||
|
||||
{%- for class in classes %}
|
||||
|
||||
```{js:autoclass} {{ jsdoc_module_name }}.{{ class }}
|
||||
:members:
|
||||
:exclude-members: {{ class }}
|
||||
```
|
||||
{%- endfor %}
|
||||
{%- for function in functions %}
|
||||
|
||||
```{js:autofunction} {{ jsdoc_module_name }}.{{ function }}
|
||||
```
|
||||
{%- endfor %}
|
||||
|
||||
@@ -20,7 +20,7 @@ $ pandoc -t gfm https://github.com/mdn/archived-content/tree/main/files/en-us/mo
|
||||
|
||||
4. In the new doc.md, identify the images and wget/curl them into `img/`.
|
||||
5. Verify the syntax using [./mach lint -l md]
|
||||
6) If relevant, remove unbreakable spaces (rendered with a "!" on Phabricator)
|
||||
6. If relevant, remove unbreakable spaces (rendered with a "!" on Phabricator)
|
||||
|
||||
```shell
|
||||
sed -i -e 's/\xc2\xa0/ /g' doc.md
|
||||
|
||||
Reference in New Issue
Block a user