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## v91 17- Extended [`Autocomplete`][78.7] API to support addresses. 18 ([bug 1699794]({{bugzilla}}1699794)). 19- Added [`clearDataFromBaseDomain`][91.1] to [`StorageController`][90.2] for 20 clearing site data by base domain. This includes data of associated subdomains 21 and data partitioned via [`State Partitioning`][91.3]. 22- Removed deprecated `MediaElement` API. 23 24[91.1]: {{javadoc_uri}}/StorageController.html#clearDataFromBaseDomain-java.lang.String-long- 25[91.2]: {{javadoc_uri}}/StorageController.html 26[91.3]: https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning 27 28## v90 29- Added [`WebNotification.silent`][90.1] and [`WebNotification.vibrate`][90.2] 30 support. See also [Web/API/Notification/silent][90.3] and 31 [Web/API/Notification/vibrate][90.4]. 32 ([bug 1696145]({{bugzilla}}1696145)) 33- ⚠️ Deprecated [`GeckoRuntime.getProfileDir`][90.5], the API is being kept for 34 compatibility but it always returns null. 35- Added [`forceEnableAccessibility`][90.6] runtime setting to enable 36 accessibility during testing. 37 ([bug 1701269]({{bugzilla}}1701269)) 38- Removed deprecated [`GeckoView.onTouchEventForResult`][88.4]. 39 ([bug 1706403]({{bugzilla}}1706403)) 40- ⚠️ Updated [`onContentPermissionRequest`][90.7] to use [`ContentPermission`][90.8]; added 41 [`setPermission`][90.9] to [`StorageController`][90.10] for modifying existing permissions, and 42 allowed Gecko to handle persisting permissions. 43- ⚠️ Added a deprecation schedule to most existing content blocking exception functionality; 44 other than [`addException`][90.11], content blocking exceptions should be treated as content 45 permissions going forward. 46 47[90.1]: {{javadoc_uri}}/WebNotification.html#silent 48[90.2]: {{javadoc_uri}}/WebNotification.html#vibrate 49[90.3]: https://developer.mozilla.org/en-US/docs/Web/API/Notification/silent 50[90.4]: https://developer.mozilla.org/en-US/docs/Web/API/Notification/vibrate 51[90.5]: {{javadoc_uri}}/GeckoRuntime.html#getProfileDir-- 52[90.6]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setForceEnableAccessibility-boolean- 53[90.7]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#onContentPermissionRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PermissionDelegate.ContentPermission- 54[90.8]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.ContentPermission.html 55[90.9]: {{javadoc_uri}}/StorageController.html#setPermission-org.mozilla.geckoview.GeckoSession.PermissionDelegate.ContentPermission-int- 56[90.10]: {{javadoc_uri}}/StorageController.html 57[90.11]: {{javadoc_uri}}/ContentBlockingController.html#addException-org.mozilla.geckoview.GeckoSession- 58 59## v89 60- Added [`ContentPermission`][89.1], which is used to report what permissions content 61 is loaded with in `onLocationChange`. 62- Added [`StorageController.getPermissions`][89.2] and [`StorageController.getAllPermissions`][89.3], 63 allowing inspection of what permissions have been set for a given URI and for all URIs. 64- ⚠️ Deprecated [`NavigationDelegate.onLocationChange`][89.4], to be removed in v92. The 65 new `onLocationChange` callback simply adds permissions information, migration of existing 66 functionality should only require updating the function signature. 67- Added [`GeckoRuntimeSettings.setEnterpriseRootsEnabled`][89.5] which allows 68 GeckoView to add third party certificate roots from the Android OS CA store. 69 ([bug 1678191]({{bugzilla}}1678191)). 70- ⚠️ [`GeckoSession.load`][89.6] now throws `IllegalArgumentException` if the 71 session has no [`GeckoSession.NavigationDelegate`][89.7] and the request's `data` URI is too long. 72 If a `GeckoSession` *does* have a `GeckoSession.NavigationDelegate` and `GeckoSession.load` is called 73 with a top-level `data` URI that is too long, [`NavigationDelgate.onLoadError`][89.8] will be called 74 with a [`WebRequestError`][89.9] containing error code [`WebRequestError.ERROR_DATA_URI_TOO_LONG`][89.10]. 75 ([bug 1668952]({{bugzilla}}1668952)) 76- Extended [`Autocomplete`][78.7] API to support credit cards. 77 ([bug 1691819]({{bugzilla}}1691819)). 78- ⚠️ Deprecated ['Autocomplete.LoginStorageDelegate'][78.8] with the intention 79 of removing it in GeckoView v93. Please use 80 [`Autocomplete.StorageDelegate`][89.11] instead. 81 ([bug 1691819]({{bugzilla}}1691819)). 82- Added [`ALLOWED_TRACKING_CONTENT`][89.12] to content blocking API to indicate 83 when unsafe content is allowed by a shim. 84 ([bug 1661330]({{bugzilla}}1661330)) 85- ⚠️ Added [`setCookieBehaviorPrivateMode`][89.13] to control cookie behavior for private browsing 86 mode independently of normal browsing mode. To maintain current behavior, set this to the same 87 value as [`setCookieBehavior`][89.14] is set to. 88 89[89.1]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.ContentPermission.html 90[89.2]: {{javadoc_uri}}/StorageController.html#getPermissions-java.lang.String- 91[89.3]: {{javadoc_uri}}/StorageController.html#getAllPermissions-- 92[89.4]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html#onLocationChange-org.mozilla.geckoview.GeckoSession-java.lang.String- 93[89.5]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setEnterpriseRootsEnabled-boolean- 94[89.6]: {{javadoc_uri}}/GeckoSession.html#load-org.mozilla.geckoview.GeckoSession.Loader- 95[89.7]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html 96[89.8]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html#onLoadError-org.mozilla.geckoview.GeckoSession-java.lang.String-org.mozilla.geckoview.WebRequestError- 97[89.9]: {{javadoc_uri}}/WebRequestError.html 98[89.10]: {{javadoc_uri}}/WebRequestError.html#ERROR_DATA_URI_TOO_LONG 99[89.11]: {{javadoc_uri}}/Autocomplete.StorageDelegate.html 100[89.12]: {{javadoc_uri}}/ContentBlockingController.Event.html#ALLOWED_TRACKING_CONTENT 101[89.13]: {{javadoc_uri}}/ContentBlocking.Settings.html#setCookieBehaviorPrivateMode-int- 102[89.14]: {{javadoc_uri}}/ContentBlocking.Settings.html#setCookieBehavior-int- 103 104## v88 105- Added [`WebExtension.Download#update`][88.1] that can be used to 106 implement the WebExtension `downloads` API. This method is used to communicate 107 updates in the download status to the Web Extension 108- Added [`PanZoomController.onTouchEventForDetailResult`][88.2] and 109 [`GeckoView.onTouchEventForDetailResult`][88.3] to tell information 110 that the website doesn't expect browser apps to react the event, 111 also and deprecated [`PanZoomController.onTouchEventForResult`][88.4] 112 and [`GeckoView.onTouchEventForResult`][88.5]. With these new methods 113 browser apps can differentiate cases where the browser can do something 114 the browser's specific behavior in response to the event (e.g. 115 pull-to-refresh) and cases where the browser should not react to the event 116 because the event was consumed in the web site (e.g. in canvas like 117 web apps). 118 ([bug 1678505]({{bugzilla}}1678505)). 119- ⚠️ Deprecate the [`MediaElement`][65.11] API to be removed in v91. 120 Please use [`MediaSession`][81.6] for media events and control. 121 ([bug 1693584]({{bugzilla}}1693584)). 122- ⚠️ Deprecate [`GeckoResult.ALLOW`][89.6] and [`GeckoResult.DENY`][89.7] in 123 favor of [`GeckoResult.allow`][89.8] and [`GeckoResult.deny`][89.9]. 124 ([bug 1697270]({{bugzilla}}1697270)). 125- ⚠️ Update [`SessionState`][88.10] to handle null states/strings more gracefully. 126 ([bug 1685486]({{bugzilla}}1685486)). 127 128[88.1]: {{javadoc_uri}}/WebExtension.Download.html#update-org.mozilla.geckoview.WebExtension.Download.Info- 129[88.2]: {{javadoc_uri}}/PanZoomController.html#onTouchEventForDetailResult 130[88.3]: {{javadoc_uri}}/GeckoView.html#onTouchEventForDetailResult 131[88.4]: {{javadoc_uri}}/PanZoomController.html#onTouchEventForResult 132[88.5]: {{javadoc_uri}}/GeckoView.html#onTouchEventForResult 133[88.6]: {{javadoc_uri}}/GeckoResult.html#ALLOW 134[88.7]: {{javadoc_uri}}/GeckoResult.html#DENY 135[88.8]: {{javadoc_uri}}/GeckoResult.html#allow-- 136[88.9]: {{javadoc_uri}}/GeckoResult.html#deny-- 137[88.10]: {{javadoc_uri}}/GeckoSession.SessionState.html 138 139## v87 140- ⚠ Added [`WebExtension.DownloadInitData`][87.1] class that can be used to 141 implement the WebExtension `downloads` API. This class represents initial state of a download. 142- Added [`WebExtension.Download.Info`][87.2] interface that can be used to 143 implement the WebExtension `downloads` API. This interface allows communicating 144 download's state to Web Extension. 145- [`Image#getBitmap`][87.3] now throws [`ImageProcessingException`][87.4] if 146 the image cannot be processed. 147 ([bug 1689745]({{bugzilla}}1689745)) 148- Added support for HTTPS-only mode to [`GeckoRuntimeSettings`][87.5] via 149 [`setAllowInsecureConnections`][87.6]. 150- Removed [`JSONException`] throws from [`SessionState.fromString`][87.7], fixed annotations, 151 and clarified null-handling a bit. 152 153[87.1]: {{javadoc_uri}}/WebExtension.DownloadInitData.html 154[87.2]: {{javadoc_uri}}/WebExtension.Download.Info.html 155[87.3]: {{javadoc_uri}}/Image.html#getBitmap-int- 156[87.4]: {{javadoc_uri}}/Image.ImageProcessingException.html 157[87.5]: {{javadoc_uri}}/GeckoRuntimeSettings.html 158[87.6]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAllowInsecureConnections-int- 159[87.7]: {{javadoc_uri}}/GeckoSession.SessionState.html#fromString-java.lang.String- 160 161## v86 162- Removed deprecated [`ContentDelegate#onExternalResponse(GeckoSession, WebResponseInfo)`]. 163 Use [`ContentDelegate#onExternalResponse(GeckoSession, WebResponse)`][82.2] instead. 164 ([bug 1665157]({{bugzilla}}1665157)) 165- Added [`WebExtension.DownloadDelegate`][86.1] and that can be used to 166 implement the WebExtension `downloads` API. 167 ([bug 1656336]({{bugzilla}}1656336)) 168- Added [`WebRequest.Builder#body(@Nullable String)`][86.2] which converts a string to direct byte buffer. 169- Removed deprecated `REPLACED_UNSAFE_CONTENT`. 170 ([bug 1667471]({{bugzilla}}1667471)) 171- Removed deprecated [`GeckoSession#loadUri`][83.6] variants in favor of 172 [`GeckoSession#load`][83.7]. See docs for [`Loader`][83.8]. 173 ([bug 1667471]({{bugzilla}}1667471)) 174- Added [`GeckoResult#map`][86.3] to synchronously map a GeckoResult value. 175- Added [`PanZoomController#INPUT_RESULT_IGNORED`][86.4]. 176 ([bug 1687430]({{bugzilla}}1687430)) 177 178[86.1]: {{javadoc_uri}}/WebExtension.DownloadDelegate.html 179[86.2]: {{javadoc_uri}}/WebRequest.Builder#body-java.lang.String- 180[86.3]: {{javadoc_uri}}/GeckoResult.html#map-org.mozilla.geckoview.GeckoResult.OnValueMapper- 181[86.4]: {{javadoc_uri}}/PanZoomController.html#INPUT_RESULT_IGNORED 182 183## v85 184- Added [`WebExtension.BrowsingDataDelegate`][85.1] that can be used to 185 implement the WebExtension `browsingData` API. 186 187[85.1]: {{javadoc_uri}}/WebExtension.BrowsingDataDelegate.html 188 189## v84 190- ⚠️ Removed deprecated [`GeckoRuntimeSettings.Builder.useMultiprocess`] and 191 [`GeckoRuntimeSettings.getUseMultiprocess`]. Single-process GeckoView is no 192 longer supported. ([bug 1650118]({{bugzilla}}1650118)) 193- Deprecated members now have an additional [`@DeprecationSchedule`][84.1] annotation which 194 includes the `version` that we expect to remove the member and an `id` that 195 can be used to group annotation notices in tooling. 196 ([bug 1671460]({{bugzilla}}1671460)) 197- ⚠️ Removed deprecated [`ContentBlockingController.ExceptionList`] abd 198 [`ContentBlockingController.restoreExceptionList`]. ([bug 1674500]({{bugzilla}}1674500)) 199 200[84.1]: {{javadoc_uri}}/DeprecationSchedule.html 201 202## v83 203- Added [`WebExtension.MetaData.temporary`][83.1] which exposes whether an extension 204 has been installed temporarily, e.g. when using web-ext. 205 ([bug 1624410]({{bugzilla}}1624410)) 206- ⚠️ Removing unsupported `MediaSession.Delegate.onPictureInPicture` for now. 207 Also, [`MediaSession.Delegate.onMetadata`][83.2] is no longer dispatched for 208 plain media elements. 209 ([bug 1658937]({{bugzilla}}1658937)) 210- Replaced android.util.ArrayMap with java.util.TreeMap in [`WebMessage`][65.13] to enable case-insensitive handling of the HTTP headers. 211 ([bug 1666013]({{bugzilla}}1666013)) 212- Added [`ContentBlocking.SafeBrowsingProvider`][83.3] to configure Safe 213 Browsing providers. 214 ([bug 1660241]({{bugzilla}}1660241)) 215- Added [`GeckoRuntime.ActivityDelegate`][83.4] which allows applications to handle 216 starting external Activities on behalf of GeckoView. Currently this is used to integrate 217 FIDO support for WebAuthn. 218- Added ['GeckoWebExecutor#FETCH_FLAG_PRIVATE'][83.5]. This new flag allows for private browsing downloads using WebExecutor. 219 ([bug 1665426]({{bugzilla}}1665426)) 220- ⚠️ Deprecated [`GeckoSession#loadUri`][83.6] variants in favor of 221 [`GeckoSession#load`][83.7]. See docs for [`Loader`][83.8]. 222 ([bug 1667471]({{bugzilla}}1667471)) 223- Added [`Loader#headerFilter`][83.9] to override the default header filtering 224 behavior. 225 ([bug 1667471]({{bugzilla}}1667471)) 226 227[83.1]: {{javadoc_uri}}/WebExtension.MetaData.html#temporary 228[83.2]: {{javadoc_uri}}/MediaSession.Delegate.html#onMetadata-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.MediaSession-org.mozilla.geckoview.MediaSession.Metadata- 229[83.3]: {{javadoc_uri}}/ContentBlocking.SafeBrowsingProvider.html 230[83.4]: {{javadoc_uri}}/GeckoRuntime.ActivityDelegate.html 231[83.5]: {{javadoc_uri}}/GeckoWebExecutor.html#FETCH_FLAG_PRIVATE 232[83.6]: {{javadoc_uri}}/GeckoSession.html#loadUri-java.lang.String-org.mozilla.geckoview.GeckoSession-int-java.util.Map- 233[83.7]: {{javadoc_uri}}/GeckoSession.html#load-org.mozilla.geckoview.GeckoSession.Loader- 234[83.8]: {{javadoc_uri}}/GeckoSession.Loader.html 235[83.9]: {{javadoc_uri}}/GeckoSession.Loader.html#headerFilter-int- 236 237## v82 238- ⚠️ [`WebNotification.source`][79.2] is now `@Nullable` to account for 239 WebExtension notifications which don't have a `source` field. 240- ⚠️ Deprecated [`ContentDelegate#onExternalResponse(GeckoSession, WebResponseInfo)`][82.1] with the intention of removing 241 them in GeckoView v85. 242 ([bug 1530022]({{bugzilla}}1530022)) 243- Added [`ContentDelegate#onExternalResponse(GeckoSession, WebResponse)`][82.2] to eliminate the need 244 to make a second request for downloads and ensure more efficient and reliable downloads in a single request. The second 245 parameter is now a [`WebResponse`][65.15] 246 ([bug 1530022]({{bugzilla}}1530022)) 247- Added [`Image`][82.3] support for size-dependent bitmap retrieval from image resources. 248 ([bug 1658456]({{bugzilla}}1658456)) 249- ⚠️ Use [`Image`][82.3] for [`MediaSession`][81.6] artwork and [`WebExtension`][69.5] icon support. 250 ([bug 1662508]({{bugzilla}}1662508)) 251- Added [`RepostConfirmPrompt`][82.4] to prompt the user for cofirmation before 252 resending POST requests. 253 ([bug 1659073]({{bugzilla}}1659073)) 254- Removed `Parcelable` support in `GeckoSession`. Use [`ProgressDelegate#onSessionStateChange`][68.29] and [`ProgressDelegate#restoreState`][82.5] instead. 255 ([bug 1650108]({{bugzilla}}1650108)) 256- ⚠️ Use AndroidX instead of the Android support library. For the public API this only changes 257 the thread and nullable annotation types. 258- Added [`REPLACED_TRACKING_CONTENT`][82.6] to content blocking API to indicate when unsafe content is shimmed. 259 ([bug 1663756]({{bugzilla}}1663756)) 260 261[82.1]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onExternalResponse-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.WebResponseInfo- 262[82.2]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onExternalResponse-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoResult- 263[82.3]: {{javadoc_uri}}/Image.html 264[82.4]: {{javadoc_uri}}/GeckoSession.PromptDelegate.RepostConfirmPrompt.html 265[82.5]: {{javadoc_uri}}/GeckoSession.html#restoreState-org.mozilla.geckoview.GeckoSession.SessionState- 266[82.6]: {{javadoc_uri}}/ContentBlockingController.Event.html#REPLACED_TRACKING_CONTENT 267 268## v81 269- Added `cookiePurging` to [`ContentBlocking.Settings.Builder`][81.1] and `getCookiePurging` and `setCookiePurging` 270 to [`ContentBlocking.Settings`][81.2]. 271- Added [`GeckoSession.ContentDelegate.onPaintStatusReset()`][81.3] callback which notifies when valid content is no longer being rendered. 272- Made [`GeckoSession.ContentDelegate.onFirstContentfulPaint()`][81.4] additionally be called for the first contentful paint following a `onPaintStatusReset()` event, rather than just the first contentful paint of the session. 273- Removed deprecated `GeckoRuntime.registerWebExtension`. Use [`WebExtensionController.install`][73.1] instead. 274⚠️ - Changed [`GeckoView.onTouchEventForResult`][81.5] to return a `GeckoResult`, as it now 275makes a round-trip to Gecko. The result will be more accurate now, since how content treats 276the event is now considered. 277- Added [`MediaSession`][81.6] API for session-based media events and control. 278 279[81.1]: {{javadoc_uri}}/ContentBlocking.Settings.Builder.html 280[81.2]: {{javadoc_uri}}/ContentBlocking.Settings.html 281[81.3]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onPaintStatusReset-org.mozilla.geckoview.GeckoSession- 282[81.4]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onFirstContentfulPaint-org.mozilla.geckoview.GeckoSession- 283[81.5]: {{javadoc_uri}}/GeckoView.html#onTouchEventForResult-android.view.MotionEvent- 284[81.6]: {{javadoc_uri}}/MediaSession.html 285 286## v80 287- Removed `GeckoSession.hashCode` and `GeckoSession.equals` overrides in favor 288 of the default implementations. ([bug 1647883]({{bugzilla}}1647883)) 289- Added `strictSocialTrackingProtection` to [`ContentBlocking.Settings.Builder`][80.1] and `getStrictSocialTrackingProtection` 290 to [`ContentBlocking.Settings`][80.2]. 291 292[80.1]: {{javadoc_uri}}/ContentBlocking.Settings.Builder.html 293[80.2]: {{javadoc_uri}}/ContentBlocking.Settings.html 294 295## v79 296- Added `runtime.openOptionsPage` support. For `options_ui.open_in_new_tab` == 297 `false`, [`TabDelegate.onOpenOptionsPage`][79.1] is called. 298 ([bug 1618058]({{bugzilla}}1619766)) 299- Added [`WebNotification.source`][79.2], which is the URL of the page 300 or Service Worker that created the notification. 301- Removed deprecated `WebExtensionController.setTabDelegate` and `WebExtensionController.getTabDelegate` 302 APIs ([bug 1618987]({{bugzilla}}1618987)). 303- ⚠️ [`RuntimeTelemetry#getSnapshots`][68.10] is removed after deprecation. 304 Use Glean to handle Gecko telemetry. 305 ([bug 1644447]({{bugzilla}}1644447)) 306- Added [`ensureBuiltIn`][79.3] that ensures that a built-in extension is 307 installed without re-installing. 308 ([bug 1635564]({{bugzilla}}1635564)) 309- Added [`ProfilerController`][79.4], accessible via [`GeckoRuntime.getProfilerController`][79.5] 310to allow adding gecko profiler markers. 311([bug 1624993]({{bugzilla}}1624993)) 312- ⚠️ Deprecated `Parcelable` support in `GeckoSession` with the intention of removing 313 in GeckoView v82. ([bug 1649529]({{bugzilla}}1649529)) 314- ⚠️ Deprecated [`GeckoRuntimeSettings.Builder.useMultiprocess`][79.6] and 315 [`GeckoRuntimeSettings.getUseMultiprocess`][79.7] with the intention of removing 316 them in GeckoView v82. ([bug 1649530]({{bugzilla}}1649530)) 317 318[79.1]: {{javadoc_uri}}/WebExtension.TabDelegate.html#onOpenOptionsPage-org.mozilla.geckoview.WebExtension- 319[79.2]: {{javadoc_uri}}/WebNotification.html#source 320[79.3]: {{javadoc_uri}}/WebExtensionController.html#ensureBuiltIn-java.lang.String-java.lang.String- 321[79.4]: {{javadoc_uri}}/ProfilerController.html 322[79.5]: {{javadoc_uri}}/GeckoRuntime.html#getProfilerController-- 323[79.6]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#useMultiprocess-boolean- 324[79.7]: {{javadoc_uri}}/GeckoRuntimeSettings.html#getUseMultiprocess-- 325 326## v78 327- Added [`WebExtensionController.installBuiltIn`][78.1] that allows installing an 328 extension that is bundled with the APK. This method is meant as a replacement 329 for [`GeckoRuntime.registerWebExtension`][67.15], ⚠️ which is now deprecated 330 and will be removed in GeckoView 81. 331- Added [`CookieBehavior.ACCEPT_FIRST_PARTY_AND_ISOLATE_OTHERS`][78.2] to allow 332 enabling dynamic first party isolation; this will block tracking cookies and 333 isolate all other third party cookies by keying them based on the first party 334 from which they are accessed. 335- Added `cookieStoreId` field to [`WebExtension.CreateTabDetails`][78.3]. This adds the optional 336 ability to create a tab with a given cookie store ID for its [`contextual identity`][78.4]. 337 ([bug 1622500]({{bugzilla}}1622500)) 338- Added [`NavigationDelegate.onSubframeLoadRequest`][78.5] to allow intercepting 339 non-top-level navigations. 340- Added [`BeforeUnloadPrompt`][78.6] to respond to prompts from onbeforeunload. 341- ⚠️ Refactored `LoginStorage` to the [`Autocomplete`][78.7] API to support 342 login form autocomplete delegation. 343 Refactored 'LoginStorage.Delegate' to ['Autocomplete.LoginStorageDelegate'][78.8]. 344 Refactored `GeckoSession.PromptDelegate.onLoginStoragePrompt` to 345 [`GeckoSession.PromptDelegate.onLoginSave`][78.9]. 346 Added [`GeckoSession.PromptDelegate.onLoginSelect`][78.10]. 347 ([bug 1618058]({{bugzilla}}1618058)) 348- Added [`GeckoRuntimeSettings#setLoginAutofillEnabled`][78.11] to control 349 whether login forms should be automatically filled in suitable situations. 350 351[78.1]: {{javadoc_uri}}/WebExtensionController.html#installBuiltIn-java.lang.String- 352[78.2]: {{javadoc_uri}}/ContentBlocking.CookieBehavior.html#ACCEPT_FIRST_PARTY_AND_ISOLATE_OTHERS 353[78.3]: {{javadoc_uri}}/WebExtension.CreateTabDetails.html 354[78.4]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities 355[78.5]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html#onSubframeLoadRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.NavigationDelegate.LoadRequest- 356[78.6]: {{javadoc_uri}}/GeckoSession.PromptDelegate.BeforeUnloadPrompt.html 357[78.7]: {{javadoc_uri}}/Autocomplete.html 358[78.8]: {{javadoc_uri}}/Autocomplete.LoginStorageDelegate.html 359[78.9]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onLoginSave-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.AutocompleteRequest- 360[78.10]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onLoginSelect-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.AutocompleteRequest- 361[78.11]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setLoginAutofillEnabled-boolean- 362 363## v77 364- Added [`GeckoRuntime.appendAppNotesToCrashReport`][77.1] For adding app notes to the crash report. 365 ([bug 1626979]({{bugzilla}}1626979)) 366- ⚠️ Remove the `DynamicToolbarAnimator` API along with accesors on `GeckoView` and `GeckoSession`. 367 ([bug 1627716]({{bugzilla}}1627716)) 368 369[77.1]: {{javadoc_uri}}/GeckoRuntime.html#appendAppNotesToCrashReport-java.lang.String- 370 371## v76 372- Added [`GeckoSession.PermissionDelegate.PERMISSION_MEDIA_KEY_SYSTEM_ACCESS`][76.1] to control EME media key access. 373- [`RuntimeTelemetry#getSnapshots`][68.10] is deprecated and will be removed 374 in 79. Use Glean to handle Gecko telemetry. 375 ([bug 1620395]({{bugzilla}}1620395)) 376- Added [`LoadRequest.isDirectNavigation`] to know when calls to 377 [`onLoadRequest`][76.3] originate from a direct navigation made by the app 378 itself. 379 ([bug 1624675]({{bugzilla}}1624675)) 380 381[76.1]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_MEDIA_KEY_SYSTEM_ACCESS 382[76.2]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.LoadRequest.html#isDirectNavigation 383[76.3]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.html#onLoadRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.NavigationDelegate.LoadRequest- 384 385## v75 386- ⚠️ Remove `GeckoRuntimeSettings.Builder#useContentProcessHint`. The content 387 process is now preloaded by default if 388 [`GeckoRuntimeSettings.Builder#useMultiprocess`][75.1] is enabled. 389- ⚠️ Move `GeckoSessionSettings.Builder#useMultiprocess` to 390 [`GeckoRuntimeSettings.Builder#useMultiprocess`][75.1]. Multiprocess state is 391 no longer determined per session. 392- Added [`DebuggerDelegate#onExtensionListUpdated`][75.2] to notify that a temporary 393 extension has been installed by the debugger. 394 ([bug 1614295]({{bugzilla}}1614295)) 395- ⚠️ Removed [`GeckoRuntimeSettings.setAutoplayDefault`][75.3], use 396 [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_AUDIBLE`][73.12] and 397 [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_INAUDIBLE`][73.13] to 398 control autoplay. 399 ([bug 1614894]({{bugzilla}}1614894)) 400- Added [`GeckoSession.reload(int flags)`][75.4] That takes a [load flag][75.5] parameter. 401- ⚠️ Moved [`ActionDelegate`][75.6] and [`MessageDelegate`][75.7] to 402 [`SessionController`][75.8]. 403 ([bug 1616625]({{bugzilla}}1616625)) 404- Added [`SessionTabDelegate`][75.9] to [`SessionController`][75.8] and 405 [`TabDelegate`][75.10] to [`WebExtension`][69.5] which receive respectively 406 calls for the session and the runtime. `TabDelegate` is also now 407 per-`WebExtension` object instead of being global. The existing global 408 [`TabDelegate`][75.11] is now deprecated and will be removed in GeckoView 77. 409 ([bug 1616625]({{bugzilla}}1616625)) 410- Added [`SessionTabDelegate#onUpdateTab`][75.12] which is called whenever an 411 extension calls `tabs.update` on the corresponding `GeckoSession`. 412 [`TabDelegate#onCreateTab`][75.13] now takes a [`CreateTabDetails`][75.14] 413 object which contains additional information about the newly created tab 414 (including the `url` which used to be passed in directly). 415 ([bug 1616625]({{bugzilla}}1616625)) 416- Added [`GeckoRuntimeSettings.setWebManifestEnabled`][75.15], 417 [`GeckoRuntimeSettings.webManifest`][75.16], and 418 [`GeckoRuntimeSettings.getWebManifestEnabled`][75.17] 419 ([bug 1614894]({{bugzilla}}1603673)), to enable or check Web Manifest support. 420- Added [`GeckoDisplay.safeAreaInsetsChanged`][75.18] to notify the content of [safe area insets][75.19]. 421 ([bug 1503656]({{bugzilla}}1503656)) 422- Added [`GeckoResult#cancel()`][75.22], [`GeckoResult#setCancellationDelegate()`][75.22], 423 and [`GeckoResult.CancellationDelegate`][75.23]. This adds the optional ability to cancel 424 an operation behind a pending `GeckoResult`. 425- Added [`baseUrl`][75.24] to [`WebExtension.MetaData`][75.25] to expose the 426 base URL for all WebExtension pages for a given extension. 427 ([bug 1560048]({{bugzilla}}1560048)) 428- Added [`allowedInPrivateBrowsing`][75.26] and 429 [`setAllowedInPrivateBrowsing`][75.27] to control whether an extension can 430 run in private browsing or not. Extensions installed with 431 [`registerWebExtension`][67.15] will always be allowed to run in private 432 browsing. 433 ([bug 1599139]({{bugzilla}}1599139)) 434 435[75.1]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#useMultiprocess-boolean- 436[75.2]: {{javadoc_uri}}/WebExtensionController.DebuggerDelegate.html#onExtensionListUpdated-- 437[75.3]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#autoplayDefault-boolean- 438[75.4]: {{javadoc_uri}}/GeckoSession.html#reload-int- 439[75.5]: {{javadoc_uri}}/GeckoSession.html#LOAD_FLAGS_NONE 440[75.6]: {{javadoc_uri}}/WebExtension.ActionDelegate.html 441[75.7]: {{javadoc_uri}}/WebExtension.MessageDelegate.html 442[75.8]: {{javadoc_uri}}/WebExtension.SessionController.html 443[75.9]: {{javadoc_uri}}/WebExtension.SessionTabDelegate.html 444[75.10]: {{javadoc_uri}}/WebExtension.TabDelegate.html 445[75.11]: {{javadoc_uri}}/WebExtensionRuntime.TabDelegate.html 446[75.12]: {{javadoc_uri}}/WebExtension.SessionTabDelegate.html#onUpdateTab-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.WebExtension.UpdateTabDetails- 447[75.13]: {{javadoc_uri}}/WebExtension.TabDelegate.html#onNewTab-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.WebExtension.CreateTabDetails- 448[75.14]: {{javadoc_uri}}/WebExtension.CreateTabDetails.html 449[75.15]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#setWebManifestEnabled-boolean- 450[75.16]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#webManifest-boolean- 451[75.17]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#getWebManifestEnabled-- 452[75.18]: {{javadoc_uri}}/GeckoDisplay.html#safeAreaInsetsChanged-int-int-int-int- 453[75.19]: https://developer.mozilla.org/en-US/docs/Web/CSS/env 454[75.20]: {{javadoc_uri}}/WebExtension.InstallException.ErrorCodes.html#ERROR_POSTPONED- 455[75.21]: {{javadoc_uri}}/GeckoResult.html#cancel-- 456[75.22]: {{javadoc_uri}}/GeckoResult.html#setCancellationDelegate-CancellationDelegate- 457[75.23]: {{javadoc_uri}}/GeckoResult.CancellationDelegate.html 458[75.24]: {{javadoc_uri}}/WebExtension.MetaData.html#baseUrl 459[75.25]: {{javadoc_uri}}/WebExtension.MetaData.html 460[75.26]: {{javadoc_uri}}/WebExtension.MetaData.html#allowedInPrivateBrowsing 461[75.27]: {{javadoc_uri}}/WebExtensionController.html#setAllowedInPrivateBrowsing-org.mozilla.geckoview.WebExtension-boolean- 462 463## v74 464- Added [`WebExtensionController.enable`][74.1] and [`disable`][74.2] to 465 enable and disable extensions. 466 ([bug 1599585]({{bugzilla}}1599585)) 467- ⚠️ Added ['GeckoSession.ProgressDelegate.SecurityInformation#certificate'][74.3], which is the 468 full server certificate in use, if any. The other certificate-related fields were removed. 469 ([bug 1508730]({{bugzilla}}1508730)) 470- Added ['WebResponse#isSecure'][74.4], which indicates whether or not the response was 471 delivered over a secure connection. 472 ([bug 1508730]({{bugzilla}}1508730)) 473- Added ['WebResponse#certificate'][74.5], which is the server certificate used for the 474 response, if any. 475 ([bug 1508730]({{bugzilla}}1508730)) 476- Added ['WebRequestError#certificate'][74.6], which is the server certificate used in the 477 failed request, if any. 478 ([bug 1508730]({{bugzilla}}1508730)) 479- ⚠️ Updated [`ContentBlockingController`][74.7] to use new representation for content blocking 480 exceptions and to add better support for removing exceptions. This deprecates [`ExceptionList`][74.8] 481 and [`restoreExceptionList`][74.9] with the intent to remove them in 76. 482 ([bug 1587552]({{bugzilla}}1587552)) 483- Added [`GeckoSession.ContentDelegate.onMetaViewportFitChange`][74.10]. This exposes `viewport-fit` value that is CSS Round Display Level 1. ([bug 1574307]({{bugzilla}}1574307)) 484- Extended [`LoginStorage.Delegate`][74.11] with [`onLoginUsed`][74.12] to 485 report when existing login entries are used for autofill. 486 ([bug 1610353]({{bugzilla}}1610353)) 487- Added ['WebExtensionController#setTabActive'][74.13], which is used to notify extensions about 488 tab changes 489 ([bug 1597793]({{bugzilla}}1597793)) 490- Added ['WebExtension.metaData.optionsUrl'][74.14] and ['WebExtension.metaData.openOptionsPageInTab'][74.15], 491 which is the addon metadata necessary to show their option pages. 492 ([bug 1598792]({{bugzilla}}1598792)) 493- Added [`WebExtensionController.update`][74.16] to update extensions. ([bug 1599581]({{bugzilla}}1599581)) 494- ⚠️ Replaced `subscription` argument in [`WebPushDelegate.onSubscriptionChanged`][74.17] from a [`WebPushSubscription`][74.18] to the [`String`][74.19] `scope`. 495 496[74.1]: {{javadoc_uri}}/WebExtensionController.html#enable-org.mozilla.geckoview.WebExtension-int- 497[74.2]: {{javadoc_uri}}/WebExtensionController.html#disable-org.mozilla.geckoview.WebExtension-int- 498[74.3]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.SecurityInformation.html#certificate 499[74.4]: {{javadoc_uri}}/WebResponse.html#isSecure 500[74.5]: {{javadoc_uri}}/WebResponse.html#certificate 501[74.6]: {{javadoc_uri}}/WebRequestError.html#certificate 502[74.7]: {{javadoc_uri}}/ContentBlockingController.html 503[74.8]: {{javadoc_uri}}/ContentBlockingController.ExceptionList.html 504[74.9]: {{javadoc_uri}}/ContentBlockingController.html#restoreExceptionList-org.mozilla.geckoview.ContentBlockingController.ExceptionList- 505[74.10]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onMetaViewportFitChange-org.mozilla.geckoview.GeckoSession-java.lang.String- 506[74.11]: {{javadoc_uri}}/LoginStorage.Delegate.html 507[74.12]: {{javadoc_uri}}/LoginStorage.Delegate.html#onLoginUsed-org.mozilla.geckoview.LoginStorage.LoginEntry-int- 508[74.13]: {{javadoc_uri}}/WebExtensionController.html#setTabActive 509[74.14]: {{javadoc_uri}}/WebExtension.MetaData.html#optionsUrl 510[74.15]: {{javadoc_uri}}/WebExtension.MetaData.html#openOptionsPageInTab 511[74.16]: {{javadoc_uri}}/WebExtensionController.html#update-org.mozilla.geckoview.WebExtension-int- 512[74.17]: {{javadoc_uri}}/WebPushController.html#onSubscriptionChange-org.mozilla.geckoview.WebPushSubscription-byte:A- 513[74.18]: {{javadoc_uri}}/WebPushSubscription.html 514[74.19]: https://developer.android.com/reference/java/lang/String 515 516## v73 517- Added [`WebExtensionController.install`][73.1] and [`uninstall`][73.2] to 518 manage installed extensions 519- ⚠️ Renamed `ScreenLength.VIEWPORT_WIDTH`, `ScreenLength.VIEWPORT_HEIGHT`, 520 `ScreenLength.fromViewportWidth` and `ScreenLength.fromViewportHeight` to 521 [`ScreenLength.VISUAL_VIEWPORT_WIDTH`][73.3], 522 [`ScreenLength.VISUAL_VIEWPORT_HEIGHT`][73.4], 523 [`ScreenLength.fromVisualViewportWidth`][73.5] and 524 [`ScreenLength.fromVisualViewportHeight`][73.6] respectively. 525- Added the [`LoginStorage`][73.7] API. Apps may handle login fetch requests now by 526 attaching a [`LoginStorage.Delegate`][73.8] via 527 [`GeckoRuntime#setLoginStorageDelegate`][73.9] 528 ([bug 1602881]({{bugzilla}}1602881)) 529- ⚠️ [`WebExtension`][69.5]'s constructor now requires a `WebExtensionController` 530 instance. 531- Added [`GeckoResult.allOf`][73.10] for consuming a list of results. 532- Added [`WebExtensionController.list`][73.11] to list all installed extensions. 533- Added [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_AUDIBLE`][73.12] and 534 [`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_INAUDIBLE`][73.13]. These control 535 autoplay permissions for audible and inaudible videos. 536 ([bug 1577596]({{bugzilla}}1577596)) 537- Added [`LoginStorage.Delegate.onLoginSave`][73.14] for login storage save 538 requests and [`GeckoSession.PromptDelegate.onLoginStoragePrompt`][73.15] for 539 login storage prompts. 540 ([bug 1599873]({{bugzilla}}1599873)) 541 542[73.1]: {{javadoc_uri}}/WebExtensionController.html#install-java.lang.String- 543[73.2]: {{javadoc_uri}}/WebExtensionController.html#uninstall-org.mozilla.geckoview.WebExtension- 544[73.3]: {{javadoc_uri}}/ScreenLength.html#VISUAL_VIEWPORT_WIDTH 545[73.4]: {{javadoc_uri}}/ScreenLength.html#VISUAL_VIEWPORT_HEIGHT 546[73.5]: {{javadoc_uri}}/ScreenLength.html#fromVisualViewportWidth-double- 547[73.6]: {{javadoc_uri}}/ScreenLength.html#fromVisualViewportHeight-double- 548[73.7]: {{javadoc_uri}}/LoginStorage.html 549[73.8]: {{javadoc_uri}}/LoginStorage.Delegate.html 550[73.9]: {{javadoc_uri}}/GeckoRuntime.html#setLoginStorageDelegate-org.mozilla.geckoview.LoginStorage.Delegate- 551[73.10]: {{javadoc_uri}}/GeckoResult.html#allOf-java.util.List- 552[73.11]: {{javadoc_uri}}/WebExtensionController.html#list-- 553[73.12]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_AUTOPLAY_AUDIBLE 554[73.13]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_AUTOPLAY_INAUDIBLE 555[73.14]: {{javadoc_uri}}/LoginStorage.Delegate.html#onLoginSave-org.mozilla.geckoview.LoginStorage.LoginEntry- 556[73.15]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onLoginStoragePrompt-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.LoginStoragePrompt- 557 558## v72 559- Added [`GeckoSession.NavigationDelegate.LoadRequest#hasUserGesture`][72.1]. This indicates 560 if a load was requested while a user gesture was active (e.g., a tap). 561 ([bug 1555337]({{bugzilla}}1555337)) 562- ⚠️ Refactored `AutofillElement` and `AutofillSupport` into the 563 [`Autofill`][72.2] API. 564 ([bug 1591462]({{bugzilla}}1591462)) 565- Make `read()` in the `InputStream` returned from [`WebResponse#body`][72.3] timeout according 566 to [`WebResponse#setReadTimeoutMillis()`][72.4]. The default timeout value is reflected in 567 [`WebResponse#DEFAULT_READ_TIMEOUT_MS`][72.5], currently 30s. 568 ([bug 1595145]({{bugzilla}}1595145)) 569- ⚠️ Removed `GeckoResponse` 570 ([bug 1581161]({{bugzilla}}1581161)) 571- ⚠️ Removed `actions` and `response` arguments from [`SelectionActionDelegate.onShowActionRequest`][72.6] 572 and [`BasicSelectionActionDelegate.onShowActionRequest`][72.7] 573 ([bug 1581161]({{bugzilla}}1581161)) 574- Added text selection action methods to [`SelectionActionDelegate.Selection`][72.8] 575 ([bug 1581161]({{bugzilla}}1581161)) 576- Added [`BasicSelectionActionDelegate.getSelection`][72.9] 577 ([bug 1581161]({{bugzilla}}1581161)) 578- Changed [`BasicSelectionActionDelegate.clearSelection`][72.10] to public. 579 ([bug 1581161]({{bugzilla}}1581161)) 580- Added `Autofill` commit support. 581 ([bug 1577005]({{bugzilla}}1577005)) 582- Added [`GeckoView.setViewBackend`][72.11] to set whether GeckoView should be 583 backed by a [`TextureView`][72.12] or a [`SurfaceView`][72.13]. 584 ([bug 1530402]({{bugzilla}}1530402)) 585- Added support for Browser and Page Action from the WebExtension API. 586 See [`WebExtension.Action`][72.14]. 587 ([bug 1530402]({{bugzilla}}1530402)) 588- ⚠️ Split [`ContentBlockingController.Event.LOADED_TRACKING_CONTENT`][72.15] into 589 [`ContentBlockingController.Event.LOADED_LEVEL_1_TRACKING_CONTENT`][72.16] and 590 [`ContentBlockingController.Event.LOADED_LEVEL_2_TRACKING_CONTENT`][72.17]. 591- Replaced `subscription` argument in [`WebPushDelegate.onPushEvent`][72.18] from a [`WebPushSubscription`][72.19] to the [`String`][72.20] `scope`. 592- ⚠️ Renamed `WebExtension.ActionIcon` to [`Icon`][72.21]. 593- Added ['GeckoWebExecutor#FETCH_FLAGS_STREAM_FAILURE_TEST'][72.22], which is a new 594 flag used to immediately fail when reading a `WebResponse` body. 595 ([bug 1594905]({{bugzilla}}1594905)) 596- Changed [`CrashReporter#sendCrashReport(Context, File, JSONObject)`][72.23] to 597 accept a JSON object instead of a Map. Said object also includes the 598 application name that was previously passed as the fourth argument to the 599 method, which was thus removed. 600- Added WebXR device access permission support, [`PERMISSION_PERSISTENT_XR`][72.24]. 601 ([bug 1599927]({{bugzilla}}1599927)) 602 603[72.1]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.LoadRequest#hasUserGesture- 604[72.2]: {{javadoc_uri}}/Autofill.html 605[72.3]: {{javadoc_uri}}/WebResponse.html#body 606[72.4]: {{javadoc_uri}}/WebResponse.html#setReadTimeoutMillis-long- 607[72.5]: {{javadoc_uri}}/WebResponse.html#DEFAULT_READ_TIMEOUT_MS 608[72.6]: {{javadoc_uri}}/GeckoSession.SelectionActionDelegate.html#onShowActionRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.SelectionActionDelegate.Selection- 609[72.7]: {{javadoc_uri}}/BasicSelectionActionDelegate.html#onShowActionRequest-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.SelectionActionDelegate.Selection- 610[72.8]: {{javadoc_uri}}/GeckoSession.SelectionActionDelegate.Selection.html 611[72.9]: {{javadoc_uri}}/BasicSelectionActionDelegate.html#getSelection- 612[72.10]: {{javadoc_uri}}/BasicSelectionActionDelegate.html#clearSelection- 613[72.11]: {{javadoc_uri}}/GeckoView.html#setViewBackend-int- 614[72.12]: https://developer.android.com/reference/android/view/TextureView 615[72.13]: https://developer.android.com/reference/android/view/SurfaceView 616[72.14]: {{javadoc_uri}}/WebExtension.Action.html 617[72.15]: {{javadoc_uri}}/ContentBlockingController.Event.html#LOADED_TRACKING_CONTENT 618[72.16]: {{javadoc_uri}}/ContentBlockingController.Event.html#LOADED_LEVEL_1_TRACKING_CONTENT 619[72.17]: {{javadoc_uri}}/ContentBlockingController.Event.html#LOADED_LEVEL_2_TRACKING_CONTENT 620[72.18]: {{javadoc_uri}}/WebPushController.html#onPushEvent-org.mozilla.geckoview.WebPushSubscription-byte:A- 621[72.19]: {{javadoc_uri}}/WebPushSubscription.html 622[72.20]: https://developer.android.com/reference/java/lang/String 623[72.21]: {{javadoc_uri}}/WebExtension.Icon.html 624[72.22]: {{javadoc_uri}}/GeckoWebExecutor.html#FETCH_FLAGS_STREAM_FAILURE_TEST 625[72.23]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-java.io.File-org.json.JSONObject- 626[72.24]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_PERSISTENT_XR 627 628= 629## v71 630- Added a content blocking flag for blocked social cookies to [`ContentBlocking`][70.17]. 631 ([bug 1584479]({{bugzilla}}1584479)) 632- Added [`onBooleanScalar`][71.1], [`onLongScalar`][71.2], 633 [`onStringScalar`][71.3] to [`RuntimeTelemetry.Delegate`][70.12] to support 634 scalars in streaming telemetry. ⚠️ As part of this change, 635 `onTelemetryReceived` has been renamed to [`onHistogram`][71.4], and 636 [`Metric`][71.5] now takes a type parameter. 637 ([bug 1576730]({{bugzilla}}1576730)) 638- Added overloads of [`GeckoSession.loadUri`][71.6] that accept a map of 639 additional HTTP request headers. 640 ([bug 1567549]({{bugzilla}}1567549)) 641- Added support for exposing the content blocking log in [`ContentBlockingController`][71.7]. 642 ([bug 1580201]({{bugzilla}}1580201)) 643- ⚠️ Added `nativeApp` to [`WebExtension.MessageDelegate.onMessage`][71.8] which 644 exposes the native application identifier that was used to send the message. 645 ([bug 1546445]({{bugzilla}}1546445)) 646- Added [`GeckoRuntime.ServiceWorkerDelegate`][71.9] set via 647 [`setServiceWorkerDelegate`][71.10] to support [`ServiceWorkerClients.openWindow`][71.11] 648 ([bug 1511033]({{bugzilla}}1511033)) 649- Added [`GeckoRuntimeSettings.Builder#aboutConfigEnabled`][71.12] to control whether or 650 not `about:config` should be available. 651 ([bug 1540065]({{bugzilla}}1540065)) 652- Added [`GeckoSession.ContentDelegate.onFirstContentfulPaint`][71.13] 653 ([bug 1578947]({{bugzilla}}1578947)) 654- Added `setEnhancedTrackingProtectionLevel` to [`ContentBlocking.Settings`][71.14]. 655 ([bug 1580854]({{bugzilla}}1580854)) 656- ⚠️ Added [`GeckoView.onTouchEventForResult`][71.15] and modified 657 [`PanZoomController.onTouchEvent`][71.16] to return how the touch event was handled. This 658 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`. 659- Added [`GeckoSession.purgeHistory`][71.17] allowing apps to clear a session's history. 660 ([bug 1583265]({{bugzilla}}1583265)) 661- Added [`GeckoRuntimeSettings.Builder#forceUserScalableEnabled`][71.18] to control whether or 662 not to force user scalable zooming. 663 ([bug 1540615]({{bugzilla}}1540615)) 664- ⚠️ Moved Autofill related methods from `SessionTextInput` and `GeckoSession.TextInputDelegate` 665 into `GeckoSession` and `AutofillDelegate`. 666- Added [`GeckoSession.getAutofillElements()`][71.19], which is a new method for getting 667 an autofill virtual structure without using `ViewStructure`. It relies on a new class, 668 [`AutofillElement`][71.20], for representing the virtual tree. 669- Added [`GeckoView.setAutofillEnabled`][71.21] for controlling whether or not the `GeckoView` 670 instance participates in Android autofill. When enabled, this connects an `AutofillDelegate` 671 to the session it holds. 672- Changed [`AutofillElement.children`][71.20] interface to `Collection` to provide 673 an efficient way to pre-allocate memory when filling `ViewStructure`. 674- Added [`GeckoSession.PromptDelegate.onSharePrompt`][71.22] to support the WebShare API. 675 ([bug 1402369]({{bugzilla}}1402369)) 676- Added [`GeckoDisplay.screenshot`][71.23] allowing apps finer grain control over screenshots. 677 ([bug 1577192]({{bugzilla}}1577192)) 678- Added `GeckoView.setDynamicToolbarMaxHeight` to make ICB size static, ICB doesn't include the dynamic toolbar region. 679 ([bug 1586144]({{bugzilla}}1586144)) 680 681[71.1]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onBooleanScalar-org.mozilla.geckoview.RuntimeTelemetry.Metric- 682[71.2]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onLongScalar-org.mozilla.geckoview.RuntimeTelemetry.Metric- 683[71.3]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onStringScalar-org.mozilla.geckoview.RuntimeTelemetry.Metric- 684[71.4]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html#onHistogram-org.mozilla.geckoview.RuntimeTelemetry.Metric- 685[71.5]: {{javadoc_uri}}/RuntimeTelemetry.Metric.html 686[71.6]: {{javadoc_uri}}/GeckoSession.html#loadUri-java.lang.String-java.io.File-java.util.Map- 687[71.7]: {{javadoc_uri}}/ContentBlockingController.html 688[71.8]: {{javadoc_uri}}/WebExtension.MessageDelegate.html#onMessage-java.lang.String-java.lang.Object-org.mozilla.geckoview.WebExtension.MessageSender- 689[71.9]: {{javadoc_uri}}/GeckoRuntime.ServiceWorkerDelegate.html 690[71.10]: {{javadoc_uri}}/GeckoRuntime#setServiceWorkerDelegate-org.mozilla.geckoview.GeckoRuntime.ServiceWorkerDelegate- 691[71.11]: https://developer.mozilla.org/en-US/docs/Web/API/Clients/openWindow 692[71.12]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#aboutConfigEnabled-boolean- 693[71.13]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onFirstContentfulPaint-org.mozilla.geckoview.GeckoSession- 694[71.15]: {{javadoc_uri}}/GeckoView.html#onTouchEventForResult-android.view.MotionEvent- 695[71.16]: {{javadoc_uri}}/PanZoomController.html#onTouchEvent-android.view.MotionEvent- 696[71.17]: {{javadoc_uri}}/GeckoSession.html#purgeHistory-- 697[71.18]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#forceUserScalableEnabled-boolean- 698[71.19]: {{javadoc_uri}}/GeckoSession.html#getAutofillElements-- 699[71.20]: {{javadoc_uri}}/AutofillElement.html 700[71.21]: {{javadoc_uri}}/GeckoView.html#setAutofillEnabled-boolean- 701[71.22]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#onSharePrompt-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.PromptDelegate.SharePrompt- 702[71.23]: {{javadoc_uri}}/GeckoDisplay.html#screenshot-- 703 704## v70 705- Added API for session context assignment 706 [`GeckoSessionSettings.Builder.contextId`][70.1] and deletion of data related 707 to a session context [`StorageController.clearDataForSessionContext`][70.2]. 708 ([bug 1501108]({{bugzilla}}1501108)) 709- Removed `setSession(session, runtime)` from [`GeckoView`][70.5]. With this 710 change, `GeckoView` will no longer manage opening/closing of the 711 [`GeckoSession`][70.6] and instead leave that up to the app. It's also now 712 allowed to call [`setSession`][70.10] with a closed `GeckoSession`. 713 ([bug 1510314]({{bugzilla}}1510314)) 714- Added an overload of [`GeckoSession.loadUri()`][70.8] that accepts a 715 referring [`GeckoSession`][70.6]. This should be used when the URI we're 716 loading originates from another page. A common example of this would be long 717 pressing a link and then opening that in a new `GeckoSession`. 718 ([bug 1561079]({{bugzilla}}1561079)) 719- Added capture parameter to [`onFilePrompt`][70.9] and corresponding 720 [`CAPTURE_TYPE_*`][70.7] constants. 721 ([bug 1553603]({{bugzilla}}1553603)) 722- Removed the obsolete `success` parameter from 723 [`CrashReporter#sendCrashReport(Context, File, File, String)`][70.3] and 724 [`CrashReporter#sendCrashReport(Context, File, Map, String)`][70.4]. 725 ([bug 1570789]({{bugzilla}}1570789)) 726- Add `GeckoSession.LOAD_FLAGS_REPLACE_HISTORY`. 727 ([bug 1571088]({{bugzilla}}1571088)) 728- Complete rewrite of [`PromptDelegate`][70.11]. 729 ([bug 1499394]({{bugzilla}}1499394)) 730- Added [`RuntimeTelemetry.Delegate`][70.12] that receives streaming telemetry 731 data from GeckoView. 732 ([bug 1566367]({{bugzilla}}1566367)) 733- Updated [`ContentBlocking`][70.13] to better report blocked and allowed ETP events. 734 ([bug 1567268]({{bugzilla}}1567268)) 735- Added API for controlling Gecko logging [`GeckoRuntimeSettings.debugLogging`][70.14] 736 ([bug 1573304]({{bugzilla}}1573304)) 737- Added [`WebNotification`][70.15] and [`WebNotificationDelegate`][70.16] for handling Web Notifications. 738 ([bug 1533057]({{bugzilla}}1533057)) 739- Added Social Tracking Protection support to [`ContentBlocking`][70.17]. 740 ([bug 1568295]({{bugzilla}}1568295)) 741- Added [`WebExtensionController`][70.18] and [`WebExtensionController.TabDelegate`][70.19] to handle 742 [`browser.tabs.create`][70.20] calls by WebExtensions. 743 ([bug 1539144]({{bugzilla}}1539144)) 744- Added [`onCloseTab`][70.21] to [`WebExtensionController.TabDelegate`][70.19] to handle 745 [`browser.tabs.remove`][70.22] calls by WebExtensions. 746 ([bug 1565782]({{bugzilla}}1565782)) 747- Added onSlowScript to [`ContentDelegate`][70.23] which allows handling of slow and hung scripts. 748 ([bug 1621094]({{bugzilla}}1621094)) 749- Added support for Web Push via [`WebPushController`][70.24], [`WebPushDelegate`][70.25], and 750 [`WebPushSubscription`][70.26]. 751- Added [`ContentBlockingController`][70.27], accessible via [`GeckoRuntime.getContentBlockingController`][70.28] 752 to allow modification and inspection of a content blocking exception list. 753 754[70.1]: {{javadoc_uri}}/GeckoSessionSettings.Builder.html#contextId-java.lang.String- 755[70.2]: {{javadoc_uri}}/StorageController.html#clearDataForSessionContext-java.lang.String- 756[70.3]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-java.io.File-java.io.File-java.lang.String- 757[70.4]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-java.io.File-java.util.Map-java.lang.String- 758[70.5]: {{javadoc_uri}}/GeckoView.html 759[70.6]: {{javadoc_uri}}/GeckoSession.html 760[70.7]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html#CAPTURE_TYPE_NONE 761[70.8]: {{javadoc_uri}}/GeckoSession.html#loadUri-java.lang.String-org.mozilla.geckoview.GeckoSession-int- 762[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- 763[70.10]: {{javadoc_uri}}/GeckoView.html#setSession-org.mozilla.geckoview.GeckoSession- 764[70.11]: {{javadoc_uri}}/GeckoSession.PromptDelegate.html 765[70.12]: {{javadoc_uri}}/RuntimeTelemetry.Delegate.html 766[70.13]: {{javadoc_uri}}/ContentBlocking.html 767[70.14]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#debugLogging-boolean- 768[70.15]: {{javadoc_uri}}/WebNotification.html 769[70.16]: {{javadoc_uri}}/WebNotificationDelegate.html 770[70.17]: {{javadoc_uri}}/ContentBlocking.html 771[70.18]: {{javadoc_uri}}/WebExtensionController.html 772[70.19]: {{javadoc_uri}}/WebExtensionController.TabDelegate.html 773[70.20]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create 774[70.21]: {{javadoc_uri}}/WebExtensionController.TabDelegate.html#onCloseTab-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.GeckoSession- 775[70.22]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/remove 776[70.23]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html 777[70.24]: {{javadoc_uri}}/WebPushController.html 778[70.25]: {{javadoc_uri}}/WebPushDelegate.html 779[70.26]: {{javadoc_uri}}/WebPushSubscription.html 780[70.27]: {{javadoc_uri}}/ContentBlockingController.html 781[70.28]: {{javadoc_uri}}/GeckoRuntime.html#getContentBlockingController-- 782 783## v69 784- Modified behavior of ['setAutomaticFontSizeAdjustment'][69.1] so that it no 785 longer has any effect on ['setFontInflationEnabled'][69.2] 786- Add [GeckoSession.LOAD_FLAGS_FORCE_ALLOW_DATA_URI][69.14] 787- Added [`GeckoResult.accept`][69.3] for consuming a result without 788 transforming it. 789- [`GeckoSession.setMessageDelegate`][69.13] callers must now specify the 790 [`WebExtension`][69.5] that the [`MessageDelegate`][69.4] will receive 791 messages from. 792- Created [`onKill`][69.7] to [`ContentDelegate`][69.11] to differentiate from crashes. 793 794[69.1]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutomaticFontSizeAdjustment-boolean- 795[69.2]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setFontInflationEnabled-boolean- 796[69.3]: {{javadoc_uri}}/GeckoResult.html#accept-org.mozilla.geckoview.GeckoResult.Consumer- 797[69.4]: {{javadoc_uri}}/WebExtension.MessageDelegate.html 798[69.5]: {{javadoc_uri}}/WebExtension.html 799[69.7]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onKill-org.mozilla.geckoview.GeckoSession- 800[69.11]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html 801[69.13]: {{javadoc_uri}}/GeckoSession.html#setMessageDelegate-org.mozilla.geckoview.WebExtension-org.mozilla.geckoview.WebExtension.MessageDelegate-java.lang.String- 802[69.14]: {{javadoc_uri}}/GeckoSession.html#LOAD_FLAGS_FORCE_ALLOW_DATA_URI 803 804## v68 805- Added [`GeckoRuntime#configurationChanged`][68.1] to notify the device 806 configuration has changed. 807- Added [`onSessionStateChange`][68.29] to [`ProgressDelegate`][68.2] and removed `saveState`. 808- Added [`ContentBlocking#AT_CRYPTOMINING`][68.3] for cryptocurrency miner blocking. 809- Added [`ContentBlocking#AT_DEFAULT`][68.4], [`ContentBlocking#AT_STRICT`][68.5], 810 [`ContentBlocking#CB_DEFAULT`][68.6] and [`ContentBlocking#CB_STRICT`][68.7] 811 for clearer app default selections. 812- Added [`GeckoSession.SessionState.fromString`][68.8]. This can be used to 813 deserialize a `GeckoSession.SessionState` instance previously serialized to 814 a `String` via `GeckoSession.SessionState.toString`. 815- Added [`GeckoRuntimeSettings#setPreferredColorScheme`][68.9] to override 816 the default color theme for web content ("light" or "dark"). 817- Added [`@NonNull`][66.1] or [`@Nullable`][66.2] to all fields. 818- [`RuntimeTelemetry#getSnapshots`][68.10] returns a [`JSONObject`][68.30] now. 819- Removed all `org.mozilla.gecko` references in the API. 820- Added [`ContentBlocking#AT_FINGERPRINTING`][68.11] to block fingerprinting trackers. 821- Added [`HistoryItem`][68.31] and [`HistoryList`][68.32] interfaces and [`onHistoryStateChange`][68.34] to 822 [`HistoryDelegate`][68.12] and added [`gotoHistoryIndex`][68.33] to [`GeckoSession`][68.13]. 823- [`GeckoView`][70.5] will not create a [`GeckoSession`][65.9] anymore when 824 attached to a window without a session. 825- Added [`GeckoRuntimeSettings.Builder#configFilePath`][68.16] to set 826 a path to a configuration file from which GeckoView will read 827 configuration options such as Gecko process arguments, environment 828 variables, and preferences. 829- Added [`unregisterWebExtension`][68.17] to unregister a web extension. 830- Added messaging support for WebExtension. [`setMessageDelegate`][68.18] 831 allows embedders to listen to messages coming from a WebExtension. 832 [`Port`][68.19] allows bidirectional communication between the embedder and 833 the WebExtension. 834- Expose the following prefs in [`GeckoRuntimeSettings`][67.3]: 835 [`setAutoZoomEnabled`][68.20], [`setDoubleTapZoomingEnabled`][68.21], 836 [`setGlMsaaLevel`][68.22]. 837- Added new constant for requesting external storage Android permissions, [`PERMISSION_PERSISTENT_STORAGE`][68.35] 838- Added `setVerticalClipping` to [`GeckoDisplay`][68.24] and 839 [`GeckoView`][68.23] to tell Gecko how much of its vertical space is clipped. 840- Added [`StorageController`][68.25] API for clearing data. 841- Added [`onRecordingStatusChanged`][68.26] to [`MediaDelegate`][68.27] to handle events related to the status of recording devices. 842- Removed redundant constants in [`MediaSource`][68.28] 843 844[68.1]: {{javadoc_uri}}/GeckoRuntime.html#configurationChanged-android.content.res.Configuration- 845[68.2]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.html 846[68.3]: {{javadoc_uri}}/ContentBlocking.html#AT_CRYPTOMINING 847[68.4]: {{javadoc_uri}}/ContentBlocking.html#AT_DEFAULT 848[68.5]: {{javadoc_uri}}/ContentBlocking.html#AT_STRICT 849[68.6]: {{javadoc_uri}}/ContentBlocking.html#CB_DEFAULT 850[68.7]: {{javadoc_uri}}/ContentBlocking.html#CB_STRICT 851[68.8]: {{javadoc_uri}}/GeckoSession.SessionState.html#fromString-java.lang.String- 852[68.9]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setPreferredColorScheme-int- 853[68.10]: {{javadoc_uri}}/RuntimeTelemetry.html#getSnapshots-boolean- 854[68.11]: {{javadoc_uri}}/ContentBlocking.html#AT_FINGERPRINTING 855[68.12]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.html 856[68.13]: {{javadoc_uri}}/GeckoSession.html 857[68.16]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#configFilePath-java.lang.String- 858[68.17]: {{javadoc_uri}}/GeckoRuntime.html#unregisterWebExtension-org.mozilla.geckoview.WebExtension- 859[68.18]: {{javadoc_uri}}/WebExtension.html#setMessageDelegate-org.mozilla.geckoview.WebExtension.MessageDelegate-java.lang.String- 860[68.19]: {{javadoc_uri}}/WebExtension.Port.html 861[68.20]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutoZoomEnabled-boolean- 862[68.21]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setDoubleTapZoomingEnabled-boolean- 863[68.22]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setGlMsaaLevel-int- 864[68.23]: {{javadoc_uri}}/GeckoView.html#setVerticalClipping-int- 865[68.24]: {{javadoc_uri}}/GeckoDisplay.html#setVerticalClipping-int- 866[68.25]: {{javadoc_uri}}/StorageController.html 867[68.26]: {{javadoc_uri}}/GeckoSession.MediaDelegate.html#onRecordingStatusChanged-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.MediaDelegate.RecordingDevice:A- 868[68.27]: {{javadoc_uri}}/GeckoSession.MediaDelegate.html 869[68.28]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.MediaSource.html 870[68.29]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.html#onSessionStateChange-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.SessionState- 871[68.30]: https://developer.android.com/reference/org/json/JSONObject 872[68.31]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.HistoryItem.html 873[68.32]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.HistoryList.html 874[68.33]: {{javadoc_uri}}/GeckoSession.html#gotoHistoryIndex-int- 875[68.34]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.html#onHistoryStateChange-org.mozilla.geckoview.GeckoSession-org.mozilla.geckoview.GeckoSession.HistoryDelegate.HistoryList- 876[68.35]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#PERMISSION_PERSISTENT_STORAGE 877 878## v67 879- Added [`setAutomaticFontSizeAdjustment`][67.23] to 880 [`GeckoRuntimeSettings`][67.3] for automatically adjusting font size settings 881 depending on the OS-level font size setting. 882- Added [`setFontSizeFactor`][67.4] to [`GeckoRuntimeSettings`][67.3] for 883 setting a font size scaling factor, and for enabling font inflation for 884 non-mobile-friendly pages. 885- Updated video autoplay API to reflect changes in Gecko. Instead of being a 886 per-video permission in the [`PermissionDelegate`][67.5], it is a [runtime 887 setting][67.6] that either allows or blocks autoplay videos. 888- Change [`ContentBlocking.AT_AD`][67.7] and [`ContentBlocking.SB_ALL`][67.8] 889 values to mirror the actual constants they encompass. 890- Added nested [`ContentBlocking`][67.9] runtime settings. 891- Added [`RuntimeSettings`][67.10] base class to support nested settings. 892- Added [`baseUri`][67.11] to [`ContentDelegate.ContextElement`][65.21] and 893 changed [`linkUri`][67.12] to absolute form. 894- Added [`scrollBy`][67.13] and [`scrollTo`][67.14] to [`PanZoomController`][65.4]. 895- Added [`GeckoSession.getDefaultUserAgent`][67.1] to expose the build-time 896 default user agent synchronously. 897- Changed [`WebResponse.body`][67.24] from a [`ByteBuffer`][67.25] to an [`InputStream`][67.26]. Apps that want access 898 to the entire response body will now need to read the stream themselves. 899- Added [`GeckoWebExecutor.FETCH_FLAGS_NO_REDIRECTS`][67.27], which will cause [`GeckoWebExecutor.fetch()`][67.28] to not 900 automatically follow [HTTP redirects][67.29] (e.g., 302). 901- Moved [`GeckoVRManager`][67.2] into the org.mozilla.geckoview package. 902- Initial WebExtension support. [`GeckoRuntime#registerWebExtension`][67.15] 903 allows embedders to register a local web extension. 904- 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. 905- 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. 906- Add missing [`@Nullable`][66.2] annotation to return value for 907 [`GeckoSession.PromptDelegate.ChoiceCallback.onPopupResult()`][67.30] 908- Added `default` implementations for all non-functional `interface`s. 909- Added [`ContentDelegate.onWebAppManifest`][67.22], which will deliver the contents of a parsed 910 and validated Web App Manifest on pages that contain one. 911 912[67.1]: {{javadoc_uri}}/GeckoSession.html#getDefaultUserAgent-- 913[67.2]: {{javadoc_uri}}/GeckoVRManager.html 914[67.3]: {{javadoc_uri}}/GeckoRuntimeSettings.html 915[67.4]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setFontSizeFactor-float- 916[67.5]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html 917[67.6]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutoplayDefault-int- 918[67.7]: {{javadoc_uri}}/ContentBlocking.html#AT_AD 919[67.8]: {{javadoc_uri}}/ContentBlocking.html#SB_ALL 920[67.9]: {{javadoc_uri}}/ContentBlocking.html 921[67.10]: {{javadoc_uri}}/RuntimeSettings.html 922[67.11]: {{javadoc_uri}}/GeckoSession.ContentDelegate.ContextElement.html#baseUri 923[67.12]: {{javadoc_uri}}/GeckoSession.ContentDelegate.ContextElement.html#linkUri 924[67.13]: {{javadoc_uri}}/PanZoomController.html#scrollBy-org.mozilla.geckoview.ScreenLength-org.mozilla.geckoview.ScreenLength- 925[67.14]: {{javadoc_uri}}/PanZoomController.html#scrollTo-org.mozilla.geckoview.ScreenLength-org.mozilla.geckoview.ScreenLength- 926[67.15]: {{javadoc_uri}}/GeckoRuntime.html#registerWebExtension-org.mozilla.geckoview.WebExtension- 927[67.16]: {{javadoc_uri}}/GeckoView.html#capturePixels-- 928[67.17]: https://developer.android.com/reference/android/graphics/Bitmap 929[67.18]: https://developer.android.com/reference/android/view/Surface 930[67.19]: https://developer.android.com/reference/java/lang/IllegalStateException 931[67.20]: {{javadoc_uri}}/GeckoDisplay.html 932[67.21]: {{javadoc_uri}}/GeckoDisplay.html#capturePixels-- 933[67.22]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onWebAppManifest-org.mozilla.geckoview.GeckoSession-org.json.JSONObject- 934[67.23]: {{javadoc_uri}}/GeckoRuntimeSettings.html#setAutomaticFontSizeAdjustment-boolean- 935[67.24]: {{javadoc_uri}}/WebResponse.html#body 936[67.25]: https://developer.android.com/reference/java/nio/ByteBuffer 937[67.26]: https://developer.android.com/reference/java/io/InputStream 938[67.27]: {{javadoc_uri}}/GeckoWebExecutor.html#FETCH_FLAGS_NO_REDIRECTS 939[67.28]: {{javadoc_uri}}/GeckoWebExecutor.html#fetch-org.mozilla.geckoview.WebRequest-int- 940[67.29]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections 941[67.30]: {{javadoc_uri}}/GeckoSession.PromptDelegate.ChoiceCallback.html 942 943## v66 944- Removed redundant field `trackingMode` from [`SecurityInformation`][66.6]. 945 Use `TrackingProtectionDelegate.onTrackerBlocked` for notification of blocked 946 elements during page load. 947- Added [`@NonNull`][66.1] or [`@Nullable`][66.2] to all APIs. 948- Added methods for each setting in [`GeckoSessionSettings`][66.3] 949- Added [`GeckoSessionSettings`][66.4] for enabling desktop viewport. Desktop 950 viewport is no longer set by [`USER_AGENT_MODE_DESKTOP`][66.5] and must be set 951 separately. 952- Added [`@UiThread`][65.6] to [`GeckoSession.releaseSession`][66.7] and 953 [`GeckoSession.setSession`][66.8] 954 955[66.1]: https://developer.android.com/reference/android/support/annotation/NonNull 956[66.2]: https://developer.android.com/reference/android/support/annotation/Nullable 957[66.3]: {{javadoc_uri}}/GeckoSessionSettings.html 958[66.4]: {{javadoc_uri}}/GeckoSessionSettings.html 959[66.5]: {{javadoc_uri}}/GeckoSessionSettings.html#USER_AGENT_MODE_DESKTOP 960[66.6]: {{javadoc_uri}}/GeckoSession.ProgressDelegate.SecurityInformation.html 961[66.7]: {{javadoc_uri}}/GeckoView.html#releaseSession-- 962[66.8]: {{javadoc_uri}}/GeckoView.html#setSession-org.mozilla.geckoview.GeckoSession- 963 964## v65 965- Added experimental ad-blocking category to `GeckoSession.TrackingProtectionDelegate`. 966- Moved [`CompositorController`][65.1], [`DynamicToolbarAnimator`][65.2], 967 [`OverscrollEdgeEffect`][65.3], [`PanZoomController`][65.4] from 968 `org.mozilla.gecko.gfx` to [`org.mozilla.geckoview`][65.5] 969- Added [`@UiThread`][65.6], [`@AnyThread`][65.7] annotations to all APIs 970- Changed `GeckoRuntimeSettings#getLocale` to [`getLocales`][65.8] and related 971 APIs. 972- Merged `org.mozilla.gecko.gfx.LayerSession` into [`GeckoSession`][65.9] 973- Added [`GeckoSession.MediaDelegate`][65.10] and [`MediaElement`][65.11]. This 974 allow monitoring and control of web media elements (play, pause, seek, etc). 975- Removed unused `access` parameter from 976 [`GeckoSession.PermissionDelegate#onContentPermissionRequest`][65.12] 977- Added [`WebMessage`][65.13], [`WebRequest`][65.14], [`WebResponse`][65.15], 978 and [`GeckoWebExecutor`][65.16]. This exposes Gecko networking to apps. It 979 includes speculative connections, name resolution, and a Fetch-like HTTP API. 980- Added [`GeckoSession.HistoryDelegate`][65.17]. This allows apps to implement 981 their own history storage system and provide visited link status. 982- Added [`ContentDelegate#onFirstComposite`][65.18] to get first composite 983 callback after a compositor start. 984- Changed `LoadRequest.isUserTriggered` to [`isRedirect`][65.19]. 985- Added [`GeckoSession.LOAD_FLAGS_BYPASS_CLASSIFIER`][65.20] to bypass the URI 986 classifier. 987- Added a `protected` empty constructor to all field-only classes so that apps 988 can mock these classes in tests. 989- Added [`ContentDelegate.ContextElement`][65.21] to extend the information 990 passed to [`ContentDelegate#onContextMenu`][65.22]. Extended information 991 includes the element's title and alt attributes. 992- Changed [`ContentDelegate.ContextElement`][65.21] `TYPE_` constants to public 993 access. 994- Changed [`ContentDelegate.ContextElement`][65.21], 995 [`GeckoSession.FinderResult`][65.23] to non-final class. 996- Update [`CrashReporter#sendCrashReport`][65.24] to return the crash ID as a 997 [`GeckoResult<String>`][65.25]. 998 999[65.1]: {{javadoc_uri}}/CompositorController.html 1000[65.2]: {{javadoc_uri}}/DynamicToolbarAnimator.html 1001[65.3]: {{javadoc_uri}}/OverscrollEdgeEffect.html 1002[65.4]: {{javadoc_uri}}/PanZoomController.html 1003[65.5]: {{javadoc_uri}}/package-summary.html 1004[65.6]: https://developer.android.com/reference/android/support/annotation/UiThread 1005[65.7]: https://developer.android.com/reference/android/support/annotation/AnyThread 1006[65.8]: {{javadoc_uri}}/GeckoRuntimeSettings.html#getLocales-- 1007[65.9]: {{javadoc_uri}}/GeckoSession.html 1008[65.10]: {{javadoc_uri}}/GeckoSession.MediaDelegate.html 1009[65.11]: {{javadoc_uri}}/MediaElement.html 1010[65.12]: {{javadoc_uri}}/GeckoSession.PermissionDelegate.html#onContentPermissionRequest-org.mozilla.geckoview.GeckoSession-java.lang.String-int-org.mozilla.geckoview.GeckoSession.PermissionDelegate.Callback- 1011[65.13]: {{javadoc_uri}}/WebMessage.html 1012[65.14]: {{javadoc_uri}}/WebRequest.html 1013[65.15]: {{javadoc_uri}}/WebResponse.html 1014[65.16]: {{javadoc_uri}}/GeckoWebExecutor.html 1015[65.17]: {{javadoc_uri}}/GeckoSession.HistoryDelegate.html 1016[65.18]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onFirstComposite-org.mozilla.geckoview.GeckoSession- 1017[65.19]: {{javadoc_uri}}/GeckoSession.NavigationDelegate.LoadRequest.html#isRedirect 1018[65.20]: {{javadoc_uri}}/GeckoSession.html#LOAD_FLAGS_BYPASS_CLASSIFIER 1019[65.21]: {{javadoc_uri}}/GeckoSession.ContentDelegate.ContextElement.html 1020[65.22]: {{javadoc_uri}}/GeckoSession.ContentDelegate.html#onContextMenu-org.mozilla.geckoview.GeckoSession-int-int-org.mozilla.geckoview.GeckoSession.ContentDelegate.ContextElement- 1021[65.23]: {{javadoc_uri}}/GeckoSession.FinderResult.html 1022[65.24]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-android.os.Bundle-java.lang.String- 1023[65.25]: {{javadoc_uri}}/GeckoResult.html 1024 1025[api-version]: 05c7e21b7ea40cd9978b319a9acfac1b256e700f 1026