aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/autofill
diff options
context:
space:
mode:
authorFabian Henneke <FabianHenneke@users.noreply.github.com>2020-03-25 17:13:30 +0100
committerGitHub <noreply@github.com>2020-03-25 17:13:30 +0100
commitfde8137b62a3d0cd8e4d94df6fde04f2f61cbbc9 (patch)
treefb7c8baf439f3f4ef591b85770b0166651b8977d /app/src/main/java/com/zeapo/pwdstore/autofill
parentff1b1ba39b25c29c3340b56756e599e73d8329ba (diff)
downloadHardenedPass-fde8137b62a3d0cd8e4d94df6fde04f2f61cbbc9.tar.gz
HardenedPass-fde8137b62a3d0cd8e4d94df6fde04f2f61cbbc9.zip
Delete AutofillMatches when deleting files (#659)
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/autofill')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/autofill/oreo/AutofillMatcher.kt12
1 files changed, 8 insertions, 4 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/AutofillMatcher.kt b/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/AutofillMatcher.kt
index 5f9c081d..e6e16ef0 100644
--- a/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/AutofillMatcher.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/autofill/oreo/AutofillMatcher.kt
@@ -148,10 +148,11 @@ class AutofillMatcher {
/**
* Goes through all existing matches and updates their associated entries by using
- * [sourceDestinationMap] as a lookup table.
+ * [moveFromTo] as a lookup table and deleting the matches for files in [delete].
*/
- fun updateMatchesFor(context: Context, sourceDestinationMap: Map<File, File>) {
- val oldNewPathMap = sourceDestinationMap.mapValues { it.value.absolutePath }
+ fun updateMatches(context: Context, moveFromTo: Map<File, File> = emptyMap(), delete: Collection<File> = emptyList()) {
+ val deletePathList = delete.map { it.absolutePath }
+ val oldNewPathMap = moveFromTo.mapValues { it.value.absolutePath }
.mapKeys { it.key.absolutePath }
for (prefs in listOf(context.autofillAppMatches, context.autofillWebMatches)) {
for ((key, value) in prefs.all) {
@@ -164,7 +165,10 @@ class AutofillMatcher {
// Delete all matches for file locations that are going to be overwritten, then
// transfer matches over to the files at their new locations.
val newMatches =
- oldMatches.asSequence().minus(oldNewPathMap.values).map { match ->
+ oldMatches.asSequence()
+ .minus(deletePathList)
+ .minus(oldNewPathMap.values)
+ .map { match ->
val newPath = oldNewPathMap[match] ?: return@map match
d { "Updating match for $key: $match --> $newPath" }
newPath