webext-schema 3.0.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2611,6 +2611,7 @@
2611
2611
  },
2612
2612
  "onclick": {
2613
2613
  "type": "function",
2614
+ "max_manifest_version": 2,
2614
2615
  "optional": true,
2615
2616
  "description": "A function that will be called back when the menu item is clicked. Event pages cannot use this; instead, they should register a listener for $(ref:contextMenus.onClicked).",
2616
2617
  "parameters": [
@@ -2766,6 +2767,7 @@
2766
2767
  },
2767
2768
  "onclick": {
2768
2769
  "type": "function",
2770
+ "max_manifest_version": 2,
2769
2771
  "optional": "omit-key-if-missing",
2770
2772
  "parameters": [
2771
2773
  {
@@ -3064,7 +3066,7 @@
3064
3066
  "namespace": "manifest",
3065
3067
  "types": [
3066
3068
  {
3067
- "$extend": "PermissionNoPrompt",
3069
+ "$extend": "PermissionPrivileged",
3068
3070
  "choices": [
3069
3071
  {
3070
3072
  "type": "string",
@@ -4343,12 +4345,6 @@
4343
4345
  "optional": true,
4344
4346
  "description": "The ID of the tab that opened this tab, if any. This property is only present if the opener tab still exists."
4345
4347
  },
4346
- "selected": {
4347
- "type": "boolean",
4348
- "description": "Whether the tab is selected.",
4349
- "deprecated": "Please use $(ref:tabs.Tab.highlighted).",
4350
- "unsupported": true
4351
- },
4352
4348
  "highlighted": {
4353
4349
  "type": "boolean",
4354
4350
  "description": "Whether the tab is highlighted. Works as an alias of active"
@@ -4802,36 +4798,6 @@
4802
4798
  "description": "A port that can be used to communicate with the content scripts running in the specified tab. The port's $(ref:runtime.Port) event is fired if the tab closes or does not exist. "
4803
4799
  }
4804
4800
  },
4805
- {
4806
- "name": "sendRequest",
4807
- "deprecated": "Please use $(ref:runtime.sendMessage).",
4808
- "unsupported": true,
4809
- "type": "function",
4810
- "description": "Sends a single request to the content script(s) in the specified tab, with an optional callback to run when a response is sent back. The $(ref:extension.onRequest) event is fired in each content script running in the specified tab for the current extension.",
4811
- "parameters": [
4812
- {
4813
- "type": "integer",
4814
- "name": "tabId",
4815
- "minimum": 0
4816
- },
4817
- {
4818
- "type": "any",
4819
- "name": "request"
4820
- },
4821
- {
4822
- "type": "function",
4823
- "name": "responseCallback",
4824
- "optional": true,
4825
- "parameters": [
4826
- {
4827
- "name": "response",
4828
- "type": "any",
4829
- "description": "The JSON response object sent by the handler of the request. If an error occurs while connecting to the specified tab, the callback will be called with no arguments and $(ref:runtime.lastError) will be set to the error message."
4830
- }
4831
- ]
4832
- }
4833
- ]
4834
- },
4835
4801
  {
4836
4802
  "name": "sendMessage",
4837
4803
  "type": "function",
@@ -4874,63 +4840,6 @@
4874
4840
  }
4875
4841
  ]
4876
4842
  },
4877
- {
4878
- "name": "getSelected",
4879
- "deprecated": "Please use $(ref:tabs.query) <code>{active: true}</code>.",
4880
- "unsupported": true,
4881
- "type": "function",
4882
- "description": "Gets the tab that is selected in the specified window.",
4883
- "async": "callback",
4884
- "parameters": [
4885
- {
4886
- "type": "integer",
4887
- "name": "windowId",
4888
- "minimum": -2,
4889
- "optional": true,
4890
- "description": "Defaults to the $(topic:current-window)[current window]."
4891
- },
4892
- {
4893
- "type": "function",
4894
- "name": "callback",
4895
- "parameters": [
4896
- {
4897
- "name": "tab",
4898
- "$ref": "Tab"
4899
- }
4900
- ]
4901
- }
4902
- ]
4903
- },
4904
- {
4905
- "name": "getAllInWindow",
4906
- "deprecated": "Please use $(ref:tabs.query) <code>{windowId: windowId}</code>.",
4907
- "unsupported": true,
4908
- "type": "function",
4909
- "description": "Gets details about all tabs in the specified window.",
4910
- "async": "callback",
4911
- "parameters": [
4912
- {
4913
- "type": "integer",
4914
- "name": "windowId",
4915
- "minimum": -2,
4916
- "optional": true,
4917
- "description": "Defaults to the $(topic:current-window)[current window]."
4918
- },
4919
- {
4920
- "type": "function",
4921
- "name": "callback",
4922
- "parameters": [
4923
- {
4924
- "name": "tabs",
4925
- "type": "array",
4926
- "items": {
4927
- "$ref": "Tab"
4928
- }
4929
- }
4930
- ]
4931
- }
4932
- ]
4933
- },
4934
4843
  {
4935
4844
  "name": "create",
4936
4845
  "type": "function",
@@ -4963,13 +4872,6 @@
4963
4872
  "optional": true,
4964
4873
  "description": "Whether the tab should become the active tab in the window. Does not affect whether the window is focused (see $(ref:windows.update)). Defaults to <var>true</var>."
4965
4874
  },
4966
- "selected": {
4967
- "deprecated": "Please use <em>active</em>.",
4968
- "unsupported": true,
4969
- "type": "boolean",
4970
- "optional": true,
4971
- "description": "Whether the tab should become the selected tab in the window. Defaults to <var>true</var>"
4972
- },
4973
4875
  "pinned": {
4974
4876
  "type": "boolean",
4975
4877
  "optional": true,
@@ -5000,6 +4902,11 @@
5000
4902
  "type": "string",
5001
4903
  "optional": true,
5002
4904
  "description": "The title used for display if the tab is created in discarded mode."
4905
+ },
4906
+ "muted": {
4907
+ "type": "boolean",
4908
+ "optional": true,
4909
+ "description": "Whether the tab should be muted when created."
5003
4910
  }
5004
4911
  }
5005
4912
  },
@@ -5165,7 +5072,17 @@
5165
5072
  "description": "The position of the tabs within their windows."
5166
5073
  },
5167
5074
  "cookieStoreId": {
5168
- "type": "string",
5075
+ "choices": [
5076
+ {
5077
+ "type": "array",
5078
+ "items": {
5079
+ "type": "string"
5080
+ }
5081
+ },
5082
+ {
5083
+ "type": "string"
5084
+ }
5085
+ ],
5169
5086
  "optional": true,
5170
5087
  "description": "The CookieStoreId used for the tab."
5171
5088
  },
@@ -5304,13 +5221,6 @@
5304
5221
  "optional": true,
5305
5222
  "description": "Adds or removes the tab from the current selection."
5306
5223
  },
