1Password Autofill service with Jetpack Compose

tadfishertadfisher
Community Member

Hi!

I'm an Android engineer working on a team with a Jetpack Compose app in production. Compose provides some rudimentary Autofill support, but we're seeing some issues in conjunction with 1Password for Android that aren't occurring when using other Autofill services (we've tested with Google, Password Store, and Firefox). Notably:

  1. 1Password will fill an email address field correctly (with AutofillType.Username and AutofillType.EmailAddress), but it will not fill the associated password field. We've verified the autofill ViewStructure is populated with both fields, with the correct autofill hints and valid virtual view bounding boxes.
  2. Upon calling Autofill.requestAutofillForNode() on the password field, 1Password does not display, either using GBoard's inline suggestions or its own popup.
  3. When (2) occurs, 1Password will no longer display for the email address field, and in fact will no longer display at all until the app is killed and restarted. In this state, we are receiving the EVENT_INPUT_UNAVAILABLE event from AutofillManager, and the Compose Autofill API is reporting that autofill is not available.

These issues have been observed on the following devices:

  1. Samsung Galaxy S8 (API 29)
    • Stock Samsung keyboard
    • GBoard, with and without inline suggestions enabled
  2. LG G8 (API 29)
    • Stock LG keyboard
    • GBoard, with and without inline suggestions enabled
  3. Google Pixel 6 (API 31)
    • GBoard, with and without inline suggestions enabled
  4. Google Pixel 6 Pro (API 31)
    • GBoard, with and without inline suggestions enabled

We've tested the production version (7.9.1) and the beta version (7.9.2.BETA-1).

Our app is on the Play Store here if you would like to take a look. I can also provide a debug build if that would help.

I can take some time to create a minimal project to reproduce the issue, but I'd like to know if that would be useful first. Also, is there any additional debug data I can provide?

Thanks!


1Password Version: 7.9.1, 7.9.2.BETA-1
Extension Version: Not Provided
OS Version: Android 10, Android 12

Comments

  • saadsaad

    Team Member

    Hi @tadfisher. Thanks for testing your app with 1Password and sharing your findings with us.

    1Password has an additional requirement for filling password fields where the input type of the field must also be of a password type. This appears to be the issue since 1Password does not receive the input type value for both the username and password fields in your app.

    I’ve confirmed the same behaviour on my end where I’ve set the keyboardOptions and visualTransformation for the password field. Those attributes are immediately reflective visually and with the IME but do not carry over as an input type to the Autofill service.

    Although Autofill support is currently limited and is in the experimental phase with Jetpack Compose, we’re very excited to see that it is in active development and hope to see full support in the near future.

    I hope that helps. Let us know if you have any questions!

  • tadfishertadfisher
    Community Member

    Thank you! I've patched compose-ui to populate inputType in the Autofill view structure and it works correctly with 1Password. The patch is under review here if you'd like to review.

  • ag_timothyag_timothy

    Team Member

    Hello @tadfisher thanks for sharing that with us! I'm glad to hear you were able to get things working with 1Password.

  • saadsaad

    Team Member

    @tadfisher that's fantastic! Thank you. We'll follow the code review and provide any support where we can help!

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file