[flexiglass] Bouncer refactoring, improvements and fixes.
1. Store `AuthMethodBouncerViewModel`s polymorphically. 2. Extract most of the common logic of the bouncer sub-view-models into the parent `AuthMethodBouncerViewModel`, to ensure behavior consistency and remove some code duplication. This fixes some bugs like the error message not always being cleared when the input is cleared. 3. Represent the authentication attempt result more explicitly via a dedicated enum, to prevent confusion when handling a `null` vs `false` result. 4. Fix a memory leak when switching the authentication method. 5. Assign child view models of `BouncerViewModel` a temporary coroutine scope, so we can dispose of them properly when the authentication method is switched. 6. Move the "skip-authentication" business logic from `BouncerViewModel` to `BouncerInteractor`. 7. Remove `minPatternLength` from `BouncerViewModel` and `BouncerInteractor`. 8. Make view-model unit tests more concise by extracting the setup code (setting the authentication method, locking the device and opening the bouncer) to a helper function. Fix: 300441917 Test: Unit tests still pass. Test: Manually tested the 3 different bouncer auth methods and verified they still work as expected. Change-Id: I711df14547d8b10caf275890b4de6cbdd3177c36
Loading
Please register or sign in to comment