5307
- "selected": {
5308
- "unsupported": true,
5309
- "deprecated": "Please use <em>highlighted</em>.",
5310
- "type": "boolean",
5311
- "optional": true,
5312
- "description": "Whether the tab should be selected."
5313
- },
5314
5224
  "pinned": {
5315
5225
  "type": "boolean",
5316
5226
  "optional": true,
@@ -5624,6 +5534,7 @@
5624
5534
  {
5625
5535
  "name": "executeScript",
5626
5536
  "type": "function",
5537
+ "max_manifest_version": 2,
5627
5538
  "description": "Injects JavaScript code into a page. For details, see the $(topic:content_scripts)[programmatic injection] section of the content scripts doc.",
5628
5539
  "async": "callback",
5629
5540
  "parameters": [
@@ -5661,6 +5572,7 @@
5661
5572
  {
5662
5573
  "name": "insertCSS",
5663
5574
  "type": "function",
5575
+ "max_manifest_version": 2,
5664
5576
  "description": "Injects CSS into a page. For details, see the $(topic:content_scripts)[programmatic injection] section of the content scripts doc.",
5665
5577
  "async": "callback",
5666
5578
  "parameters": [
@@ -5688,6 +5600,7 @@
5688
5600
  {
5689
5601
  "name": "removeCSS",
5690
5602
  "type": "function",
5603
+ "max_manifest_version": 2,
5691
5604
  "description": "Removes injected CSS from a page. For details, see the $(topic:content_scripts)[programmatic injection] section of the content scripts doc.",
5692
5605
  "async": "callback",
5693
5606
  "parameters": [
@@ -6155,58 +6068,6 @@
6155
6068
  }
6156
6069
  ]
6157
6070
  },
6158
- {
6159
- "name": "onSelectionChanged",
6160
- "deprecated": "Please use $(ref:tabs.onActivated).",
6161
- "unsupported": true,
6162
- "type": "function",
6163
- "description": "Fires when the selected tab in a window changes.",
6164
- "parameters": [
6165
- {
6166
- "type": "integer",
6167
- "name": "tabId",
6168
- "minimum": 0,
6169
- "description": "The ID of the tab that has become active."
6170
- },
6171
- {
6172
- "type": "object",
6173
- "name": "selectInfo",
6174
- "properties": {
6175
- "windowId": {
6176
- "type": "integer",
6177
- "minimum": 0,
6178
- "description": "The ID of the window the selected tab changed inside of."
6179
- }
6180
- }
6181
- }
6182
- ]
6183
- },
6184
- {
6185
- "name": "onActiveChanged",
6186
- "deprecated": "Please use $(ref:tabs.onActivated).",
6187
- "unsupported": true,
6188
- "type": "function",
6189
- "description": "Fires when the selected tab in a window changes. Note that the tab's URL may not be set at the time this event fired, but you can listen to $(ref:tabs.onUpdated) events to be notified when a URL is set.",
6190
- "parameters": [
6191
- {
6192
- "type": "integer",
6193
- "name": "tabId",
6194
- "minimum": 0,
6195
- "description": "The ID of the tab that has become active."
6196
- },
6197
- {
6198
- "type": "object",
6199
- "name": "selectInfo",
6200
- "properties": {
6201
- "windowId": {
6202
- "type": "integer",
6203
- "minimum": 0,
6204
- "description": "The ID of the window the selected tab changed inside of."
6205
- }
6206
- }
6207
- }
6208
- ]
6209
- },
6210
6071
  {
6211
6072
  "name": "onActivated",
6212
6073
  "type": "function",
@@ -6236,34 +6097,6 @@
6236
6097
  }
6237
6098
  ]
6238
6099
  },
6239
- {
6240
- "name": "onHighlightChanged",
6241
- "deprecated": "Please use $(ref:tabs.onHighlighted).",
6242
- "unsupported": true,
6243
- "type": "function",
6244
- "description": "Fired when the highlighted or selected tabs in a window changes.",
6245
- "parameters": [
6246
- {
6247
- "type": "object",
6248
- "name": "selectInfo",
6249
- "properties": {
6250
- "windowId": {
6251
- "type": "integer",
6252
- "minimum": 0,
6253
- "description": "The window whose tabs changed."
6254
- },
6255
- "tabIds": {
6256
- "type": "array",
6257
- "items": {
6258
- "type": "integer",
6259
- "minimum": 0
6260
- },
6261
- "description": "All highlighted tabs in the window."
6262
- }
6263
- }
6264
- }
6265
- ]
6266
- },
6267
6100
  {
6268
6101
  "name": "onHighlighted",
6269
6102
  "type": "function",
@@ -6597,7 +6430,7 @@
6597
6430
  "namespace": "manifest",
6598
6431
  "types": [
6599
6432
  {
6600
- "$extend": "PermissionNoPrompt",
6433
+ "$extend": "PermissionPrivileged",
6601
6434
  "choices": [
6602
6435
  {
6603
6436
  "type": "string",
@@ -7442,7 +7275,7 @@
7442
7275
  "namespace": "manifest",
7443
7276
  "types": [
7444
7277
  {
7445
- "$extend": "PermissionNoPrompt",
7278
+ "$extend": "PermissionPrivileged",
7446
7279
  "choices": [
7447
7280
  {
7448
7281
  "type": "string",
@@ -8376,6 +8209,10 @@
8376
8209
  "$ref": "types.Setting",
8377
8210
  "description": "This setting controls whether the user-chosen colors override the page's colors."
8378
8211
  },
8212
+ "overrideContentColorScheme": {
8213
+ "$ref": "types.Setting",
8214
+ "description": "This setting controls whether a light or dark color scheme overrides the page's preferred color scheme."
8215
+ },
8379
8216
  "useDocumentFonts": {
8380
8217
  "$ref": "types.Setting",
8381
8218
  "description": "This setting controls whether the document's fonts are used."
@@ -8963,6 +8800,7 @@
8963
8800
  "content_scripts.json": [
8964
8801
  {
8965
8802
  "namespace": "contentScripts",
8803
+ "max_manifest_version": 2,
8966
8804
  "types": [
8967
8805
  {
8968
8806
  "id": "RegisteredContentScriptOptions",
@@ -9029,6 +8867,22 @@
9029
8867
  "$ref": "extensionTypes.RunAt",
9030
8868
  "optional": true,
9031
8869
  "description": "The soonest that the JavaScript or CSS will be injected into the tab. Defaults to \"document_idle\"."
8870
+ },
8871
+ "cookieStoreId": {
8872
+ "choices": [
8873
+ {
8874
+ "type": "array",
8875
+ "minItems": 1,
8876
+ "items": {
8877
+ "type": "string"
8878
+ }
8879
+ },
8880
+ {
8881
+ "type": "string"
8882
+ }
8883
+ ],
8884
+ "optional": true,
8885
+ "description": "limit the set of matched tabs to those that belong to the given cookie store id"
9032
8886
  }
9033
8887
  }
9034
8888
  },
@@ -9321,6 +9175,18 @@
9321
9175
  ],
9322
9176
  "description": "A cookie's 'SameSite' state (https://tools.ietf.org/html/draft-west-first-party-cookies). 'no_restriction' corresponds to a cookie set without a 'SameSite' attribute, 'lax' to 'SameSite=Lax', and 'strict' to 'SameSite=Strict'."
9323
9177
  },
9178
+ {
9179
+ "id": "PartitionKey",
9180
+ "type": "object",
9181
+ "description": "The description of the storage partition of a cookie. This object may be omitted (null) if a cookie is not partitioned.",
9182
+ "properties": {
9183
+ "topLevelSite": {
9184
+ "type": "string",
9185
+ "optional": true,
9186
+ "description": "The first-party URL of the cookie, if the cookie is in storage partitioned by the top-level site."
9187
+ }
9188
+ }
9189
+ },
9324
9190
  {
9325
9191
  "id": "Cookie",
9326
9192
  "type": "object",
@@ -9374,6 +9240,11 @@
9374
9240
  "firstPartyDomain": {
9375
9241
  "type": "string",
9376
9242
  "description": "The first-party domain of the cookie."
9243
+ },
9244
+ "partitionKey": {
9245
+ "$ref": "PartitionKey",
9246
+ "optional": true,
9247
+ "description": "The cookie's storage partition, if any. null if not partitioned."
9377
9248
  }
9378
9249
  }
9379
9250
  },
@@ -9441,6 +9312,11 @@
9441
9312
  "type": "string",
9442
9313
  "optional": true,
9443
9314
  "description": "The first-party domain which the cookie to retrieve is associated. This attribute is required if First-Party Isolation is enabled."
9315
+ },
9316
+ "partitionKey": {
9317
+ "$ref": "PartitionKey",
9318
+ "optional": true,
9319
+ "description": "The storage partition, if the cookie is part of partitioned storage. By default, only non-partitioned cookies are returned."
9444
9320
  }
9445
9321
  }
9446
9322
  },
@@ -9508,6 +9384,11 @@
9508
9384
  "type": "string",
9509
9385
  "optional": "omit-key-if-missing",
9510
9386
  "description": "Restricts the retrieved cookies to those whose first-party domains match this one. This attribute is required if First-Party Isolation is enabled. To not filter by a specific first-party domain, use `null` or `undefined`."
9387
+ },
9388
+ "partitionKey": {
9389
+ "$ref": "PartitionKey",
9390
+ "optional": true,
9391
+ "description": "Selects a specific storage partition to look up cookies. Defaults to null, in which case only non-partitioned cookies are retrieved. If an object iis passed, partitioned cookies are also included, and filtered based on the keys present in the given PartitionKey description. An empty object ({}) returns all cookies (partitioned + unpartitioned), a non-empty object (e.g. {topLevelSite: '...'}) only returns cookies whose partition match all given attributes."
9511
9392
  }
9512
9393
  }
9513
9394
  },
@@ -9592,6 +9473,11 @@
9592
9473
  "type": "string",
9593
9474
  "optional": true,
9594
9475
  "description": "The first-party domain of the cookie. This attribute is required if First-Party Isolation is enabled."
9476
+ },
9477
+ "partitionKey": {
9478
+ "$ref": "PartitionKey",
9479
+ "optional": true,
9480
+ "description": "The storage partition, if the cookie is part of partitioned storage. By default, non-partitioned storage is used."
9595
9481
  }
9596
9482
  }
9597
9483
  },
