declarativeNetRequest.updateDynamicRules()
Modifies the set of dynamic rules for the extension. The rules with IDs listed in options.removeRuleIds are first removed, and then the rules given in options.addRules are added. Note that:
- This update happens as an atomic operation: either all specified rules are added and removed, or an error is returned.
- These rules are persisted across browser sessions and across extension updates.
- Static rules specified as part of the extension package cannot be removed using this function.
- The number of dynamic rules that can be added is limited:
- In Safari and up to Chrome 119, to the value of
MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULESfor the combined total of dynamic and session-scoped rules. - Up to Firefox 127 to the value of
MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES. - From Chrome 120 and Firefox 128, to the value of
MAX_NUMBER_OF_DYNAMIC_RULES.
- In Safari and up to Chrome 119, to the value of
Note:
In Firefox 132 and earlier, dynamic rules are sometimes not applied after a browser restart, and calls to this API are rejected with an error (Firefox bug 1921353). A workaround is to specify an enabled static ruleset in the declarative_net_request manifest key. The ruleset file can be an empty list.
Syntax
let rulesUpdated = browser.declarativeNetRequest.updateDynamicRules(
options // object
);
Parameters
options-
An object containing details of the rules to add or delete from the dynamic rules.
addRulesOptional-
An array of
declarativeNetRequest.Rule. Details of the rules to add. removeRuleIdsOptional-
An array of
number. IDs of the rules to remove. Any invalid IDs are ignored.
Return value
A Promise If the request was successful, the promise is fulfilled with no arguments. If the request fails, the promise is rejected with an error message.