Renamed "BrowserState.updateTabState" to a more appropriate "BrowserState.updateTabOrCustomTabState" signaling that it can be used to update any tab or custom tab. Created two new "BrowserState.updateTabState" and "BrowserState.updateCustomTabState" extension methods to allow updating the state of either tabs or custom tabs depending on the properties needing update. By this we are forcing the clients to choose what type of SessionState they want updated and in so limiting the situations in which the old API would try to update any SessionState and could throw a ClassCastException if in the "update" lambda parameter callers would try to update a property not existing in one SessionState implementation but available in other.
Android Components > Browser > State
The browser-state component is responsible for maintaining the centralized state of a browser engine.
The immutable BrowserState can be accessed and observed via the BrowserStore. Apps and other components can dispatch Actions on the store in order to trigger the creation of a new BrowserState.
Patterns and concepts this component uses are heavily inspired by Redux. Therefore the Redux documentation is an excellent resource for learning about some of those concepts.
Usage
Setting up the dependency
Use Gradle to download the library from maven.mozilla.org (Setup repository):
implementation "org.mozilla.components:browser-state:{latest-version}
License
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/