@@ -9638,6 +9524,11 @@
9638
9524
  "type": "string",
9639
9525
  "optional": true,
9640
9526
  "description": "The first-party domain associated with the cookie. This attribute is required if First-Party Isolation is enabled."
9527
+ },
9528
+ "partitionKey": {
9529
+ "$ref": "PartitionKey",
9530
+ "optional": true,
9531
+ "description": "The storage partition, if the cookie is part of partitioned storage. By default, non-partitioned storage is used."
9641
9532
  }
9642
9533
  }
9643
9534
  },
@@ -9667,6 +9558,11 @@
9667
9558
  "firstPartyDomain": {
9668
9559
  "type": "string",
9669
9560
  "description": "The first-party domain associated with the cookie that's been removed."
9561
+ },
9562
+ "partitionKey": {
9563
+ "$ref": "PartitionKey",
9564
+ "optional": true,
9565
+ "description": "The storage partition, if the cookie is part of partitioned storage. null if not partitioned."
9670
9566
  }
9671
9567
  }
9672
9568
  }
@@ -9926,6 +9822,11 @@
9926
9822
  "description": "False if this download is recorded in the history, true if it is not recorded.",
9927
9823
  "type": "boolean"
9928
9824
  },
9825
+ "cookieStoreId": {
9826
+ "type": "string",
9827
+ "optional": true,
9828
+ "description": "The cookie store ID of the contextual identity."
9829
+ },
9929
9830
  "danger": {
9930
9831
  "$ref": "DangerType",
9931
9832
  "description": "Indication of whether this download is thought to be safe or known to be suspicious."
@@ -10124,6 +10025,11 @@
10124
10025
  "optional": true,
10125
10026
  "type": "string"
10126
10027
  },
10028
+ "cookieStoreId": {
10029
+ "type": "string",
10030
+ "optional": true,
10031
+ "description": "The cookie store ID of the contextual identity."
10032
+ },
10127
10033
  "danger": {
10128
10034
  "$ref": "DangerType",
10129
10035
  "description": "Indication of whether this download is thought to be safe or known to be suspicious.",
@@ -10207,6 +10113,11 @@
10207
10113
  "default": false,
10208
10114
  "type": "boolean"
10209
10115
  },
10116
+ "cookieStoreId": {
10117
+ "type": "string",
10118
+ "optional": true,
10119
+ "description": "The cookie store ID of the contextual identity; requires \"cookies\" permission."
10120
+ },
10210
10121
  "conflictAction": {
10211
10122
  "$ref": "FilenameConflictAction",
10212
10123
  "optional": true
@@ -10999,7 +10910,8 @@
10999
10910
  "additionalProperties": {
11000
10911
  "$ref": "experiments.ExperimentAPI"
11001
10912
  },
11002
- "optional": true
10913
+ "optional": true,
10914
+ "privileged": true
11003
10915
  }
11004
10916
  }
11005
10917
  }
@@ -11239,7 +11151,6 @@
11239
11151
  {
11240
11152
  "name": "getBackgroundPage",
11241
11153
  "type": "function",
11242
- "max_manifest_version": 2,
11243
11154
  "description": "Returns the JavaScript 'window' object for the background page running inside the current extension. Returns null if the extension has no background page.",
11244
11155
  "parameters": [],
11245
11156
  "returns": {
@@ -11409,6 +11320,11 @@
11409
11320
  "type": "number",
11410
11321
  "optional": true,
11411
11322
  "description": "The scale of the resulting image. Defaults to <code>devicePixelRatio</code>."
11323
+ },
11324
+ "resetScrollPosition": {
11325
+ "type": "boolean",
11326
+ "optional": true,
11327
+ "description": "If true, temporarily resets the scroll position of the document to 0. Only takes effect if rect is also specified."
11412
11328
  }
11413
11329
  }
11414
11330
  },
@@ -11665,23 +11581,27 @@
11665
11581
  "js",
11666
11582
  "leaf",
11667
11583
  "mainthreadio",
11668
- "responsiveness",
11584
+ "fileio",
11585
+ "fileioall",
11586
+ "noiostacks",
11669
11587
  "screenshots",
11670
11588
  "seqstyle",
11671
11589
  "stackwalk",
11672
- "threads",
11673
11590
  "jstracer",
11674
11591
  "jsallocations",
11675
11592
  "nostacksampling",
11676
- "nativeallocations",
11677
11593
  "preferencereads",
11594
+ "nativeallocations",
11678
11595
  "ipcmessages",
11679
- "fileio",
11680
- "fileioall",
11681
- "noiostacks",
11682
11596
  "audiocallbacktracing",
11683
11597
  "cpu",
