1--- 2layout: default 3title: API Changelog 4description: GeckoView API Changelog. 5nav_exclude: true 6exclude: true 7--- 8 9{% capture javadoc_uri %}{{ site.url }}{{ site.baseurl}}/javadoc/mozilla-central/org/mozilla/geckoview{% endcapture %} 10{% capture bugzilla %}https://bugzilla.mozilla.org/show_bug.cgi?id={% endcapture %} 11 12# GeckoView API Changelog. 13 14⚠️ breaking change and deprecation notices 15 16## v78 17- Added [`WebExtensionController.installBuiltIn`][78.1] that allows installing an 18 extension that is bundled with the APK. This method is meant as a replacement 19 for [`GeckoRuntime.registerWebExtension`][67.15], ⚠️ which is now deprecated 20 and will be removed in GeckoView 81. 21- Added [`CookieBehavior.ACCEPT_FIRST_PARTY_AND_ISOLATE_OTHERS`][78.2] to allow 22 enabling dynamic first party isolation; this will block tracking cookies and 23 isolate all other third party cookies by keying them based on the first party 24 from which they are accessed. 25- Added `cookieStoreId` field to [`WebExtension.CreateTabDetails`][78.3]. This adds the optional 26 ability to create a tab with a given cookie store ID for its [`contextual identity`][78.4]. 27 ([bug 1622500]({{bugzilla}}1622500)) 28- Added [`NavigationDelegate.onSubframeLoadRequest`][78.5] to allow intercepting 29 non-top-level navigations. 30- Added [`BeforeUnloadPrompt`][78.6] to respond to prompts from onbeforeunload. 31- ⚠️ Refactored `LoginStorage` to the [`Autocomplete`][78.7] API to support 32 login form autocomplete delegation. 33 Refactored 'LoginStorage.Delegate' to ['Autocomplete.LoginStorageDelegate'][78.8]. 34 Refactored `GeckoSession.PromptDelegate.onLoginStoragePrompt` to 35 [`GeckoSession.PromptDelegate.onLoginSave`][78.9]. 36 Added [`GeckoSession.PromptDelegate.onLoginSelect`][78.10]. 37 ([bug 1618058]({{bugzilla}}1618058)) 38- Added [`GeckoRuntimeSettings#setLoginAutofillEnabled`][78.11] to control 39 whether login forms should be automatically filled in suitable situations. 40 41[78.1]: {{javadoc_uri}}/WebExtensionController.html#installBuiltIn-java.lang.String- 42[78.2]: {{javadoc_uri}}/ContentBlocking.CookieBehavior.html#ACCEPT_FIRST_PARTY_AND_ISOLATE_OTHERS 43[78.3]: {{javadoc_uri}}/WebExtension.CreateTabDetails.html 44[78.4]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities 45[78.5]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html#onSubframeLoadRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.NavigationDelegate.LoadRequest- 46[78.6]: {{javadoc_uri}}/GeckoSession.PromptDelegate.BeforeUnloadPrompt.html 47[78.7]: {{javadoc_uri}}/Autocomplete.html 48[78.8]: {{javadoc_uri}}/Autocomplete.LoginStorageDelegate.html 49[78.9]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onLoginSave-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.AutocompleteRequest- 50[78.10]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onLoginSelect-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.AutocompleteRequest- 51[78.11]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setLoginAutofillEnabled-boolean- 52 53## v77 54- Added [`GeckoRuntime.appendAppNotesToCrashReport`][77.1] For adding app notes to the crash report. 55 ([bug 1626979]({{bugzilla}}1626979)) 56- ⚠️ Remove the `DynamicToolbarAnimator` API along with accesors on `GeckoView` and `GeckoSession`. 57 ([bug 1627716]({{bugzilla}}1627716)) 58 59[77.1]: {{javadoc_uri}}/GeckoRuntime.html#appendAppNotesToCrashReport-java.lang.String- 60 61## v76 62- Added [`GeckoSession.PermissionDelegate.PERMISSION_MEDIA_KEY_SYSTEM_ACCESS`][76.1] to control EME media key access. 63- [`RuntimeTelemetry#getSnapshots`][68.10] is deprecated and will be removed 64 in 79. Use Glean to handle Gecko telemetry. 65 ([bug 1620395]({{bugzilla}}1620395)) 66- Added [`LoadRequest.isDirectNavigation`] to know when calls to 67 [`onLoadRequest`][76.3] originate from a direct navigation made by the app 68 itself. 69 ([bug 1624675]({{bugzilla}}1624675)) 70 71[76.1]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_MEDIA_KEY_SYSTEM_ACCESS 72[76.2]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.LoadRequest.html#isDirectNavigation 73[76.3]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html#onLoadRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.NavigationDelegate.LoadRequest- 74 75## v75 76- ⚠️ Remove `GeckoRuntimeSettings.Builder#useContentProcessHint`. The content 77 process is now preloaded by default if 78 [`GeckoRuntimeSettings.Builder#useMultiprocess`][75.1] is enabled. 79- ⚠️ Move `GeckoSessionSettings.Builder#useMultiprocess` to 80 [`GeckoRuntimeSettings.Builder#useMultiprocess`][75.1]. Multiprocess state is 81 no longer determined per session. 82- Added [`DebuggerDelegate#onExtensionListUpdated`][75.2] to notify that a temporary 83 extension has been installed by the debugger. 84 ([bug 1614295]({{bugzilla}}1614295)) 85- ⚠️ Removed [`GeckoRuntimeSettings.setAutoplayDefault`][75.3], use 86 [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_AUDIBLE`][73.12] and 87 [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_INAUDIBLE`][73.13] to 88 control autoplay. 89 ([bug 1614894]({{bugzilla}}1614894)) 90- Added [`GeckoSession.reload(int flags)`][75.4] That takes a [load flag][75.5] parameter. 91- ⚠️ Moved [`ActionDelegate`][75.6] and [`MessageDelegate`][75.7] to 92 [`SessionController`][75.8]. 93 ([bug 1616625]({{bugzilla}}1616625)) 94- Added [`SessionTabDelegate`][75.9] to [`SessionController`][75.8] and 95 [`TabDelegate`][75.10] to [`WebExtension`][69.5] which receive respectively 96 calls for the session and the runtime. `TabDelegate` is also now 97 per-`WebExtension` object instead of being global. The existing global 98 [`TabDelegate`][75.11] is now deprecated and will be removed in GeckoView 77. 99 ([bug 1616625]({{bugzilla}}1616625)) 100- Added [`SessionTabDelegate#onUpdateTab`][75.12] which is called whenever an 101 extension calls `tabs.update` on the corresponding `GeckoSession`. 102 [`TabDelegate#onCreateTab`][75.13] now takes a [`CreateTabDetails`][75.14] 103 object which contains additional information about the newly created tab 104 (including the `url` which used to be passed in directly). 105 ([bug 1616625]({{bugzilla}}1616625)) 106- Added [`GeckoRuntimeSettings.setWebManifestEnabled`][75.15], 107 [`GeckoRuntimeSettings.webManifest`][75.16], and 108 [`GeckoRuntimeSettings.getWebManifestEnabled`][75.17] 109 ([bug 1614894]({{bugzilla}}1603673)), to enable or check Web Manifest support. 110- Added [`GeckoDisplay.safeAreaInsetsChanged`][75.18] to notify the content of [safe area insets][75.19]. 111 ([bug 1503656]({{bugzilla}}1503656)) 112- Added [`GeckoResult#cancel()`][75.22], [`GeckoResult#setCancellationDelegate()`][75.22], 113 and [`GeckoResult.CancellationDelegate`][75.23]. This adds the optional ability to cancel 114 an operation behind a pending `GeckoResult`. 115- Added [`baseUrl`][75.24] to [`WebExtension.MetaData`][75.25] to expose the 116 base URL for all WebExtension pages for a given extension. 117 ([bug 1560048]({{bugzilla}}1560048)) 118- Added [`allowedInPrivateBrowsing`][75.26] and 119 [`setAllowedInPrivateBrowsing`][75.27] to control whether an extension can 120 run in private browsing or not. Extensions installed with 121 [`registerWebExtension`][67.15] will always be allowed to run in private 122 browsing. 123 ([bug 1599139]({{bugzilla}}1599139)) 124 125[75.1]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#useMultiprocess-boolean- 126[75.2]: {{javadoc_uri}}/WebExtensionController.DebuggerDelegate.html#onExtensionListUpdated-- 127[75.3]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#autoplayDefault-boolean- 128[75.4]: {{javadoc_uri}}/GeckoSession.html#reload-int- 129[75.5]: {{javadoc_uri}}/GeckoSession.html#LOAD_FLAGS_NONE 130[75.6]: {{javadoc_uri}}/WebExtension.ActionDelegate.html 131[75.7]: {{javadoc_uri}}/WebExtension.MessageDelegate.html 132[75.8]: {{javadoc_uri}}/WebExtension.SessionController.html 133[75.9]: {{javadoc_uri}}/WebExtension.SessionTabDelegate.html 134[75.10]: {{javadoc_uri}}/WebExtension.TabDelegate.html 135[75.11]: {{javadoc_uri}}/WebExtensionRuntime.TabDelegate.html 136[75.12]: {{javadoc_uri}}/WebExtension.SessionTabDelegate.html#onUpdateTab-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.WebExtension.UpdateTabDetails- 137[75.13]: {{javadoc_uri}}/WebExtension.TabDelegate.html#onNewTab-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.WebExtension.CreateTabDetails- 138[75.14]: {{javadoc_uri}}/WebExtension.CreateTabDetails.html 139[75.15]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#setWebManifestEnabled-boolean- 140[75.16]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#webManifest-boolean- 141[75.17]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#getWebManifestEnabled-- 142[75.18]: {{javadoc_uri}}/GeckoDisplay.html#safeAreaInsetsChanged-int-int-int-int- 143[75.19]: https://developer.mozilla.org/en-US/docs/Web/CSS/env 144[75.20]: {{javadoc_uri}}/WebExtension.InstallException.ErrorCodes.html#ERROR_POSTPONED- 145[75.21]: {{javadoc_uri}}/GeckoResult.html#cancel-- 146[75.22]: {{javadoc_uri}}/GeckoResult.html#setCancellationDelegate-CancellationDelegate- 147[75.23]: {{javadoc_uri}}/GeckoResult.CancellationDelegate.html 148[75.24]: {{javadoc_uri}}/WebExtension.MetaData.html#baseUrl 149[75.25]: {{javadoc_uri}}/WebExtension.MetaData.html 150[75.26]: {{javadoc_uri}}/WebExtension.MetaData.html#allowedInPrivateBrowsing 151[75.27]: {{javadoc_uri}}/WebExtensionController.html#setAllowedInPrivateBrowsing-org.mozilla.geckoview.WebExtension-boolean- 152 153## v74 154- Added [`WebExtensionController.enable`][74.1] and [`disable`][74.2] to 155 enable and disable extensions. 156 ([bug 1599585]({{bugzilla}}1599585)) 157- ⚠️ Added ['GeckoSession.ProgressDelegate.SecurityInformation#certificate'][74.3], which is the 158 full server certificate in use, if any. The other certificate-related fields were removed. 159 ([bug 1508730]({{bugzilla}}1508730)) 160- Added ['WebResponse#isSecure'][74.4], which indicates whether or not the response was 161 delivered over a secure connection. 162 ([bug 1508730]({{bugzilla}}1508730)) 163- Added ['WebResponse#certificate'][74.5], which is the server certificate used for the 164 response, if any. 165 ([bug 1508730]({{bugzilla}}1508730)) 166- Added ['WebRequestError#certificate'][74.6], which is the server certificate used in the 167 failed request, if any. 168 ([bug 1508730]({{bugzilla}}1508730)) 169- ⚠️ Updated [`ContentBlockingController`][74.7] to use new representation for content blocking 170 exceptions and to add better support for removing exceptions. This deprecates [`ExceptionList`][74.8] 171 and [`restoreExceptionList`][74.9] with the intent to remove them in 76. 172 ([bug 1587552]({{bugzilla}}1587552)) 173- Added [`GeckoSession.ContentDelegate.onMetaViewportFitChange`][74.10]. This exposes `viewport-fit` value that is CSS Round Display Level 1. ([bug 1574307]({{bugzilla}}1574307)) 174- Extended [`LoginStorage.Delegate`][74.11] with [`onLoginUsed`][74.12] to 175 report when existing login entries are used for autofill. 176 ([bug 1610353]({{bugzilla}}1610353)) 177- Added ['WebExtensionController#setTabActive'][74.13], which is used to notify extensions about 178 tab changes 179 ([bug 1597793]({{bugzilla}}1597793)) 180- Added ['WebExtension.metaData.optionsUrl'][74.14] and ['WebExtension.metaData.openOptionsPageInTab'][74.15], 181 which is the addon metadata necessary to show their option pages. 182 ([bug 1598792]({{bugzilla}}1598792)) 183- Added [`WebExtensionController.update`][74.16] to update extensions. ([bug 1599581]({{bugzilla}}1599581)) 184- ⚠️ Replaced `subscription` argument in [`WebPushDelegate.onSubscriptionChanged`][74.17] from a [`WebPushSubscription`][74.18] to the [`String`][74.19] `scope`. 185 186[74.1]: {{javadoc_uri}}/WebExtensionController.html#enable-org.mozilla.geckoview.WebExtension-int- 187[74.2]: {{javadoc_uri}}/WebExtensionController.html#disable-org.mozilla.geckoview.WebExtension-int- 188[74.3]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.SecurityInformation.html#certificate 189[74.4]: {{javadoc_uri}}/WebResponse.html#isSecure 190[74.5]: {{javadoc_uri}}/WebResponse.html#certificate 191[74.6]: {{javadoc_uri}}/WebRequestError.html#certificate 192[74.7]: {{javadoc_uri}}/ContentBlockingController.html 193[74.8]: {{javadoc_uri}}/ContentBlockingController.ExceptionList.html 194[74.9]: {{javadoc_uri}}/ContentBlockingController.html#restoreExceptionList-org.mozilla.geckoview.ContentBlockingController.ExceptionList- 195[74.10]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onMetaViewportFitChange-org.mozilla.geckoview.GeckoSession-java.lang.String- 196[74.11]: {{javadoc_uri}}/LoginStorage.Delegate.html 197[74.12]: {{javadoc_uri}}/LoginStorage.Delegate.html#onLoginUsed-org.mozilla.geckoview.LoginStorage.LoginEntry-int- 198[74.13]: {{javadoc_uri}}/WebExtensionController.html#setTabActive 199[74.14]: {{javadoc_uri}}/WebExtension.MetaData.html#optionsUrl 200[74.15]: {{javadoc_uri}}/WebExtension.MetaData.html#openOptionsPageInTab 201[74.16]: {{javadoc_uri}}/WebExtensionController.html#update-org.mozilla.geckoview.WebExtension-int- 202[74.17]: {{javadoc_uri}}/WebPushController.html#onSubscriptionChange-org.mozilla.geckoview.WebPushSubscription-byte:A- 203[74.18]: {{javadoc_uri}}/WebPushSubscription.html 204[74.19]: https://developer.android.com/reference/java/lang/String 205 206## v73 207- Added [`WebExtensionController.install`][73.1] and [`uninstall`][73.2] to 208 manage installed extensions 209- ⚠️ Renamed `ScreenLength.VIEWPORT_WIDTH`, `ScreenLength.VIEWPORT_HEIGHT`, 210 `ScreenLength.fromViewportWidth` and `ScreenLength.fromViewportHeight` to 211 [`ScreenLength.VISUAL_VIEWPORT_WIDTH`][73.3], 212 [`ScreenLength.VISUAL_VIEWPORT_HEIGHT`][73.4], 213 [`ScreenLength.fromVisualViewportWidth`][73.5] and 214 [`ScreenLength.fromVisualViewportHeight`][73.6] respectively. 215- Added the [`LoginStorage`][73.7] API. Apps may handle login fetch requests now by 216 attaching a [`LoginStorage.Delegate`][73.8] via 217 [`GeckoRuntime#setLoginStorageDelegate`][73.9] 218 ([bug 1602881]({{bugzilla}}1602881)) 219- ⚠️ [`WebExtension`][69.5]'s constructor now requires a `WebExtensionController` 220 instance. 221- Added [`GeckoResult.allOf`][73.10] for consuming a list of results. 222- Added [`WebExtensionController.list`][73.11] to list all installed extensions. 223- Added [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_AUDIBLE`][73.12] and 224 [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_INAUDIBLE`][73.13]. These control 225 autoplay permissions for audible and inaudible videos. 226 ([bug 1577596]({{bugzilla}}1577596)) 227- Added [`LoginStorage.Delegate.onLoginSave`][73.14] for login storage save 228 requests and [`GeckoSession.PromptDelegate.onLoginStoragePrompt`][73.15] for 229 login storage prompts. 230 ([bug 1599873]({{bugzilla}}1599873)) 231 232[73.1]: {{javadoc_uri}}/WebExtensionController.html#install-java.lang.String- 233[73.2]: {{javadoc_uri}}/WebExtensionController.html#uninstall-org.mozilla.geckoview.WebExtension- 234[73.3]: {{javadoc_uri}}/ScreenLength.html#VISUAL_VIEWPORT_WIDTH 235[73.4]: {{javadoc_uri}}/ScreenLength.html#VISUAL_VIEWPORT_HEIGHT 236[73.5]: {{javadoc_uri}}/ScreenLength.html#fromVisualViewportWidth-double- 237[73.6]: {{javadoc_uri}}/ScreenLength.html#fromVisualViewportHeight-double- 238[73.7]: {{javadoc_uri}}/LoginStorage.html 239[73.8]: {{javadoc_uri}}/LoginStorage.Delegate.html 240[73.9]: {{javadoc_uri}}/GeckoRuntime.html#setLoginStorageDelegate-org.mozilla.geckoview.LoginStorage.Delegate- 241[73.10]: {{javadoc_uri}}/GeckoResult.html#allOf-java.util.List- 242[73.11]: {{javadoc_uri}}/WebExtensionController.html#list-- 243[73.12]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_AUTOPLAY_AUDIBLE 244[73.13]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_AUTOPLAY_INAUDIBLE 245[73.14]: {{javadoc_uri}}/LoginStorage.Delegate.html#onLoginSave-org.mozilla.geckoview.LoginStorage.LoginEntry- 246[73.15]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onLoginStoragePrompt-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.LoginStoragePrompt- 247 248## v72 249- Added [`GeckoSession.NavigationDelegate.LoadRequest#hasUserGesture`][72.1]. This indicates 250 if a load was requested while a user gesture was active (e.g., a tap). 251 ([bug 1555337]({{bugzilla}}1555337)) 252- ⚠️ Refactored `AutofillElement` and `AutofillSupport` into the 253 [`Autofill`][72.2] API. 254 ([bug 1591462]({{bugzilla}}1591462)) 255- Make `read()` in the `InputStream` returned from [`WebResponse#body`][72.3] timeout according 256 to [`WebResponse#setReadTimeoutMillis()`][72.4]. The default timeout value is reflected in 257 [`WebResponse#DEFAULT_READ_TIMEOUT_MS`][72.5], currently 30s. 258 ([bug 1595145]({{bugzilla}}1595145)) 259- ⚠️ Removed `GeckoResponse` 260 ([bug 1581161]({{bugzilla}}1581161)) 261- ⚠️ Removed `actions` and `response` arguments from [`SelectionActionDelegate.onShowActionRequest`][72.6] 262 and [`BasicSelectionActionDelegate.onShowActionRequest`][72.7] 263 ([bug 1581161]({{bugzilla}}1581161)) 264- Added text selection action methods to [`SelectionActionDelegate.Selection`][72.8] 265 ([bug 1581161]({{bugzilla}}1581161)) 266- Added [`BasicSelectionActionDelegate.getSelection`][72.9] 267 ([bug 1581161]({{bugzilla}}1581161)) 268- Changed [`BasicSelectionActionDelegate.clearSelection`][72.10] to public. 269 ([bug 1581161]({{bugzilla}}1581161)) 270- Added `Autofill` commit support. 271 ([bug 1577005]({{bugzilla}}1577005)) 272- Added [`GeckoView.setViewBackend`][72.11] to set whether GeckoView should be 273 backed by a [`TextureView`][72.12] or a [`SurfaceView`][72.13]. 274 ([bug 1530402]({{bugzilla}}1530402)) 275- Added support for Browser and Page Action from the WebExtension API. 276 See [`WebExtension.Action`][72.14]. 277 ([bug 1530402]({{bugzilla}}1530402)) 278- ⚠️ Split [`ContentBlockingController.Event.LOADED_TRACKING_CONTENT`][72.15] into 279 [`ContentBlockingController.Event.LOADED_LEVEL_1_TRACKING_CONTENT`][72.16] and 280 [`ContentBlockingController.Event.LOADED_LEVEL_2_TRACKING_CONTENT`][72.17]. 281- Replaced `subscription` argument in [`WebPushDelegate.onPushEvent`][72.18] from a [`WebPushSubscription`][72.19] to the [`String`][72.20] `scope`. 282- ⚠️ Renamed `WebExtension.ActionIcon` to [`Icon`][72.21]. 283- Added ['GeckoWebExecutor#FETCH_FLAGS_STREAM_FAILURE_TEST'][72.22], which is a new 284 flag used to immediately fail when reading a `WebResponse` body. 285 ([bug 1594905]({{bugzilla}}1594905)) 286- Changed [`CrashReporter#sendCrashReport(Context, File, JSONObject)`][72.23] to 287 accept a JSON object instead of a Map. Said object also includes the 288 application name that was previously passed as the fourth argument to the 289 method, which was thus removed. 290- Added WebXR device access permission support, [`PERMISSION_PERSISTENT_XR`][72.24]. 291 ([bug 1599927]({{bugzilla}}1599927)) 292 293[72.1]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.LoadRequest#hasUserGesture- 294[72.2]: {{javadoc_uri}}/Autofill.html 295[72.3]: {{javadoc_uri}}/WebResponse.html#body 296[72.4]: {{javadoc_uri}}/WebResponse.html#setReadTimeoutMillis-long- 297[72.5]: {{javadoc_uri}}/WebResponse.html#DEFAULT_READ_TIMEOUT_MS 298[72.6]: {{javadoc_uri}}/GeckoSession.SelectionActionDelegate.html#onShowActionRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.SelectionActionDelegate.Selection- 299[72.7]: {{javadoc_uri}}/BasicSelectionActionDelegate.html#onShowActionRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.SelectionActionDelegate.Selection- 300[72.8]: {{javadoc_uri}}/GeckoSession.SelectionActionDelegate.Selection.html 301[72.9]: {{javadoc_uri}}/BasicSelectionActionDelegate.html#getSelection- 302[72.10]: {{javadoc_uri}}/BasicSelectionActionDelegate.html#clearSelection- 303[72.11]: {{javadoc_uri}}/GeckoView.html#setViewBackend-int- 304[72.12]: https://developer.android.com/reference/android/view/TextureView 305[72.13]: https://developer.android.com/reference/android/view/SurfaceView 306[72.14]: {{javadoc_uri}}/WebExtension.Action.html 307[72.15]: {{javadoc_uri}}/ContentBlockingController.Event.html#LOADED_TRACKING_CONTENT 308[72.16]: {{javadoc_uri}}/ContentBlockingController.Event.html#LOADED_LEVEL_1_TRACKING_CONTENT 309[72.17]: {{javadoc_uri}}/ContentBlockingController.Event.html#LOADED_LEVEL_2_TRACKING_CONTENT 310[72.18]: {{javadoc_uri}}/WebPushController.html#onPushEvent-org.mozilla.geckoview.WebPushSubscription-byte:A- 311[72.19]: {{javadoc_uri}}/WebPushSubscription.html 312[72.20]: https://developer.android.com/reference/java/lang/String 313[72.21]: {{javadoc_uri}}/WebExtension.Icon.html 314[72.22]: {{javadoc_uri}}/GeckoWebExecutor.html#FETCH_FLAGS_STREAM_FAILURE_TEST 315[72.23]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-java.io.File-org.json.JSONObject- 316[72.24]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_PERSISTENT_XR 317 318= 319## v71 320- Added a content blocking flag for blocked social cookies to [`ContentBlocking`][70.17]. 321 ([bug 1584479]({{bugzilla}}1584479)) 322- Added [`onBooleanScalar`][71.1], [`onLongScalar`][71.2], 323 [`onStringScalar`][71.3] to [`RuntimeTelemetry.Delegate`][70.12] to support 324 scalars in streaming telemetry. ⚠️ As part of this change, 325 `onTelemetryReceived` has been renamed to [`onHistogram`][71.4], and 326 [`Metric`][71.5] now takes a type parameter. 327 ([bug 1576730]({{bugzilla}}1576730)) 328- Added overloads of [`GeckoSession.loadUri`][71.6] that accept a map of 329 additional HTTP request headers. 330 ([bug 1567549]({{bugzilla}}1567549)) 331- Added support for exposing the content blocking log in [`ContentBlockingController`][71.7]. 332 ([bug 1580201]({{bugzilla}}1580201)) 333- ⚠️ Added `nativeApp` to [`WebExtension.MessageDelegate.onMessage`][71.8] which 334 exposes the native application identifier that was used to send the message. 335 ([bug 1546445]({{bugzilla}}1546445)) 336- Added [`GeckoRuntime.ServiceWorkerDelegate`][71.9] set via 337 [`setServiceWorkerDelegate`][71.10] to support [`ServiceWorkerClients.openWindow`][71.11] 338 ([bug 1511033]({{bugzilla}}1511033)) 339- Added [`GeckoRuntimeSettings.Builder#aboutConfigEnabled`][71.12] to control whether or 340 not `about:config` should be available. 341 ([bug 1540065]({{bugzilla}}1540065)) 342- Added [`GeckoSession.ContentDelegate.onFirstContentfulPaint`][71.13] 343 ([bug 1578947]({{bugzilla}}1578947)) 344- Added `setEnhancedTrackingProtectionLevel` to [`ContentBlocking.Settings`][71.14]. 345 ([bug 1580854]({{bugzilla}}1580854)) 346- ⚠️ Added [`GeckoView.onTouchEventForResult`][71.15] and modified 347 [`PanZoomController.onTouchEvent`][71.16] to return how the touch event was handled. This 348 allows apps to know if an event is handled by touch event listeners in web content. The methods in `PanZoomController` now return `int` instead of `boolean`. 349- Added [`GeckoSession.purgeHistory`][71.17] allowing apps to clear a session's history. 350 ([bug 1583265]({{bugzilla}}1583265)) 351- Added [`GeckoRuntimeSettings.Builder#forceUserScalableEnabled`][71.18] to control whether or 352 not to force user scalable zooming. 353 ([bug 1540615]({{bugzilla}}1540615)) 354- ⚠️ Moved Autofill related methods from `SessionTextInput` and `GeckoSession.TextInputDelegate` 355 into `GeckoSession` and `AutofillDelegate`. 356- Added [`GeckoSession.getAutofillElements()`][71.19], which is a new method for getting 357 an autofill virtual structure without using `ViewStructure`. It relies on a new class, 358 [`AutofillElement`][71.20], for representing the virtual tree. 359- Added [`GeckoView.setAutofillEnabled`][71.21] for controlling whether or not the `GeckoView` 360 instance participates in Android autofill. When enabled, this connects an `AutofillDelegate` 361 to the session it holds. 362- Changed [`AutofillElement.children`][71.20] interface to `Collection` to provide 363 an efficient way to pre-allocate memory when filling `ViewStructure`. 364- Added [`GeckoSession.PromptDelegate.onSharePrompt`][71.22] to support the WebShare API. 365 ([bug 1402369]({{bugzilla}}1402369)) 366- Added [`GeckoDisplay.screenshot`][71.23] allowing apps finer grain control over screenshots. 367 ([bug 1577192]({{bugzilla}}1577192)) 368- Added `GeckoView.setDynamicToolbarMaxHeight` to make ICB size static, ICB doesn't include the dynamic toolbar region. 369 ([bug 1586144]({{bugzilla}}1586144)) 370 371[71.1]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onBooleanScalar-org.mozilla.geckoview.RuntimeTelemetry.Metric- 372[71.2]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onLongScalar-org.mozilla.geckoview.RuntimeTelemetry.Metric- 373[71.3]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onStringScalar-org.mozilla.geckoview.RuntimeTelemetry.Metric- 374[71.4]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onHistogram-org.mozilla.geckoview.RuntimeTelemetry.Metric- 375[71.5]: {{javadoc_uri}}/RuntimeTelemetry.Metric.html 376[71.6]: {{javadoc_uri}}/GeckoSession.html#loadUri-java.lang.String-java.io.File-java.util.Map- 377[71.7]: {{javadoc_uri}}/ContentBlockingController.html 378[71.8]: {{javadoc_uri}}/WebExtension.MessageDelegate.html#onMessage-java.lang.String-java.lang.Object-org.mozilla.geckoview.WebExtension.MessageSender- 379[71.9]: {{javadoc_uri}}/GeckoRuntime.ServiceWorkerDelegate.html 380[71.10]: {{javadoc_uri}}/GeckoRuntime#setServiceWorkerDelegate-org.mozilla.geckoview.GeckoRuntime.ServiceWorkerDelegate- 381[71.11]: https://developer.mozilla.org/en-US/docs/Web/API/Clients/openWindow 382[71.12]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#aboutConfigEnabled-boolean- 383[71.13]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onFirstContentfulPaint-org.mozilla.geckoview.GeckoSession- 384[71.15]: {{javadoc_uri}}/GeckoView.html#onTouchEventForResult-android.view.MotionEvent- 385[71.16]: {{javadoc_uri}}/PanZoomController.html#onTouchEvent-android.view.MotionEvent- 386[71.17]: {{javadoc_uri}}/GeckoSession.html#purgeHistory-- 387[71.18]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#forceUserScalableEnabled-boolean- 388[71.19]: {{javadoc_uri}}/GeckoSession.html#getAutofillElements-- 389[71.20]: {{javadoc_uri}}/AutofillElement.html 390[71.21]: {{javadoc_uri}}/GeckoView.html#setAutofillEnabled-boolean- 391[71.22]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onSharePrompt-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.SharePrompt- 392[71.23]: {{javadoc_uri}}/GeckoDisplay.html#screenshot-- 393 394## v70 395- Added API for session context assignment 396 [`GeckoSessionSettings.Builder.contextId`][70.1] and deletion of data related 397 to a session context [`StorageController.clearDataForSessionContext`][70.2]. 398 ([bug 1501108]({{bugzilla}}1501108)) 399- Removed `setSession(session, runtime)` from [`GeckoView`][70.5]. With this 400 change, `GeckoView` will no longer manage opening/closing of the 401 [`GeckoSession`][70.6] and instead leave that up to the app. It's also now 402 allowed to call [`setSession`][70.10] with a closed `GeckoSession`. 403 ([bug 1510314]({{bugzilla}}1510314)) 404- Added an overload of [`GeckoSession.loadUri()`][70.8] that accepts a 405 referring [`GeckoSession`][70.6]. This should be used when the URI we're 406 loading originates from another page. A common example of this would be long 407 pressing a link and then opening that in a new `GeckoSession`. 408 ([bug 1561079]({{bugzilla}}1561079)) 409- Added capture parameter to [`onFilePrompt`][70.9] and corresponding 410 [`CAPTURE_TYPE_*`][70.7] constants. 411 ([bug 1553603]({{bugzilla}}1553603)) 412- Removed the obsolete `success` parameter from 413 [`CrashReporter#sendCrashReport(Context, File, File, String)`][70.3] and 414 [`CrashReporter#sendCrashReport(Context, File, Map, String)`][70.4]. 415 ([bug 1570789]({{bugzilla}}1570789)) 416- Add `GeckoSession.LOAD_FLAGS_REPLACE_HISTORY`. 417 ([bug 1571088]({{bugzilla}}1571088)) 418- Complete rewrite of [`PromptDelegate`][70.11]. 419 ([bug 1499394]({{bugzilla}}1499394)) 420- Added [`RuntimeTelemetry.Delegate`][70.12] that receives streaming telemetry 421 data from GeckoView. 422 ([bug 1566367]({{bugzilla}}1566367)) 423- Updated [`ContentBlocking`][70.13] to better report blocked and allowed ETP events. 424 ([bug 1567268]({{bugzilla}}1567268)) 425- Added API for controlling Gecko logging [`GeckoRuntimeSettings.debugLogging`][70.14] 426 ([bug 1573304]({{bugzilla}}1573304)) 427- Added [`WebNotification`][70.15] and [`WebNotificationDelegate`][70.16] for handling Web Notifications. 428 ([bug 1533057]({{bugzilla}}1533057)) 429- Added Social Tracking Protection support to [`ContentBlocking`][70.17]. 430 ([bug 1568295]({{bugzilla}}1568295)) 431- Added [`WebExtensionController`][70.18] and [`WebExtensionController.TabDelegate`][70.19] to handle 432 [`browser.tabs.create`][70.20] calls by WebExtensions. 433 ([bug 1539144]({{bugzilla}}1539144)) 434- Added [`onCloseTab`][70.21] to [`WebExtensionController.TabDelegate`][70.19] to handle 435 [`browser.tabs.remove`][70.22] calls by WebExtensions. 436 ([bug 1565782]({{bugzilla}}1565782)) 437- Added onSlowScript to [`ContentDelegate`][70.23] which allows handling of slow and hung scripts. 438 ([bug 1621094]({{bugzilla}}1621094)) 439- Added support for Web Push via [`WebPushController`][70.24], [`WebPushDelegate`][70.25], and 440 [`WebPushSubscription`][70.26]. 441- Added [`ContentBlockingController`][70.27], accessible via [`GeckoRuntime.getContentBlockingController`][70.28] 442 to allow modification and inspection of a content blocking exception list. 443 444[70.1]: {{javadoc_uri}}/GeckoSessionSettings.Builder.html#contextId-java.lang.String- 445[70.2]: {{javadoc_uri}}/StorageController.html#clearDataForSessionContext-java.lang.String- 446[70.3]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-java.io.File-java.io.File-java.lang.String- 447[70.4]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-java.io.File-java.util.Map-java.lang.String- 448[70.5]: {{javadoc_uri}}/GeckoView.html 449[70.6]: {{javadoc_uri}}/GeckoSession.html 450[70.7]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#CAPTURE_TYPE_NONE 451[70.8]: {{javadoc_uri}}/GeckoSession.html#loadUri-java.lang.String-org.mozilla.geckoview.GeckoSession-int- 452[70.9]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onFilePrompt-org.mozilla.geckoview.GeckoSession-java.lang.String-int-java.lang.String:A-int-org.mozilla.geckoview.GeckoSession.PromptDelegate.FileCallback- 453[70.10]: {{javadoc_uri}}/GeckoView.html#setSession-org.mozilla.geckoview.GeckoSession- 454[70.11]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html 455[70.12]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html 456[70.13]: {{javadoc_uri}}/ContentBlocking.html 457[70.14]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#debugLogging-boolean- 458[70.15]: {{javadoc_uri}}/WebNotification.html 459[70.16]: {{javadoc_uri}}/WebNotificationDelegate.html 460[70.17]: {{javadoc_uri}}/ContentBlocking.html 461[70.18]: {{javadoc_uri}}/WebExtensionController.html 462[70.19]: {{javadoc_uri}}/WebExtensionController.TabDelegate.html 463[70.20]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create 464[70.21]: {{javadoc_uri}}/WebExtensionController.TabDelegate.html#onCloseTab-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.GeckoSession- 465[70.22]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/remove 466[70.23]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html 467[70.24]: {{javadoc_uri}}/WebPushController.html 468[70.25]: {{javadoc_uri}}/WebPushDelegate.html 469[70.26]: {{javadoc_uri}}/WebPushSubscription.html 470[70.27]: {{javadoc_uri}}/ContentBlockingController.html 471[70.28]: {{javadoc_uri}}/GeckoRuntime.html#getContentBlockingController-- 472 473## v69 474- Modified behavior of ['setAutomaticFontSizeAdjustment'][69.1] so that it no 475 longer has any effect on ['setFontInflationEnabled'][69.2] 476- Add [GeckoSession.LOAD_FLAGS_FORCE_ALLOW_DATA_URI][69.14] 477- Added [`GeckoResult.accept`][69.3] for consuming a result without 478 transforming it. 479- [`GeckoSession.setMessageDelegate`][69.13] callers must now specify the 480 [`WebExtension`][69.5] that the [`MessageDelegate`][69.4] will receive 481 messages from. 482- Created [`onKill`][69.7] to [`ContentDelegate`][69.11] to differentiate from crashes. 483 484[69.1]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutomaticFontSizeAdjustment-boolean- 485[69.2]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setFontInflationEnabled-boolean- 486[69.3]: {{javadoc_uri}}/GeckoResult.html#accept-org.mozilla.geckoview.GeckoResult.Consumer- 487[69.4]: {{javadoc_uri}}/WebExtension.MessageDelegate.html 488[69.5]: {{javadoc_uri}}/WebExtension.html 489[69.7]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onKill-org.mozilla.geckoview.GeckoSession- 490[69.11]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html 491[69.13]: {{javadoc_uri}}/GeckoSession.html#setMessageDelegate-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.WebExtension.MessageDelegate-java.lang.String- 492[69.14]: {{javadoc_uri}}/GeckoSession.html#LOAD_FLAGS_FORCE_ALLOW_DATA_URI 493 494## v68 495- Added [`GeckoRuntime#configurationChanged`][68.1] to notify the device 496 configuration has changed. 497- Added [`onSessionStateChange`][68.29] to [`ProgressDelegate`][68.2] and removed `saveState`. 498- Added [`ContentBlocking#AT_CRYPTOMINING`][68.3] for cryptocurrency miner blocking. 499- Added [`ContentBlocking#AT_DEFAULT`][68.4], [`ContentBlocking#AT_STRICT`][68.5], 500 [`ContentBlocking#CB_DEFAULT`][68.6] and [`ContentBlocking#CB_STRICT`][68.7] 501 for clearer app default selections. 502- Added [`GeckoSession.SessionState.fromString`][68.8]. This can be used to 503 deserialize a `GeckoSession.SessionState` instance previously serialized to 504 a `String` via `GeckoSession.SessionState.toString`. 505- Added [`GeckoRuntimeSettings#setPreferredColorScheme`][68.9] to override 506 the default color theme for web content ("light" or "dark"). 507- Added [`@NonNull`][66.1] or [`@Nullable`][66.2] to all fields. 508- [`RuntimeTelemetry#getSnapshots`][68.10] returns a [`JSONObject`][68.30] now. 509- Removed all `org.mozilla.gecko` references in the API. 510- Added [`ContentBlocking#AT_FINGERPRINTING`][68.11] to block fingerprinting trackers. 511- Added [`HistoryItem`][68.31] and [`HistoryList`][68.32] interfaces and [`onHistoryStateChange`][68.34] to 512 [`HistoryDelegate`][68.12] and added [`gotoHistoryIndex`][68.33] to [`GeckoSession`][68.13]. 513- [`GeckoView`][70.5] will not create a [`GeckoSession`][65.9] anymore when 514 attached to a window without a session. 515- Added [`GeckoRuntimeSettings.Builder#configFilePath`][68.16] to set 516 a path to a configuration file from which GeckoView will read 517 configuration options such as Gecko process arguments, environment 518 variables, and preferences. 519- Added [`unregisterWebExtension`][68.17] to unregister a web extension. 520- Added messaging support for WebExtension. [`setMessageDelegate`][68.18] 521 allows embedders to listen to messages coming from a WebExtension. 522 [`Port`][68.19] allows bidirectional communication between the embedder and 523 the WebExtension. 524- Expose the following prefs in [`GeckoRuntimeSettings`][67.3]: 525 [`setAutoZoomEnabled`][68.20], [`setDoubleTapZoomingEnabled`][68.21], 526 [`setGlMsaaLevel`][68.22]. 527- Added new constant for requesting external storage Android permissions, [`PERMISSION_PERSISTENT_STORAGE`][68.35] 528- Added `setVerticalClipping` to [`GeckoDisplay`][68.24] and 529 [`GeckoView`][68.23] to tell Gecko how much of its vertical space is clipped. 530- Added [`StorageController`][68.25] API for clearing data. 531- Added [`onRecordingStatusChanged`][68.26] to [`MediaDelegate`][68.27] to handle events related to the status of recording devices. 532- Removed redundant constants in [`MediaSource`][68.28] 533 534[68.1]: {{javadoc_uri}}/GeckoRuntime.html#configurationChanged-android.content.res.Configuration- 535[68.2]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.html 536[68.3]: {{javadoc_uri}}/ContentBlocking.html#AT_CRYPTOMINING 537[68.4]: {{javadoc_uri}}/ContentBlocking.html#AT_DEFAULT 538[68.5]: {{javadoc_uri}}/ContentBlocking.html#AT_STRICT 539[68.6]: {{javadoc_uri}}/ContentBlocking.html#CB_DEFAULT 540[68.7]: {{javadoc_uri}}/ContentBlocking.html#CB_STRICT 541[68.8]: {{javadoc_uri}}/GeckoSession.SessionState.html#fromString-java.lang.String- 542[68.9]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setPreferredColorScheme-int- 543[68.10]: {{javadoc_uri}}/RuntimeTelemetry.html#getSnapshots-boolean- 544[68.11]: {{javadoc_uri}}/ContentBlocking.html#AT_FINGERPRINTING 545[68.12]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.html 546[68.13]: {{javadoc_uri}}/GeckoSession.html 547[68.16]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#configFilePath-java.lang.String- 548[68.17]: {{javadoc_uri}}/GeckoRuntime.html#unregisterWebExtension-org.mozilla.geckoview.WebExtension- 549[68.18]: {{javadoc_uri}}/WebExtension.html#setMessageDelegate-org.mozilla.geckoview.WebExtension.MessageDelegate-java.lang.String- 550[68.19]: {{javadoc_uri}}/WebExtension.Port.html 551[68.20]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutoZoomEnabled-boolean- 552[68.21]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setDoubleTapZoomingEnabled-boolean- 553[68.22]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setGlMsaaLevel-int- 554[68.23]: {{javadoc_uri}}/GeckoView.html#setVerticalClipping-int- 555[68.24]: {{javadoc_uri}}/GeckoDisplay.html#setVerticalClipping-int- 556[68.25]: {{javadoc_uri}}/StorageController.html 557[68.26]: {{javadoc_uri}}/GeckoSession.MediaDelegate.html#onRecordingStatusChanged-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.MediaDelegate.RecordingDevice:A- 558[68.27]: {{javadoc_uri}}/GeckoSession.MediaDelegate.html 559[68.28]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.MediaSource.html 560[68.29]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.html#onSessionStateChange-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.SessionState- 561[68.30]: https://developer.android.com/reference/org/json/JSONObject 562[68.31]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.HistoryItem.html 563[68.32]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.HistoryList.html 564[68.33]: {{javadoc_uri}}/GeckoSession.html#gotoHistoryIndex-int- 565[68.34]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.html#onHistoryStateChange-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.HistoryDelegate.HistoryList- 566[68.35]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_PERSISTENT_STORAGE 567 568## v67 569- Added [`setAutomaticFontSizeAdjustment`][67.23] to 570 [`GeckoRuntimeSettings`][67.3] for automatically adjusting font size settings 571 depending on the OS-level font size setting. 572- Added [`setFontSizeFactor`][67.4] to [`GeckoRuntimeSettings`][67.3] for 573 setting a font size scaling factor, and for enabling font inflation for 574 non-mobile-friendly pages. 575- Updated video autoplay API to reflect changes in Gecko. Instead of being a 576 per-video permission in the [`PermissionDelegate`][67.5], it is a [runtime 577 setting][67.6] that either allows or blocks autoplay videos. 578- Change [`ContentBlocking.AT_AD`][67.7] and [`ContentBlocking.SB_ALL`][67.8] 579 values to mirror the actual constants they encompass. 580- Added nested [`ContentBlocking`][67.9] runtime settings. 581- Added [`RuntimeSettings`][67.10] base class to support nested settings. 582- Added [`baseUri`][67.11] to [`ContentDelegate.ContextElement`][65.21] and 583 changed [`linkUri`][67.12] to absolute form. 584- Added [`scrollBy`][67.13] and [`scrollTo`][67.14] to [`PanZoomController`][65.4]. 585- Added [`GeckoSession.getDefaultUserAgent`][67.1] to expose the build-time 586 default user agent synchronously. 587- Changed [`WebResponse.body`][67.24] from a [`ByteBuffer`][67.25] to an [`InputStream`][67.26]. Apps that want access 588 to the entire response body will now need to read the stream themselves. 589- Added [`GeckoWebExecutor.FETCH_FLAGS_NO_REDIRECTS`][67.27], which will cause [`GeckoWebExecutor.fetch()`][67.28] to not 590 automatically follow [HTTP redirects][67.29] (e.g., 302). 591- Moved [`GeckoVRManager`][67.2] into the org.mozilla.geckoview package. 592- Initial WebExtension support. [`GeckoRuntime#registerWebExtension`][67.15] 593 allows embedders to register a local web extension. 594- Added API to [`GeckoView`][70.5] to take screenshot of the visible page. Calling [`capturePixels`][67.16] returns a ['GeckoResult'][65.25] that completes to a [`Bitmap`][67.17] of the current [`Surface`][67.18] contents, or an [`IllegalStateException`][67.19] if the [`GeckoSession`][65.9] is not ready to render content. 595- Added API to capture a screenshot to [`GeckoDisplay`][67.20]. [`capturePixels`][67.21] returns a ['GeckoResult'][65.25] that completes to a [`Bitmap`][67.16] of the current [`Surface`][67.17] contents, or an [`IllegalStateException`][67.18] if the [`GeckoSession`][65.9] is not ready to render content. 596- Add missing [`@Nullable`][66.2] annotation to return value for 597 [`GeckoSession.PromptDelegate.ChoiceCallback.onPopupResult()`][67.30] 598- Added `default` implementations for all non-functional `interface`s. 599- Added [`ContentDelegate.onWebAppManifest`][67.22], which will deliver the contents of a parsed 600 and validated Web App Manifest on pages that contain one. 601 602[67.1]: {{javadoc_uri}}/GeckoSession.html#getDefaultUserAgent-- 603[67.2]: {{javadoc_uri}}/GeckoVRManager.html 604[67.3]: {{javadoc_uri}}/GeckoRuntimeSettings.html 605[67.4]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setFontSizeFactor-float- 606[67.5]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html 607[67.6]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutoplayDefault-int- 608[67.7]: {{javadoc_uri}}/ContentBlocking.html#AT_AD 609[67.8]: {{javadoc_uri}}/ContentBlocking.html#SB_ALL 610[67.9]: {{javadoc_uri}}/ContentBlocking.html 611[67.10]: {{javadoc_uri}}/RuntimeSettings.html 612[67.11]: {{javadoc_uri}}/GeckoSession.ContentDelegate.ContextElement.html#baseUri 613[67.12]: {{javadoc_uri}}/GeckoSession.ContentDelegate.ContextElement.html#linkUri 614[67.13]: {{javadoc_uri}}/PanZoomController.html#scrollBy-org.mozilla.geckoview.ScreenLength-org.mozilla.geckoview.ScreenLength- 615[67.14]: {{javadoc_uri}}/PanZoomController.html#scrollTo-org.mozilla.geckoview.ScreenLength-org.mozilla.geckoview.ScreenLength- 616[67.15]: {{javadoc_uri}}/GeckoRuntime.html#registerWebExtension-org.mozilla.geckoview.WebExtension- 617[67.16]: {{javadoc_uri}}/GeckoView.html#capturePixels-- 618[67.17]: https://developer.android.com/reference/android/graphics/Bitmap 619[67.18]: https://developer.android.com/reference/android/view/Surface 620[67.19]: https://developer.android.com/reference/java/lang/IllegalStateException 621[67.20]: {{javadoc_uri}}/GeckoDisplay.html 622[67.21]: {{javadoc_uri}}/GeckoDisplay.html#capturePixels-- 623[67.22]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onWebAppManifest-org.mozilla.geckoview.GeckoSession-org.json.JSONObject- 624[67.23]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutomaticFontSizeAdjustment-boolean- 625[67.24]: {{javadoc_uri}}/WebResponse.html#body 626[67.25]: https://developer.android.com/reference/java/nio/ByteBuffer 627[67.26]: https://developer.android.com/reference/java/io/InputStream 628[67.27]: {{javadoc_uri}}/GeckoWebExecutor.html#FETCH_FLAGS_NO_REDIRECTS 629[67.28]: {{javadoc_uri}}/GeckoWebExecutor.html#fetch-org.mozilla.geckoview.WebRequest-int- 630[67.29]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections 631[67.30]: {{javadoc_uri}}/GeckoSession.PromptDelegate.ChoiceCallback.html 632 633## v66 634- Removed redundant field `trackingMode` from [`SecurityInformation`][66.6]. 635 Use `TrackingProtectionDelegate.onTrackerBlocked` for notification of blocked 636 elements during page load. 637- Added [`@NonNull`][66.1] or [`@Nullable`][66.2] to all APIs. 638- Added methods for each setting in [`GeckoSessionSettings`][66.3] 639- Added [`GeckoSessionSettings`][66.4] for enabling desktop viewport. Desktop 640 viewport is no longer set by [`USER_AGENT_MODE_DESKTOP`][66.5] and must be set 641 separately. 642- Added [`@UiThread`][65.6] to [`GeckoSession.releaseSession`][66.7] and 643 [`GeckoSession.setSession`][66.8] 644 645[66.1]: https://developer.android.com/reference/android/support/annotation/NonNull 646[66.2]: https://developer.android.com/reference/android/support/annotation/Nullable 647[66.3]: {{javadoc_uri}}/GeckoSessionSettings.html 648[66.4]: {{javadoc_uri}}/GeckoSessionSettings.html 649[66.5]: {{javadoc_uri}}/GeckoSessionSettings.html#USER_AGENT_MODE_DESKTOP 650[66.6]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.SecurityInformation.html 651[66.7]: {{javadoc_uri}}/GeckoView.html#releaseSession-- 652[66.8]: {{javadoc_uri}}/GeckoView.html#setSession-org.mozilla.geckoview.GeckoSession- 653 654## v65 655- Added experimental ad-blocking category to `GeckoSession.TrackingProtectionDelegate`. 656- Moved [`CompositorController`][65.1], [`DynamicToolbarAnimator`][65.2], 657 [`OverscrollEdgeEffect`][65.3], [`PanZoomController`][65.4] from 658 `org.mozilla.gecko.gfx` to [`org.mozilla.geckoview`][65.5] 659- Added [`@UiThread`][65.6], [`@AnyThread`][65.7] annotations to all APIs 660- Changed `GeckoRuntimeSettings#getLocale` to [`getLocales`][65.8] and related 661 APIs. 662- Merged `org.mozilla.gecko.gfx.LayerSession` into [`GeckoSession`][65.9] 663- Added [`GeckoSession.MediaDelegate`][65.10] and [`MediaElement`][65.11]. This 664 allow monitoring and control of web media elements (play, pause, seek, etc). 665- Removed unused `access` parameter from 666 [`GeckoSession.PermissionDelegate#onContentPermissionRequest`][65.12] 667- Added [`WebMessage`][65.13], [`WebRequest`][65.14], [`WebResponse`][65.15], 668 and [`GeckoWebExecutor`][65.16]. This exposes Gecko networking to apps. It 669 includes speculative connections, name resolution, and a Fetch-like HTTP API. 670- Added [`GeckoSession.HistoryDelegate`][65.17]. This allows apps to implement 671 their own history storage system and provide visited link status. 672- Added [`ContentDelegate#onFirstComposite`][65.18] to get first composite 673 callback after a compositor start. 674- Changed `LoadRequest.isUserTriggered` to [`isRedirect`][65.19]. 675- Added [`GeckoSession.LOAD_FLAGS_BYPASS_CLASSIFIER`][65.20] to bypass the URI 676 classifier. 677- Added a `protected` empty constructor to all field-only classes so that apps 678 can mock these classes in tests. 679- Added [`ContentDelegate.ContextElement`][65.21] to extend the information 680 passed to [`ContentDelegate#onContextMenu`][65.22]. Extended information 681 includes the element's title and alt attributes. 682- Changed [`ContentDelegate.ContextElement`][65.21] `TYPE_` constants to public 683 access. 684- Changed [`ContentDelegate.ContextElement`][65.21], 685 [`GeckoSession.FinderResult`][65.23] to non-final class. 686- Update [`CrashReporter#sendCrashReport`][65.24] to return the crash ID as a 687 [`GeckoResult<String>`][65.25]. 688 689[65.1]: {{javadoc_uri}}/CompositorController.html 690[65.2]: {{javadoc_uri}}/DynamicToolbarAnimator.html 691[65.3]: {{javadoc_uri}}/OverscrollEdgeEffect.html 692[65.4]: {{javadoc_uri}}/PanZoomController.html 693[65.5]: {{javadoc_uri}}/package-summary.html 694[65.6]: https://developer.android.com/reference/android/support/annotation/UiThread 695[65.7]: https://developer.android.com/reference/android/support/annotation/AnyThread 696[65.8]: {{javadoc_uri}}/GeckoRuntimeSettings.html#getLocales-- 697[65.9]: {{javadoc_uri}}/GeckoSession.html 698[65.10]: {{javadoc_uri}}/GeckoSession.MediaDelegate.html 699[65.11]: {{javadoc_uri}}/MediaElement.html 700[65.12]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#onContentPermissionRequest-org.mozilla.geckoview.GeckoSession-java.lang.String-int-org.mozilla.geckoview.GeckoSession.PermissionDelegate.Callback- 701[65.13]: {{javadoc_uri}}/WebMessage.html 702[65.14]: {{javadoc_uri}}/WebRequest.html 703[65.15]: {{javadoc_uri}}/WebResponse.html 704[65.16]: {{javadoc_uri}}/GeckoWebExecutor.html 705[65.17]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.html 706[65.18]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onFirstComposite-org.mozilla.geckoview.GeckoSession- 707[65.19]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.LoadRequest.html#isRedirect 708[65.20]: {{javadoc_uri}}/GeckoSession.html#LOAD_FLAGS_BYPASS_CLASSIFIER 709[65.21]: {{javadoc_uri}}/GeckoSession.ContentDelegate.ContextElement.html 710[65.22]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onContextMenu-org.mozilla.geckoview.GeckoSession-int-int-org.mozilla.geckoview.GeckoSession.ContentDelegate.ContextElement- 711[65.23]: {{javadoc_uri}}/GeckoSession.FinderResult.html 712[65.24]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-android.os.Bundle-java.lang.String- 713[65.25]: {{javadoc_uri}}/GeckoResult.html 714 715[api-version]: f334c3c72b512156da2d96b2d2e7bbf4392c0b0e 716