* Remove CI specific gradle props
They are installed by the CI pipeline automatically
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Upgrade AGP to 3.6.2
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Suppress android.useMinimalKeepRules warning
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Update to Spotless 3.28.1
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Currently, PgpActivity resets or crashes when the orientation (or
screen size) changes.
Since we do not use separate resources in landscape mode, the easiest
and only slightly hacky solution is to tell the system to not recreate
the activity in response to these changes.
The IME search button is currently without function while the
PasswordStore SearchView is focused, which means that the keyboard
hides part of the search result until back is pressed.
This commit makes the IME button function like the back key in this
situation, dismissing the keyboard.
Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
Restoring the scroll position in the main store fragment is currently
broken since the stored state (recyclerView.verticalScrollbarPosition)
is always 0 - it is just an enum that governs where the scrollbar is
placed on the screen.
The fix is to remember the list position of the last fully visible item
and scroll to it when restoring the scroll position.
Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
The childCount is not set explicitly for empty directories, which means
that the childCount of the entry from which the current row was
recycled is preserved. This results in empty directories being shown
with seemingly random child counts.
The fix is to always set text and visibility for the childCount view.
Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
The current way to let the folder name EditText in the folder creation
dialog gain focus is... slightly hacky.
This commit proposes a more conceptual solution, which, if it works
reliably, could be much easier to maintain.
Currently, password files generated via the Autofill generate or save
flow are not committed to the Git repository and therefore also not
synchronized to the remote.
The root cause is that it was missed that PgpActivity relies on
PasswordStore to commit the changes when it returns an appropriate
result code.
The fix is to extract the commit code into the companion object of
PasswordStore and call it from AutofillSaveActivity's onActivityResult.
Commit fde8137b (#659) introduced a regression that results in Password Store crashing when the user tries to delete a single password file as opposed to a directory.
The root cause is a call of FileUtils.listFiles() on the selected item, which only works for directories.
The fix is to work with a list consisting only of the selected item if it happens to be a file.
An unwarranted use of the Elivs operator in Form.kt makes it such that
the restrictions of single-origin mode also apply to native apps.
This commit fixes the bug and also reduces the number of intermediate
values that can mask mistakes like this one.
It also renames saveFlag to saveFlags in BrowserAutofillSupportInfo
since this variable is not limited to contain only a single flag.
Mozilla's getPublicSuffixPlusOne is only meant to be invoked on syntactically
valid domain names. In particular, it does not give reasonable results for IP
addresses.
This commit ensures that the domain passed to getPublicSuffixPlusOne is
syntactically valid and not an IP address (the latter is unfortunately
considered a domain by the Android validation patterns).
Some users keep their password files in a directory structure such as:
/example.org/john@doe.org.gpg
while others prefer the style:
/example.org/john@doe.org/password.gpg
This commit adds a setting that allows to switch between the two. All Autofill
operations, such as search, match, generate and save, respect this setting.
Note: The first style seems to be the most widely used and is therefore kept as
the default. The second style is mentioned on the official Pass website at:
https://www.passwordstore.org/#organization
Add rules that match password/username fields even if no heuristic matches, but
only when the user explicitly requests Autofill. Since there is now a generic
way to always trigger Autofill (at least in apps), other rules no longer need
to match fields that fail the heuristics.
Along the way, the apply functions in AutofillStrategy.kt are renamed to match
in order to not conflict with the Kotlin apply() extension function.
Furthermore, named parameters are used more widely now to pass around Booleans.
Adds support for the Autofill feature first available in Android Oreo.
In compatible apps and browsers, login forms are automatically detected and
the user is presented with options to fill or generate credentials. In most apps
and certain browsers, the service will also offer to create new Password Store
entries from credentials entered into login forms.
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
This migrates the clipboard clear logic into a foreground service that allows us to also provide a notification that runs the clear task immediately on click, rather than wait for the timeout.
Co-authored-by: Aditya Wasan <adityawasan55@gmail.com>
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>