11684
- "notimerresolutionchange"
11598
+ "notimerresolutionchange",
11599
+ "cpuallthreads",
11600
+ "samplingallthreads",
11601
+ "markersallthreads",
11602
+ "unregisteredthreads",
11603
+ "processcpu",
11604
+ "responsiveness"
11685
11605
  ]
11686
11606
  },
11687
11607
  {
@@ -11842,7 +11762,8 @@
11842
11762
  "items": {
11843
11763
  "type": "string"
11844
11764
  },
11845
- "optional": true
11765
+ "optional": true,
11766
+ "privileged": true
11846
11767
  }
11847
11768
  }
11848
11769
  }
@@ -12691,34 +12612,13 @@
12691
12612
  "postprocess": "manifestVersionCheck"
12692
12613
  },
12693
12614
  "applications": {
12694
- "type": "object",
12695
- "optional": true,
12696
- "properties": {
12697
- "gecko": {
12698
- "$ref": "FirefoxSpecificProperties",
12699
- "optional": true
12700
- }
12701
- }
12615
+ "$ref": "BrowserSpecificSettings",
12616
+ "description": "The applications property is deprecated, please use 'browser_specific_settings'",
12617
+ "optional": true
12702
12618
  },
12703
12619
  "browser_specific_settings": {
12704
- "type": "object",
12705
- "optional": true,
12706
- "properties": {
12707
- "gecko": {
12708
- "$ref": "FirefoxSpecificProperties",
12709
- "optional": true
12710
- },
12711
- "edge": {
12712
- "type": "object",
12713
- "additionalProperties": {
12714
- "type": "any"
12715
- },
12716
- "optional": true
12717
- }
12718
- },
12719
- "additionalProperties": {
12720
- "$ref": "UnrecognizedProperty"
12721
- }
12620
+ "$ref": "BrowserSpecificSettings",
12621
+ "optional": true
12722
12622
  },
12723
12623
  "name": {
12724
12624
  "type": "string",
@@ -12750,6 +12650,32 @@
12750
12650
  "format": "url",
12751
12651
  "optional": true,
12752
12652
  "preprocess": "localize"
12653
+ },
12654
+ "install_origins": {
12655
+ "type": "array",
12656
+ "optional": true,
12657
+ "items": {
12658
+ "type": "string",
12659
+ "format": "origin"
12660
+ }
12661
+ },
12662
+ "developer": {
12663
+ "type": "object",
12664
+ "optional": true,
12665
+ "properties": {
12666
+ "name": {
12667
+ "type": "string",
12668
+ "optional": true,
12669
+ "preprocess": "localize"
12670
+ },
12671
+ "url": {
12672
+ "type": "string",
12673
+ "format": "url",
12674
+ "optional": true,
12675
+ "preprocess": "localize",
12676
+ "onError": "warn"
12677
+ }
12678
+ }
12753
12679
  }
12754
12680
  }
12755
12681
  },
@@ -12795,7 +12721,9 @@
12795
12721
  },
12796
12722
  "persistent": {
12797
12723
  "optional": true,
12798
- "$ref": "PersistentBackgroundProperty"
12724
+ "type": "boolean",
12725
+ "max_manifest_version": 2,
12726
+ "default": true
12799
12727
  }
12800
12728
  },
12801
12729
  "additionalProperties": {
@@ -12813,7 +12741,9 @@
12813
12741
  },
12814
12742
  "persistent": {
12815
12743
  "optional": true,
12816
- "$ref": "PersistentBackgroundProperty"
12744
+ "type": "boolean",
12745
+ "max_manifest_version": 2,
12746
+ "default": true
12817
12747
  }
12818
12748
  },
12819
12749
  "additionalProperties": {
@@ -12892,13 +12822,41 @@
12892
12822
  ]
12893
12823
  },
12894
12824
  "permissions": {
12895
- "type": "array",
12896
12825
  "default": [],
12826
+ "optional": true,
12827
+ "choices": [
12828
+ {
12829
+ "max_manifest_version": 2,
12830
+ "type": "array",
12831
+ "items": {
12832
+ "$ref": "PermissionOrOrigin",
12833
+ "onError": "warn"
12834
+ }
12835
+ },
12836
+ {
12837
+ "min_manifest_version": 3,
12838
+ "type": "array",
12839
+ "items": {
12840
+ "$ref": "Permission",
12841
+ "onError": "warn"
12842
+ }
12843
+ }
12844
+ ]
12845
+ },
12846
+ "granted_host_permissions": {
12847
+ "type": "boolean",
12848
+ "optional": true,
12849
+ "default": false
12850
+ },
12851
+ "host_permissions": {
12852
+ "min_manifest_version": 3,
12853
+ "type": "array",
12897
12854
  "items": {
12898
- "$ref": "PermissionOrOrigin",
12855
+ "$ref": "MatchPattern",
12899
12856
  "onError": "warn"
12900
12857
  },
12901
- "optional": true
12858
+ "optional": true,
12859
+ "default": []
12902
12860
  },
12903
12861
  "optional_permissions": {
12904
12862
  "type": "array",
@@ -12942,22 +12900,6 @@
12942
12900
  }
12943
12901
  ]
12944
12902
  },
12945
- "developer": {
12946
- "type": "object",
12947
- "optional": true,
12948
- "properties": {
12949
- "name": {
12950
- "type": "string",
12951
- "optional": true,
12952
- "preprocess": "localize"
12953
- },
12954
- "url": {
12955
- "type": "string",
12956
- "optional": true,
12957
- "preprocess": "localize"
12958
- }
12959
- }
12960
- },
12961
12903
  "hidden": {
12962
12904
  "type": "boolean",
12963
12905
  "optional": true,
@@ -13065,6 +13007,30 @@
13065
13007
  }
13066
13008
  }
13067
13009
  },
13010
+ {
13011
+ "id": "WebExtensionSitePermissionsManifest",
13012
+ "type": "object",
13013
+ "description": "Represents a WebExtension site permissions manifest.json file",
13014
+ "$import": "ManifestBase",
13015
+ "properties": {
13016
+ "site_permissions": {
13017
+ "type": "array",
13018
+ "minItems": 1,
13019
+ "items": {
13020
+ "$ref": "SitePermission"
13021
+ }
13022
+ },
13023
+ "install_origins": {
13024
+ "type": "array",
13025
+ "minItems": 1,
13026
+ "maxItems": 1,
13027
+ "items": {
13028
+ "type": "string",
13029
+ "format": "origin"
13030
+ }
13031
+ }
13032
+ }
13033
+ },
13068
13034
  {
13069
13035
  "id": "ThemeIcons",
13070
13036
  "type": "object",
@@ -13125,17 +13091,30 @@
13125
13091
  }
13126
13092
  ]
13127
13093
  },
13094
+ {
13095
+ "id": "PermissionPrivileged",
13096
+ "choices": [
13097
+ {
13098
+ "type": "string",
13099
+ "enum": [
13100
+ "mozillaAddons"
13101
+ ]
13102
+ }
13103
+ ]
13104
+ },
13128
13105
  {
13129
13106
  "id": "PermissionNoPrompt",
13130
13107
  "choices": [
13131
13108
  {
13132
- "$ref": "OptionalPermission"
13109
+ "$ref": "OptionalPermissionNoPrompt"
13110
+ },
13111
+ {
13112
+ "$ref": "PermissionPrivileged"
13133
13113
  },
13134
13114
  {
13135
13115
  "type": "string",
13136
13116
  "enum": [
13137
13117
  "alarms",
13138
- "mozillaAddons",
13139
13118
  "storage",
13140
13119
  "unlimitedStorage"
13141
13120
  ]
@@ -13164,6 +13143,18 @@
13164
13143
  }
13165
13144
  ]
13166
13145
  },
