We wanted to introduce this action for testing purposes in client apps that want to "turn back time" for a certain tab. The difficulty is in ensuring clients do not misuse these actions, and we thought of a few strategies: - Option 1: Make a separate grouping called `DebugAction` and document that these are special actions. - Option 2: Using a middleware, we only allow changes to the store depending on some dynmamic logic in the client app. This is a bit complicated and requries the user to restart the app to add this special middleware. - Option 3: Add an annotation that requires the client to opt into using the action. In this patch, I decided to go with a combination of options 1 and 3 which gave us the right about of warning and flexibility. With option 2, we were still required to add new actions to the store and the middleware would not have prevented misuse in those cases.
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/