mirror of
https://github.com/bitwarden/android.git
synced 2026-04-27 11:28:41 -05:00
PM-31926: Add Autofill reminder for Vivaldi browser (#6494)
This commit is contained in:
@@ -30,6 +30,8 @@ class AutofillActivityManagerImpl(
|
||||
braveStableStatusData = browserThirdPartyAutofillManager.stableBraveAutofillStatus,
|
||||
chromeStableStatusData = browserThirdPartyAutofillManager.stableChromeAutofillStatus,
|
||||
chromeBetaChannelStatusData = browserThirdPartyAutofillManager.betaChromeAutofillStatus,
|
||||
vivaldiStableChannelStatusData = browserThirdPartyAutofillManager
|
||||
.stableVivaldiAutofillStatus,
|
||||
)
|
||||
|
||||
init {
|
||||
|
||||
@@ -39,4 +39,8 @@ private val DEFAULT_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -22,4 +22,9 @@ interface BrowserThirdPartyAutofillManager {
|
||||
* The data representing the status of the beta Chrome version
|
||||
*/
|
||||
val betaChromeAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
|
||||
/**
|
||||
* The data representing the status of the Vivaldi version
|
||||
*/
|
||||
val stableVivaldiAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ class BrowserThirdPartyAutofillManagerImpl(
|
||||
get() = getThirdPartyAutoFillStatusForChannel(BrowserPackage.CHROME_STABLE)
|
||||
override val betaChromeAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
get() = getThirdPartyAutoFillStatusForChannel(BrowserPackage.CHROME_BETA)
|
||||
override val stableVivaldiAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
get() = getThirdPartyAutoFillStatusForChannel(BrowserPackage.VIVALDI_STABLE)
|
||||
|
||||
private fun getThirdPartyAutoFillStatusForChannel(
|
||||
releaseChannel: BrowserPackage,
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.x8bit.bitwarden.data.autofill.model.browser
|
||||
private const val BRAVE_CHANNEL_PACKAGE = "com.brave.browser"
|
||||
private const val CHROME_BETA_CHANNEL_PACKAGE = "com.chrome.beta"
|
||||
private const val CHROME_RELEASE_CHANNEL_PACKAGE = "com.android.chrome"
|
||||
private const val VIVALDI_RELEASE_CHANNEL_PACKAGE = "com.vivaldi.browser"
|
||||
|
||||
/**
|
||||
* Enumerated values of each browser that supports third party autofill checks.
|
||||
@@ -13,4 +14,5 @@ enum class BrowserPackage(val packageName: String) {
|
||||
BRAVE_RELEASE(BRAVE_CHANNEL_PACKAGE),
|
||||
CHROME_STABLE(CHROME_RELEASE_CHANNEL_PACKAGE),
|
||||
CHROME_BETA(CHROME_BETA_CHANNEL_PACKAGE),
|
||||
VIVALDI_STABLE(VIVALDI_RELEASE_CHANNEL_PACKAGE),
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ data class BrowserThirdPartyAutofillStatus(
|
||||
val braveStableStatusData: BrowserThirdPartyAutoFillData,
|
||||
val chromeStableStatusData: BrowserThirdPartyAutoFillData,
|
||||
val chromeBetaChannelStatusData: BrowserThirdPartyAutoFillData,
|
||||
val vivaldiStableChannelStatusData: BrowserThirdPartyAutoFillData,
|
||||
) {
|
||||
/**
|
||||
* The total number of available browsers.
|
||||
@@ -24,7 +25,8 @@ data class BrowserThirdPartyAutofillStatus(
|
||||
val availableCount: Int
|
||||
get() = (if (braveStableStatusData.isAvailable) 1 else 0) +
|
||||
(if (chromeStableStatusData.isAvailable) 1 else 0) +
|
||||
(if (chromeBetaChannelStatusData.isAvailable) 1 else 0)
|
||||
(if (chromeBetaChannelStatusData.isAvailable) 1 else 0) +
|
||||
(if (vivaldiStableChannelStatusData.isAvailable) 1 else 0)
|
||||
|
||||
/**
|
||||
* Whether any of the available browsers have third party autofill disabled.
|
||||
@@ -32,5 +34,6 @@ data class BrowserThirdPartyAutofillStatus(
|
||||
val isAnyIsAvailableAndDisabled: Boolean
|
||||
get() = braveStableStatusData.isAvailableButDisabled ||
|
||||
chromeStableStatusData.isAvailableButDisabled ||
|
||||
chromeBetaChannelStatusData.isAvailableButDisabled
|
||||
chromeBetaChannelStatusData.isAvailableButDisabled ||
|
||||
vivaldiStableChannelStatusData.isAvailableButDisabled
|
||||
}
|
||||
|
||||
@@ -55,4 +55,17 @@ sealed class BrowserAutofillSettingsOption(val isEnabled: Boolean) : Parcelable
|
||||
override val optionText: Text
|
||||
get() = BitwardenString.use_chrome_beta_autofill_integration.asText()
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the stable Vivaldi release channel.
|
||||
*/
|
||||
@Parcelize
|
||||
data class VivaldiStable(
|
||||
val enabled: Boolean,
|
||||
) : BrowserAutofillSettingsOption(isEnabled = enabled) {
|
||||
override val browserPackage: BrowserPackage
|
||||
get() = BrowserPackage.VIVALDI_STABLE
|
||||
override val optionText: Text
|
||||
get() = BitwardenString.use_vivaldi_autofill_integration.asText()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,7 @@ fun BrowserThirdPartyAutofillStatus.toBrowserAutoFillSettingsOptions(): Immutabl
|
||||
.takeIf { this.chromeStableStatusData.isAvailable },
|
||||
BrowserAutofillSettingsOption.ChromeBeta(chromeBetaChannelStatusData.isThirdPartyEnabled)
|
||||
.takeIf { this.chromeBetaChannelStatusData.isAvailable },
|
||||
BrowserAutofillSettingsOption
|
||||
.VivaldiStable(vivaldiStableChannelStatusData.isThirdPartyEnabled)
|
||||
.takeIf { this.vivaldiStableChannelStatusData.isAvailable },
|
||||
)
|
||||
|
||||
@@ -44,6 +44,7 @@ class AutofillActivityManagerTest {
|
||||
every { stableBraveAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
every { stableChromeAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
every { betaChromeAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
every { stableVivaldiAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
}
|
||||
|
||||
private val browserThirdPartyAutofillEnabledManager: BrowserThirdPartyAutofillEnabledManager =
|
||||
@@ -119,4 +120,5 @@ private val DEFAULT_EXPECTED_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
vivaldiStableChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
@@ -76,6 +76,10 @@ class BrowserAutofillDialogManagerTest {
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
every { autofillEnabledManager.isAutofillEnabled } returns true
|
||||
every {
|
||||
@@ -105,6 +109,10 @@ class BrowserAutofillDialogManagerTest {
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = true,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
every { autofillEnabledManager.isAutofillEnabled } returns true
|
||||
every {
|
||||
@@ -137,6 +145,10 @@ class BrowserAutofillDialogManagerTest {
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
every { autofillEnabledManager.isAutofillEnabled } returns true
|
||||
every {
|
||||
@@ -169,6 +181,10 @@ class BrowserAutofillDialogManagerTest {
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
every { autofillEnabledManager.isAutofillEnabled } returns true
|
||||
every {
|
||||
@@ -202,6 +218,10 @@ class BrowserAutofillDialogManagerTest {
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
every { autofillEnabledManager.isAutofillEnabled } returns true
|
||||
every {
|
||||
|
||||
@@ -60,4 +60,5 @@ private val DEFAULT_EXPECTED_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
vivaldiStableChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
@@ -466,4 +466,5 @@ private val DEFAULT_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
vivaldiStableChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
@@ -70,6 +70,7 @@ class SetupBrowserAutofillViewModelTest {
|
||||
BrowserAutofillSettingsOption.BraveStable(enabled = true),
|
||||
BrowserAutofillSettingsOption.ChromeStable(enabled = false),
|
||||
BrowserAutofillSettingsOption.ChromeBeta(enabled = false),
|
||||
BrowserAutofillSettingsOption.VivaldiStable(enabled = false),
|
||||
),
|
||||
),
|
||||
awaitItem(),
|
||||
@@ -85,6 +86,7 @@ class SetupBrowserAutofillViewModelTest {
|
||||
browserAutofillSettingsOptions = persistentListOf(
|
||||
BrowserAutofillSettingsOption.ChromeStable(enabled = false),
|
||||
BrowserAutofillSettingsOption.ChromeBeta(enabled = false),
|
||||
BrowserAutofillSettingsOption.VivaldiStable(enabled = false),
|
||||
),
|
||||
),
|
||||
awaitItem(),
|
||||
@@ -233,6 +235,10 @@ private val DEFAULT_BROWSER_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
|
||||
private val DEFAULT_STATE = SetupBrowserAutofillState(
|
||||
@@ -242,5 +248,6 @@ private val DEFAULT_STATE = SetupBrowserAutofillState(
|
||||
BrowserAutofillSettingsOption.BraveStable(enabled = false),
|
||||
BrowserAutofillSettingsOption.ChromeStable(enabled = false),
|
||||
BrowserAutofillSettingsOption.ChromeBeta(enabled = false),
|
||||
BrowserAutofillSettingsOption.VivaldiStable(enabled = false),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -547,4 +547,5 @@ private val DEFAULT_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
vivaldiStableChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
@@ -24,6 +24,10 @@ class BrowserThirdPartyAutofillStatusExtensionsTest {
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
|
||||
val result = browserThirdPartyAutofillStatus.toBrowserAutoFillSettingsOptions()
|
||||
@@ -47,6 +51,10 @@ class BrowserThirdPartyAutofillStatusExtensionsTest {
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
vivaldiStableChannelStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = true,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
)
|
||||
|
||||
val result = browserThirdPartyAutofillStatus.toBrowserAutoFillSettingsOptions()
|
||||
@@ -56,6 +64,7 @@ class BrowserThirdPartyAutofillStatusExtensionsTest {
|
||||
BrowserAutofillSettingsOption.BraveStable(enabled = false),
|
||||
BrowserAutofillSettingsOption.ChromeStable(enabled = true),
|
||||
BrowserAutofillSettingsOption.ChromeBeta(enabled = false),
|
||||
BrowserAutofillSettingsOption.VivaldiStable(enabled = false),
|
||||
),
|
||||
result,
|
||||
)
|
||||
|
||||
@@ -936,6 +936,7 @@ Do you want to switch to this account?</string>
|
||||
<string name="use_brave_autofill_integration">Use Brave autofill integration</string>
|
||||
<string name="use_chrome_autofill_integration">Use Chrome autofill integration</string>
|
||||
<string name="use_chrome_beta_autofill_integration">Use Chrome Beta autofill integration</string>
|
||||
<string name="use_vivaldi_autofill_integration">Use Vivaldi autofill integration</string>
|
||||
<string name="improves_login_filling_for_supported_websites_on_selected_browsers">Improves login filling for supported websites on selected browsers. Once enabled, you’ll be directed to browser settings to enable third-party autofill.</string>
|
||||
<string name="show_more">Show more</string>
|
||||
<string name="no_folder">No folder</string>
|
||||
|
||||
Reference in New Issue
Block a user