13146
+ {
13147
+ "id": "SitePermission",
13148
+ "choices": [
13149
+ {
13150
+ "type": "string",
13151
+ "enum": [
13152
+ "midi",
13153
+ "midi-sysex"
13154
+ ]
13155
+ }
13156
+ ]
13157
+ },
13167
13158
  {
13168
13159
  "id": "HttpURL",
13169
13160
  "type": "string",
@@ -13223,6 +13214,19 @@
13223
13214
  }
13224
13215
  }
13225
13216
  },
13217
+ {
13218
+ "id": "BrowserSpecificSettings",
13219
+ "type": "object",
13220
+ "properties": {
13221
+ "gecko": {
13222
+ "$ref": "FirefoxSpecificProperties",
13223
+ "optional": true
13224
+ }
13225
+ },
13226
+ "additionalProperties": {
13227
+ "type": "any"
13228
+ }
13229
+ },
13226
13230
  {
13227
13231
  "id": "MatchPattern",
13228
13232
  "choices": [
@@ -13380,24 +13384,6 @@
13380
13384
  "id": "UnrecognizedProperty",
13381
13385
  "type": "any",
13382
13386
  "deprecated": "An unexpected property was found in the WebExtension manifest."
13383
- },
13384
- {
13385
- "id": "PersistentBackgroundProperty",
13386
- "choices": [
13387
- {
13388
- "type": "boolean",
13389
- "enum": [
13390
- true
13391
- ]
13392
- },
13393
- {
13394
- "type": "boolean",
13395
- "enum": [
13396
- false
13397
- ],
13398
- "deprecated": "Event pages are not currently supported. This will run as a persistent background page."
13399
- }
13400
- ]
13401
13387
  }
13402
13388
  ]
13403
13389
  }
@@ -13472,7 +13458,7 @@
13472
13458
  "namespace": "manifest",
13473
13459
  "types": [
13474
13460
  {
13475
- "$extend": "PermissionNoPrompt",
13461
+ "$extend": "PermissionPrivileged",
13476
13462
  "choices": [
13477
13463
  {
13478
13464
  "type": "string",
@@ -14350,9 +14336,6 @@
14350
14336
  "permissions.json": [
14351
14337
  {
14352
14338
  "namespace": "permissions",
14353
- "permissions": [
14354
- "manifest:optional_permissions"
14355
- ],
14356
14339
  "types": [
14357
14340
  {
14358
14341
  "id": "Permissions",
@@ -14838,6 +14821,10 @@
14838
14821
  "httpsOnlyMode": {
14839
14822
  "$ref": "types.Setting",
14840
14823
  "description": "Allow users to query the mode for 'HTTPS-Only Mode'. This setting's value is of type HTTPSOnlyModeOption, defaulting to <code>never</code>."
14824
+ },
14825
+ "globalPrivacyControl": {
14826
+ "$ref": "types.Setting",
14827
+ "description": "Allow users to query the status of 'Global Privacy Control'. This setting's value is of type boolean, defaulting to <code>false</code>."
14841
14828
  }
14842
14829
  }
14843
14830
  },
@@ -14893,7 +14880,8 @@
14893
14880
  "type": "boolean",
14894
14881
  "optional": true,
14895
14882
  "default": false,
14896
- "description": "Whether to create all cookies as nonPersistent (i.e., session) cookies."
14883
+ "description": "Whether to create all cookies as nonPersistent (i.e., session) cookies.",
14884
+ "deprecated": "This property has no effect anymore and its value is always <code>false<code>."
14897
14885
  }
14898
14886
  }
14899
14887
  }
@@ -15059,7 +15047,8 @@
15059
15047
  "s390x",
15060
15048
  "sparc64",
15061
15049
  "x86-32",
15062
- "x86-64"
15050
+ "x86-64",
15051
+ "noarch"
15063
15052
  ],
15064
15053
  "allowedContexts": [
15065
15054
  "content",
@@ -15189,7 +15178,6 @@
15189
15178
  "functions": [
15190
15179
  {
15191
15180
  "name": "getBackgroundPage",
15192
- "max_manifest_version": 2,
15193
15181
  "type": "function",
15194
15182
  "description": "Retrieves the JavaScript 'window' object for the background page running inside the current extension/app. If the background page is an event page, the system will ensure it is loaded before calling the callback. If there is no background page, an error is set.",
15195
15183
  "async": "callback",
@@ -15264,6 +15252,27 @@
15264
15252
  "description": "The fully-qualified URL to the resource."
15265
15253
  }
15266
15254
  },
15255
+ {
15256
+ "name": "getFrameId",
15257
+ "type": "function",
15258
+ "allowedContexts": [
15259
+ "content",
15260
+ "devtools"
15261
+ ],
15262
+ "description": "Get the frameId of any window global or frame element.",
15263
+ "parameters": [
15264
+ {
15265
+ "type": "any",
15266
+ "name": "target",
15267
+ "description": "A WindowProxy or a Browsing Context container element (IFrame, Frame, Embed, Object) for the target frame."
15268
+ }
15269
+ ],
15270
+ "allowCrossOriginArguments": true,
15271
+ "returns": {
15272
+ "type": "number",
15273
+ "description": "The frameId of the target frame, or -1 if it doesn't exist."
15274
+ }
15275
+ },
15267
15276
  {
15268
15277
  "name": "setUninstallURL",
15269
15278
  "type": "function",
@@ -15579,13 +15588,11 @@
15579
15588
  },
15580
15589
  {
15581
15590
  "name": "onSuspend",
15582
- "unsupported": true,
15583
15591
  "type": "function",
15584
15592
  "description": "Sent to the event page just before it is unloaded. This gives the extension opportunity to do some clean up. Note that since the page is unloading, any asynchronous operations started while handling this event are not guaranteed to complete. If more activity for the event page occurs before it gets unloaded the onSuspendCanceled event will be sent and the page won't be unloaded. "
15585
15593
  },
15586
15594
  {
15587
15595
  "name": "onSuspendCanceled",
15588
- "unsupported": true,
15589
15596
  "type": "function",
15590
15597
  "description": "Sent after onSuspend to indicate that the app won't be unloaded after all."
15591
15598
  },
@@ -15718,62 +15725,466 @@
15718
15725
  ]
15719
15726
  }
15720
15727
  ],
