mirror of
https://github.com/bitwarden/android.git
synced 2026-08-25 17:09:55 -05:00
Add Brave integration toggle (#5411)
This commit is contained in:
@@ -335,6 +335,9 @@
|
||||
|
||||
<!-- To Query Chrome Stable: -->
|
||||
<package android:name="com.android.chrome" />
|
||||
|
||||
<!-- To Query Brave Stable: -->
|
||||
<package android:name="com.brave.browser" />
|
||||
</queries>
|
||||
|
||||
</manifest>
|
||||
|
||||
+1
@@ -27,6 +27,7 @@ class AutofillActivityManagerImpl(
|
||||
|
||||
private val browserAutofillStatus: BrowserThirdPartyAutofillStatus
|
||||
get() = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = browserThirdPartyAutofillManager.stableBraveAutofillStatus,
|
||||
chromeStableStatusData = browserThirdPartyAutofillManager.stableChromeAutofillStatus,
|
||||
chromeBetaChannelStatusData = browserThirdPartyAutofillManager.betaChromeAutofillStatus,
|
||||
)
|
||||
|
||||
+4
@@ -41,6 +41,10 @@ class BrowserThirdPartyAutofillEnabledManagerImpl(
|
||||
}
|
||||
|
||||
private val DEFAULT_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
),
|
||||
chromeStableStatusData = BrowserThirdPartyAutoFillData(
|
||||
isAvailable = false,
|
||||
isThirdPartyEnabled = false,
|
||||
|
||||
+5
@@ -8,6 +8,11 @@ import com.x8bit.bitwarden.data.autofill.model.browser.BrowserThirdPartyAutoFill
|
||||
*/
|
||||
interface BrowserThirdPartyAutofillManager {
|
||||
|
||||
/**
|
||||
* The data representing the status of the stable Brave version
|
||||
*/
|
||||
val stableBraveAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
|
||||
/**
|
||||
* The data representing the status of the stable Chrome version
|
||||
*/
|
||||
|
||||
+2
@@ -21,6 +21,8 @@ private const val THIRD_PARTY_MODE_ACTIONS_URI_PATH = "autofill_third_party_mode
|
||||
class BrowserThirdPartyAutofillManagerImpl(
|
||||
private val context: Context,
|
||||
) : BrowserThirdPartyAutofillManager {
|
||||
override val stableBraveAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
get() = getThirdPartyAutoFillStatusForChannel(BrowserPackage.BRAVE_RELEASE)
|
||||
override val stableChromeAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
get() = getThirdPartyAutoFillStatusForChannel(BrowserPackage.CHROME_STABLE)
|
||||
override val betaChromeAutofillStatus: BrowserThirdPartyAutoFillData
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
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"
|
||||
|
||||
@@ -9,6 +10,7 @@ private const val CHROME_RELEASE_CHANNEL_PACKAGE = "com.android.chrome"
|
||||
* @property packageName the package name of the release channel for the browser version.
|
||||
*/
|
||||
enum class BrowserPackage(val packageName: String) {
|
||||
BRAVE_RELEASE(BRAVE_CHANNEL_PACKAGE),
|
||||
CHROME_STABLE(CHROME_RELEASE_CHANNEL_PACKAGE),
|
||||
CHROME_BETA(CHROME_BETA_CHANNEL_PACKAGE),
|
||||
}
|
||||
|
||||
+1
@@ -12,6 +12,7 @@ data class BrowserThirdPartyAutoFillData(
|
||||
* The overall status for all relevant browsers.
|
||||
*/
|
||||
data class BrowserThirdPartyAutofillStatus(
|
||||
val braveStableStatusData: BrowserThirdPartyAutoFillData,
|
||||
val chromeStableStatusData: BrowserThirdPartyAutoFillData,
|
||||
val chromeBetaChannelStatusData: BrowserThirdPartyAutoFillData,
|
||||
)
|
||||
|
||||
+4
@@ -297,6 +297,10 @@ data class AutoFillState(
|
||||
@Suppress("MaxLineLength")
|
||||
private fun BrowserThirdPartyAutofillStatus.toBrowserAutoFillSettingsOptions(): ImmutableList<BrowserAutofillSettingsOption> =
|
||||
persistentListOfNotNull(
|
||||
BrowserAutofillSettingsOption.BraveStable(
|
||||
enabled = this.braveStableStatusData.isThirdPartyEnabled,
|
||||
)
|
||||
.takeIf { this.braveStableStatusData.isAvailable },
|
||||
BrowserAutofillSettingsOption.ChromeStable(
|
||||
enabled = this.chromeStableStatusData.isThirdPartyEnabled,
|
||||
)
|
||||
|
||||
+2
-1
@@ -62,7 +62,7 @@ fun BrowserAutofillSettingsCard(
|
||||
}
|
||||
Text(
|
||||
text = stringResource(
|
||||
R.string.improves_login_filling_for_supported_websites_on_chrome,
|
||||
id = R.string.improves_login_filling_for_supported_websites_on_selected_browsers,
|
||||
),
|
||||
style = BitwardenTheme.typography.bodyMedium,
|
||||
color = BitwardenTheme.colorScheme.text.secondary,
|
||||
@@ -84,6 +84,7 @@ private fun ChromeAutofillSettingsCard_preview() {
|
||||
BitwardenTheme {
|
||||
BrowserAutofillSettingsCard(
|
||||
options = persistentListOf(
|
||||
BrowserAutofillSettingsOption.BraveStable(enabled = true),
|
||||
BrowserAutofillSettingsOption.ChromeStable(enabled = false),
|
||||
BrowserAutofillSettingsOption.ChromeBeta(enabled = true),
|
||||
),
|
||||
|
||||
+13
@@ -17,6 +17,19 @@ sealed class BrowserAutofillSettingsOption(val isEnabled: Boolean) : Parcelable
|
||||
abstract val browserPackage: BrowserPackage
|
||||
abstract val optionText: Text
|
||||
|
||||
/**
|
||||
* Represents the Brave release channel.
|
||||
*/
|
||||
@Parcelize
|
||||
data class BraveStable(
|
||||
val enabled: Boolean,
|
||||
) : BrowserAutofillSettingsOption(isEnabled = enabled) {
|
||||
override val browserPackage: BrowserPackage
|
||||
get() = BrowserPackage.BRAVE_RELEASE
|
||||
override val optionText: Text
|
||||
get() = R.string.use_brave_autofill_integration.asText()
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the stable Chrome release channel.
|
||||
*/
|
||||
|
||||
@@ -908,9 +908,10 @@ Do you want to switch to this account?</string>
|
||||
<string name="passkey_operation_failed_because_no_item_was_selected">Passkey operation failed because no item was selected.</string>
|
||||
<string name="passkey_operation_failed_because_the_request_is_unsupported">Passkey operation failed because the request is unsupported.</string>
|
||||
<string name="self_host_server_url">Self-host server URL</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 autofill integration (Beta)</string>
|
||||
<string name="improves_login_filling_for_supported_websites_on_chrome">Improves login filling for supported websites on Chrome. Once enabled, you’ll be directed to Chrome settings to enable third-party autofill.</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>
|
||||
<string name="show_less">Show less</string>
|
||||
|
||||
+2
@@ -43,6 +43,7 @@ class AutofillActivityManagerTest {
|
||||
every { coroutineContext } returns UnconfinedTestDispatcher()
|
||||
}
|
||||
private val browserThirdPartyAutofillManager = mockk<BrowserThirdPartyAutofillManager> {
|
||||
every { stableBraveAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
every { stableChromeAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
every { betaChromeAutofillStatus } returns DEFAULT_BROWSER_AUTOFILL_DATA
|
||||
}
|
||||
@@ -120,6 +121,7 @@ private val DEFAULT_BROWSER_AUTOFILL_DATA = BrowserThirdPartyAutoFillData(
|
||||
)
|
||||
|
||||
private val DEFAULT_EXPECTED_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
+1
@@ -109,6 +109,7 @@ private val DEFAULT_BROWSER_AUTOFILL_DATA = BrowserThirdPartyAutoFillData(
|
||||
)
|
||||
|
||||
private val DEFAULT_EXPECTED_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
+2
-2
@@ -518,8 +518,8 @@ class AutoFillScreenTest : BitwardenComposeTest() {
|
||||
@Test
|
||||
fun `BrowserAutofillSettingsCard is only displayed when there are options in the list`() {
|
||||
val browserAutofillSupportingText =
|
||||
"Improves login filling for supported websites on Chrome. " +
|
||||
"Once enabled, you’ll be directed to Chrome settings to enable " +
|
||||
"Improves login filling for supported websites on selected browsers. " +
|
||||
"Once enabled, you’ll be directed to browser settings to enable " +
|
||||
"third-party autofill."
|
||||
|
||||
composeTestRule
|
||||
|
||||
+1
@@ -474,6 +474,7 @@ private val DEFAULT_BROWSER_AUTOFILL_DATA = BrowserThirdPartyAutoFillData(
|
||||
)
|
||||
|
||||
private val DEFAULT_AUTOFILL_STATUS = BrowserThirdPartyAutofillStatus(
|
||||
braveStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeStableStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
chromeBetaChannelStatusData = DEFAULT_BROWSER_AUTOFILL_DATA,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user