Skip to content

Commit

Permalink
Add feature flag for importing passwords via Google Password Manager
Browse files Browse the repository at this point in the history
  • Loading branch information
CDRussell committed Oct 28, 2024
1 parent 8ead85a commit b76501a
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,8 @@ interface AutofillFeature {
*/
@Toggle.DefaultValue(false)
fun showDisableDialogAutofillPrompt(): Toggle

@InternalAlwaysEnabled
@Toggle.DefaultValue(false)
fun canImportFromGooglePasswordManager(): Toggle
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2024 DuckDuckGo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.duckduckgo.autofill.impl.importing.gpm.feature

import com.duckduckgo.autofill.api.AutofillFeature
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.di.scopes.AppScope
import com.squareup.anvil.annotations.ContributesBinding
import javax.inject.Inject
import kotlinx.coroutines.withContext

interface AutofillImportPasswordConfigStore {
suspend fun getConfig(): AutofillImportPasswordSettings
}

data class AutofillImportPasswordSettings(
val launchUrl: String = "",
val javascriptConfig: String = "{}",
)

@ContributesBinding(AppScope::class)
class AutofillImportPasswordConfigStoreImpl @Inject constructor(
private val autofillFeature: AutofillFeature,
private val dispatchers: DispatcherProvider,
) : AutofillImportPasswordConfigStore {

override suspend fun getConfig(): AutofillImportPasswordSettings {
return withContext(dispatchers.io()) {
val config = autofillFeature.canImportFromGooglePasswordManager().getConfig()
val launchUrl = config[LAUNCH_URL] ?: ""
val javascriptConfig = config[JAVASCRIPT_CONFIG] ?: "{}"
AutofillImportPasswordSettings(launchUrl, javascriptConfig)
}
}

companion object {
private const val JAVASCRIPT_CONFIG = "javascriptConfig"
private const val LAUNCH_URL = "launchUrl"
}
}

0 comments on commit b76501a

Please sign in to comment.