15721
- "storage.json": [
15728
+ "scripting.json": [
15722
15729
  {
15723
- "namespace": "storage",
15724
- "allowedContexts": [
15725
- "content",
15726
- "devtools"
15727
- ],
15728
- "defaultContexts": [
15729
- "content",
15730
- "devtools"
15731
- ],
15732
- "description": "Use the <code>browser.storage</code> API to store, retrieve, and track changes to user data.",
15730
+ "namespace": "manifest",
15731
+ "types": [
15732
+ {
15733
+ "$extend": "OptionalPermissionNoPrompt",
15734
+ "choices": [
15735
+ {
15736
+ "type": "string",
15737
+ "enum": [
15738
+ "scripting"
15739
+ ]
15740
+ }
15741
+ ]
15742
+ }
15743
+ ]
15744
+ },
15745
+ {
15746
+ "namespace": "scripting",
15747
+ "description": "Use the scripting API to execute script in different contexts.",
15733
15748
  "permissions": [
15734
- "storage"
15749
+ "scripting"
15735
15750
  ],
15736
15751
  "types": [
15737
15752
  {
15738
- "id": "StorageChange",
15753
+ "id": "ScriptInjection",
15739
15754
  "type": "object",
15755
+ "description": "Details of a script injection",
15740
15756
  "properties": {
15741
- "oldValue": {
15742
- "type": "any",
15743
- "description": "The old value of the item, if there was an old value.",
15757
+ "args": {
15758
+ "type": "array",
15759
+ "optional": true,
15760
+ "description": "The arguments to curry into a provided function. This is only valid if the <code>func</code> parameter is specified. These arguments must be JSON-serializable.",
15761
+ "items": {
15762
+ "type": "any"
15763
+ }
15764
+ },
15765
+ "files": {
15766
+ "type": "array",
15767
+ "optional": true,
15768
+ "description": "The path of the JS files to inject, relative to the extension's root directory. Exactly one of <code>files</code> and <code>func</code> must be specified.",
15769
+ "minItems": 1,
15770
+ "items": {
15771
+ "type": "string"
15772
+ }
15773
+ },
15774
+ "func": {
15775
+ "type": "function",
15776
+ "optional": true,
15777
+ "description": "A JavaScript function to inject. This function will be serialized, and then deserialized for injection. This means that any bound parameters and execution context will be lost. Exactly one of <code>files</code> and <code>func</code> must be specified."
15778
+ },
15779
+ "target": {
15780
+ "$ref": "InjectionTarget",
15781
+ "description": "Details specifying the target into which to inject the script."
15782
+ },
15783
+ "world": {
15784
+ "$ref": "ExecutionWorld",
15744
15785
  "optional": true
15745
15786
  },
15746
- "newValue": {
15787
+ "injectImmediately": {
15788
+ "type": "boolean",
15789
+ "optional": true,
15790
+ "description": "Whether the injection should be triggered in the target as soon as possible (but not necessarily prior to page load)."
15791
+ }
15792
+ }
15793
+ },
15794
+ {
15795
+ "id": "InjectionResult",
15796
+ "type": "object",
15797
+ "description": "Result of a script injection.",
15798
+ "properties": {
15799
+ "frameId": {
15800
+ "type": "integer",
15801
+ "description": "The frame ID associated with the injection."
15802
+ },
15803
+ "result": {
15747
15804
  "type": "any",
15748
- "description": "The new value of the item, if there is a new value.",
15749
- "optional": true
15805
+ "optional": true,
15806
+ "description": "The result of the script execution."
15807
+ },
15808
+ "error": {
15809
+ "type": "object",
15810
+ "optional": true,
15811
+ "description": "When the injection has failed, the error is exposed to the caller with this property.",
15812
+ "properties": {
15813
+ "message": {
15814
+ "type": "string",
15815
+ "description": "A message explaining why the injection has failed."
15816
+ }
15817
+ }
15750
15818
  }
15751
15819
  }
15752
15820
  },
15753
15821
  {
15754
- "id": "StorageArea",
15822
+ "id": "InjectionTarget",
15755
15823
  "type": "object",
15756
- "functions": [
15757
- {
15758
- "name": "get",
15759
- "type": "function",
15760
- "description": "Gets one or more items from storage.",
15761
- "async": "callback",
15762
- "parameters": [
15763
- {
15764
- "name": "keys",
15765
- "choices": [
15766
- {
15767
- "type": "string"
15768
- },
15769
- {
15770
- "type": "array",
15771
- "items": {
15772
- "type": "string"
15773
- }
15774
- },
15775
- {
15776
- "type": "object",
15824
+ "properties": {
15825
+ "frameIds": {
15826
+ "type": "array",
15827
+ "optional": true,
15828
+ "description": "The IDs of specific frames to inject into.",
15829
+ "items": {
15830
+ "type": "number"
15831
+ }
15832
+ },
15833
+ "allFrames": {
15834
+ "type": "boolean",
15835
+ "optional": true,
15836
+ "description": "Whether the script should inject into all frames within the tab. Defaults to false. This must not be true if <code>frameIds</code> is specified."
15837
+ },
15838
+ "tabId": {
15839
+ "type": "number",
15840
+ "description": "The ID of the tab into which to inject."
15841
+ }
15842
+ }
15843
+ },
15844
+ {
15845
+ "id": "CSSInjection",
15846
+ "type": "object",
15847
+ "properties": {
15848
+ "css": {
15849
+ "type": "string",
15850
+ "optional": true,
15851
+ "description": "A string containing the CSS to inject. Exactly one of <code>files</code> and <code>css</code> must be specified."
15852
+ },
15853
+ "files": {
15854
+ "type": "array",
15855
+ "optional": true,
15856
+ "description": "The path of the CSS files to inject, relative to the extension's root directory. Exactly one of <code>files</code> and <code>css</code> must be specified.",
15857
+ "minItems": 1,
15858
+ "items": {
15859
+ "type": "string"
15860
+ }
15861
+ },
15862
+ "origin": {
15863
+ "type": "string",
15864
+ "optional": true,
15865
+ "enum": [
15866
+ "USER",
15867
+ "AUTHOR"
15868
+ ],
15869
+ "default": "AUTHOR",
15870
+ "description": "The style origin for the injection. Defaults to <code>'AUTHOR'</code>."
15871
+ },
15872
+ "target": {
15873
+ "$ref": "InjectionTarget",
15874
+ "description": "Details specifying the target into which to inject the CSS."
15875
+ }
15876
+ }
15877
+ },
15878
+ {
15879
+ "id": "ContentScriptFilter",
15880
+ "type": "object",
15881
+ "properties": {
15882
+ "ids": {
15883
+ "type": "array",
15884
+ "optional": true,
15885
+ "description": "The IDs of specific scripts to retrieve with <code>getRegisteredContentScripts()</code> or to unregister with <code>unregisterContentScripts()</code>.",
15886
+ "items": {
15887
+ "type": "string"
15888
+ }
15889
+ }
15890
+ }
15891
+ },
15892
+ {
15893
+ "id": "ExecutionWorld",
15894
+ "type": "string",
15895
+ "enum": [
15896
+ "ISOLATED"
15897
+ ],
15898
+ "description": "The JavaScript world for a script to execute within. We currently only support the <code>'ISOLATED'</code> world."
15899
+ },
15900
+ {
15901
+ "id": "RegisteredContentScript",
15902
+ "type": "object",
15903
+ "properties": {
15904
+ "allFrames": {
15905
+ "type": "boolean",
15906
+ "optional": true,
15907
+ "description": "If specified true, it will inject into all frames, even if the frame is not the top-most frame in the tab. Each frame is checked independently for URL requirements; it will not inject into child frames if the URL requirements are not met. Defaults to false, meaning that only the top frame is matched."
15908
+ },
15909
+ "excludeMatches": {
15910
+ "type": "array",
15911
+ "optional": true,
15912
+ "description": "Excludes pages that this content script would otherwise be injected into.",
15913
+ "items": {
15914
+ "type": "string"
15915
+ }
15916
+ },
15917
+ "id": {
15918
+ "type": "string",
15919
+ "description": "The id of the content script, specified in the API call."
15920
+ },
15921
+ "js": {
15922
+ "type": "array",
15923
+ "optional": true,
15924
+ "description": "The list of JavaScript files to be injected into matching pages. These are injected in the order they appear in this array.",
15925
+ "items": {
15926
+ "$ref": "manifest.ExtensionURL"
15927
+ }
15928
+ },
15929
+ "matches": {
15930
+ "type": "array",
15931
+ "optional": true,
15932
+ "description": "Specifies which pages this content script will be injected into. Must be specified for <code>registerContentScripts()</code>.",
15933
+ "items": {
15934
+ "type": "string"
15935
+ }
15936
+ },
15937
+ "runAt": {
15938
+ "$ref": "extensionTypes.RunAt",
15939
+ "optional": true,
15940
+ "description": "Specifies when JavaScript files are injected into the web page. The preferred and default value is <code>document_idle</code>."
15941
+ },
15942
+ "persistAcrossSessions": {
15943
+ "type": "boolean",
15944
+ "enum": [
15945
+ false
15946
+ ],
15947
+ "description": "Specifies if this content script will persist into future sessions. This is currently NOT supported."
15948
+ },
15949
+ "css": {
15950
+ "type": "array",
15951
+ "optional": true,
15952
+ "description": "The list of CSS files to be injected into matching pages. These are injected in the order they appear in this array.",
15953
+ "items": {
15954
+ "$ref": "manifest.ExtensionURL"
15955
+ }
15956
+ }
15957
+ }
15958
+ }
15959
+ ],
15960
+ "functions": [
15961
+ {
15962
+ "name": "executeScript",
15963
+ "type": "function",
15964
+ "description": "Injects a script into a target context. The script will be run at <code>document_idle</code>.",
15965
+ "async": "callback",
15966
+ "parameters": [
15967
+ {
15968
+ "name": "injection",
15969
+ "$ref": "ScriptInjection",
15970
+ "description": "The details of the script which to inject."
15971
+ },
15972
+ {
15973
+ "name": "callback",
15974
+ "type": "function",
15975
+ "description": "Invoked upon completion of the injection. The resulting array contains the result of execution for each frame where the injection succeeded.",
15976
+ "parameters": [
15977
+ {
15978
+ "name": "results",
15979
+ "type": "array",
15980
+ "items": {
15981
+ "$ref": "InjectionResult"
15982
+ }
15983
+ }
15984
+ ]
15985
+ }
15986
+ ]
15987
+ },
15988
+ {
15989
+ "name": "insertCSS",
15990
+ "type": "function",
15991
+ "description": "Inserts a CSS stylesheet into a target context. If multiple frames are specified, unsuccessful injections are ignored.",
15992
+ "async": "callback",
15993
+ "parameters": [
15994
+ {
15995
+ "name": "injection",
15996
+ "$ref": "CSSInjection",
15997
+ "description": "The details of the styles to insert."
15998
+ },
15999
+ {
16000
+ "name": "callback",
16001
+ "type": "function",
16002
+ "description": "Invoked upon completion of the injection.",
16003
+ "parameters": []
16004
+ }
16005
+ ]
16006
+ },
16007
+ {
16008
+ "name": "removeCSS",
16009
+ "type": "function",
16010
+ "description": "Removes a CSS stylesheet that was previously inserted by this extension from a target context.",
16011
+ "async": "callback",
16012
+ "parameters": [
16013
+ {
16014
+ "name": "injection",
16015
+ "$ref": "CSSInjection",
16016
+ "description": "The details of the styles to remove. Note that the <code>css</code>, <code>files</code>, and <code>origin</code> properties must exactly match the stylesheet inserted through <code>insertCSS</code>. Attempting to remove a non-existent stylesheet is a no-op."
16017
+ },
16018
+ {
16019
+ "name": "callback",
16020
+ "type": "function",
16021
+ "description": "Invoked upon completion of the injection.",
16022
+ "parameters": []
16023
+ }
16024
+ ]
16025
+ },
16026
+ {
16027
+ "name": "registerContentScripts",
16028
+ "type": "function",
16029
+ "description": "Registers one or more content scripts for this extension.",
16030
+ "async": "callback",
16031
+ "parameters": [
16032
+ {
16033
+ "name": "scripts",
16034
+ "type": "array",
16035
+ "description": "Contains a list of scripts to be registered. If there are errors during script parsing/file validation, or if the IDs specified already exist, then no scripts are registered.",
16036
+ "items": {
16037
+ "$ref": "RegisteredContentScript"
16038
+ }
16039
+ },
16040
+ {
16041
+ "name": "callback",
16042
+ "type": "function",
16043
+ "description": "Invoked upon completion of the registration.",
16044
+ "parameters": []
16045
+ }
16046
+ ]
16047
+ },
16048
+ {
16049
+ "name": "getRegisteredContentScripts",
16050
+ "type": "function",
16051
+ "description": "Returns all dynamically registered content scripts for this extension that match the given filter.",
16052
+ "async": "callback",
16053
+ "parameters": [
16054
+ {
16055
+ "name": "filter",
16056
+ "$ref": "ContentScriptFilter",
16057
+ "optional": true,
16058
+ "description": "An object to filter the extension's dynamically registered scripts."
16059
+ },
16060
+ {
16061
+ "name": "callback",
16062
+ "type": "function",
16063
+ "description": "The resulting array contains the registered content scripts.",
16064
+ "parameters": [
16065
+ {
16066
+ "name": "scripts",
16067
+ "type": "array",
16068
+ "items": {
16069
+ "$ref": "RegisteredContentScript"
16070
+ }
16071
+ }
16072
+ ]
16073
+ }
16074
+ ]
16075
+ },
16076
+ {
16077
+ "name": "unregisterContentScripts",
16078
+ "type": "function",
16079
+ "description": "Unregisters one or more content scripts for this extension.",
16080
+ "async": "callback",
16081
+ "parameters": [
16082
+ {
16083
+ "name": "filter",
16084
+ "$ref": "ContentScriptFilter",
16085
+ "optional": true,
16086
+ "description": "If specified, only unregisters dynamic content scripts which match the filter. Otherwise, all of the extension's dynamic content scripts are unregistered."
16087
+ },
16088
+ {
16089
+ "name": "callback",
16090
+ "type": "function",
16091
+ "description": "Invoked upon completion of the unregistration.",
16092
+ "parameters": []
16093
+ }
16094
+ ]
16095
+ },
16096
+ {
16097
+ "name": "updateContentScripts",
16098
+ "type": "function",
16099
+ "description": "Updates one or more content scripts for this extension.",
16100
+ "async": "callback",
16101
+ "parameters": [
16102
+ {
16103
+ "name": "scripts",
16104
+ "type": "array",
16105
+ "description": "Contains a list of scripts to be updated. If there are errors during script parsing/file validation, or if the IDs specified do not already exist, then no scripts are updated.",
16106
+ "items": {
16107
+ "type": "object",
16108
+ "$import": "RegisteredContentScript",
16109
+ "properties": {
16110
+ "persistAcrossSessions": {
16111
+ "type": "boolean",
16112
+ "optional": true,
16113
+ "enum": [
16114
+ false
16115
+ ],
16116
+ "description": "Specifies if this content script will persist into future sessions. This is currently NOT supported."
16117
+ }
16118
+ }
16119
+ }
16120
+ },
16121
+ {
16122
+ "name": "callback",
16123
+ "type": "function",
16124
+ "description": "Invoked when scripts have been updated.",
16125
+ "parameters": []
16126
+ }
16127
+ ]
16128
+ }
16129
+ ]
16130
+ }
16131
+ ],
16132
+ "storage.json": [
16133
+ {
16134
+ "namespace": "storage",
16135
+ "allowedContexts": [
16136
+ "content",
16137
+ "devtools"
16138
+ ],
16139
+ "defaultContexts": [
16140
+ "content",
16141
+ "devtools"
16142
+ ],
16143
+ "description": "Use the <code>browser.storage</code> API to store, retrieve, and track changes to user data.",
16144
+ "permissions": [
16145
+ "storage"
16146
+ ],
16147
+ "types": [
16148
+ {
16149
+ "id": "StorageChange",
16150
+ "type": "object",
16151
+ "properties": {
16152
+ "oldValue": {
16153
+ "type": "any",
16154
+ "description": "The old value of the item, if there was an old value.",
16155
+ "optional": true
16156
+ },
16157
+ "newValue": {
16158
+ "type": "any",
16159
+ "description": "The new value of the item, if there is a new value.",
16160
+ "optional": true
16161
+ }
16162
+ }
16163
+ },
16164
+ {
16165
+ "id": "StorageArea",
16166
+ "type": "object",
16167
+ "functions": [
16168
+ {
16169
+ "name": "get",
16170
+ "type": "function",
16171
+ "description": "Gets one or more items from storage.",
16172
+ "async": "callback",
16173
+ "parameters": [
16174
+ {
16175
+ "name": "keys",
16176
+ "choices": [
16177
+ {
16178
+ "type": "string"
16179
+ },
16180
+ {
16181
+ "type": "array",
16182
+ "items": {
16183
+ "type": "string"
16184
+ }
16185
+ },
16186
+ {
16187
+ "type": "object",
15777
16188
  "description": "Storage items to return in the callback, where the values are replaced with those from storage if they exist.",
15778
16189
  "additionalProperties": {
15779
16190
  "type": "any"
@@ -15905,6 +16316,23 @@
15905
16316
  }
15906
16317
  ]
15907
16318
  }
16319
+ ],
16320
+ "events": [
16321
+ {
16322
+ "name": "onChanged",
16323
+ "type": "function",
16324
+ "description": "Fired when one or more items change.",
16325
+ "parameters": [
16326
+ {
16327
+ "name": "changes",
16328
+ "type": "object",
16329
+ "additionalProperties": {
16330
+ "$ref": "StorageChange"
16331
+ },
16332
+ "description": "Object mapping each key that changed to its corresponding $(ref:storage.StorageChange) for that item."
16333
+ }
16334
+ ]
16335
+ }
15908
16336
  ]
15909
16337
  },
15910
16338
  {
@@ -16061,6 +16489,23 @@
16061
16489
  }
16062
16490
  ]
16063
16491
  }
16492
+ ],
16493
+ "events": [
16494
+ {
16495
+ "name": "onChanged",
16496
+ "type": "function",
16497
+ "description": "Fired when one or more items change.",
16498
+ "parameters": [
16499
+ {
16500
+ "name": "changes",
16501
+ "type": "object",
16502
+ "additionalProperties": {
16503
+ "$ref": "StorageChange"
16504
+ },
16505
+ "description": "Object mapping each key that changed to its corresponding $(ref:storage.StorageChange) for that item."
16506
+ }
16507
+ ]
16508
+ }
16064
16509
  ]
16065
16510
  }
16066
16511
  ],
@@ -16204,7 +16649,7 @@
16204
16649
  }
16205
16650
  },
16206
16651
  {
16207
- "$extend": "PermissionNoPrompt",
16652
+ "$extend": "PermissionPrivileged",
16208
16653
  "choices": [
16209
16654
  {
16210
16655
  "type": "string",
@@ -17211,6 +17656,10 @@
17211
17656
  "$ref": "ThemeColor",
17212
17657
  "optional": true
17213
17658
  },
17659
+ "ntp_card_background": {
17660
+ "$ref": "ThemeColor",
17661
+ "optional": true
17662
+ },
17214
17663
  "ntp_text": {
17215
17664
  "$ref": "ThemeColor",
17216
17665
  "optional": true
@@ -17289,6 +17738,26 @@
17289
17738
  },
17290
17739
  "maxItems": 15,
17291
17740
  "optional": true
17741
+ },
17742
+ "color_scheme": {
17743
+ "optional": true,
17744
+ "type": "string",
17745
+ "enum": [
17746
+ "auto",
17747
+ "light",
17748
+ "dark",
17749
+ "system"
17750
+ ]
17751
+ },
17752
+ "content_color_scheme": {
17753
+ "optional": true,
17754
+ "type": "string",
17755
+ "enum": [
17756
+ "auto",
17757
+ "light",
17758
+ "dark",
17759
+ "system"
17760
+ ]
17292
17761
  }
17293
17762
  },
17294
17763
  "additionalProperties": {
@@ -17612,6 +18081,7 @@
17612
18081
  "properties": {
17613
18082
  "user_scripts": {
17614
18083
  "type": "object",
18084
+ "max_manifest_version": 2,
17615
18085
  "optional": true,
17616
18086
  "properties": {
17617
18087
  "api_script": {
@@ -17629,6 +18099,7 @@
17629
18099
  },
17630
18100
  {
17631
18101
  "namespace": "userScripts",
18102
+ "max_manifest_version": 2,
17632
18103
  "permissions": [
17633
18104
  "manifest:user_scripts"
17634
18105
  ],
@@ -17699,6 +18170,22 @@
17699
18170
  "default": "document_idle",
17700
18171
  "optional": true,
17701
18172
  "description": "The soonest that the JavaScript will be injected into the tab. Defaults to \"document_idle\"."
18173
+ },
18174
+ "cookieStoreId": {
18175
+ "choices": [
18176
+ {
18177
+ "type": "array",
18178
+ "minItems": 1,
18179
+ "items": {
18180
+ "type": "string"
18181
+ }
18182
+ },
18183
+ {
18184
+ "type": "string"
18185
+ }
18186
+ ],
18187
+ "optional": true,
18188
+ "description": "limit the set of matched tabs to those that belong to the given cookie store id"
17702
18189
  }
17703
18190
  }
17704
18191
  },
@@ -17736,6 +18223,7 @@
17736
18223
  "user_scripts_content.json": [
17737
18224
  {
17738
18225
  "namespace": "userScripts",
18226
+ "max_manifest_version": 2,
17739
18227
  "permissions": [
17740
18228
  "manifest:user_scripts"
17741
18229
  ],
@@ -18415,7 +18903,8 @@
18415
18903
  "type": "string",
18416
18904
  "enum": [
18417
18905
  "webRequest",
18418
- "webRequestBlocking"
18906
+ "webRequestBlocking",
18907
+ "webRequestFilterResponse.serviceWorkerScript"
18419
18908
  ]
18420
18909
  }
18421
18910
  ]