Filling affecting browser scrolling

I got a new Moto X over the break, and I noticed that the browser scrolling performance was beyond terrible. Every major website I went to and try to scroll would stutter along. Then I remembered that I'd installed the beta version of 1Password for Android and turned on filling. Turned filling off: browser scrolling now buttery smooth. Turned it back on: back to scrolling janky.

I haven't looked into how those APIs work on Lollipop but it seems like maybe some 1Password code is running on browser scroll? If so it would be awesome to know if you've noticed this too or if you're looking into it? My browser is just the store version of Chrome, running on a 2014 Moto X, Android 5.0.

Comments

  • mverdemverde

    Team Member

    Hi Russell,

    Thanks for bringing this to our attention! It definitely sounds like having the 1Password accessibility service enabled is at least partly responsible for causing the stuttering you're experiencing when scrolling in Chrome. I don't believe that we've encountered this issue in our testing yet, but that may simply be because we aren't stressing our test devices enough. We will need to focus more on that going forward.

    The accessibility service that we use for in-app filling monitors accessibility events that are delivered to it by the system. The simple act of enabling any accessibility service activates a series of system accessibility features that consume significant resources. When combined with the processing that the specific accessibility service (in this case 1Password) itself is doing, it can add very real overhead to any UI-based process running on your device. Depending on how much of this overhead is being created by 1Password's accessibility service, there are optimizations (for example, adjusting the frequency of event notifications) that we can make that may improve performance here.

    If you are up for a little experimentation, I would be curious to know if you experience the same scrolling stuttering when you enable a different accessibility service such as TalkBack. If you do enable TalkBack, keep in mind that scrolling is done by two-finger dragging.

    Cheers,
    Michael

  • I'm more than happy to help, and as a developer myself I think I should be able to provide you with some concrete stats. I'll do some testing later this week.

    That said, this statement is extremely concerning:
    "I don't believe that we've encountered this issue in our testing yet, but that may simply be because we aren't stressing our test devices enough"

    Am I to read between the lines and surmise that your Android developer(s) don't run Android as their main phone(s)? If that's the case I'd be seriously concerned about the future of 1Password on Android.

  • mverdemverde

    Team Member

    Thanks for offering to test! I'm looking forward to getting some more concrete stats so that we can compare with what we're seeing on our devices.

    As far as my statement about test devices goes, I was just observing that you may be running more memory or processor intensive apps or services on your device. My daily driver is not a good test device because I keep it in fairly pristine working order. My test devices, on the other hand, get beaten up on a regular basis. Have pity on them, as I intend to beat up on them even more in order to try to reproduce the scrolling issue you reported.

  • Ok, here's what I did:

    1.) Filling off go to:
    http://www.theverge.com/2015/1/13/7540173/apple-watch-companion-app-leaked

    Page scrolls smoothly in Chrome, only slightly stuttering at the very bottom.

    2.) Turn Filing on, back to the same page without reloading, scrolling is really stuttery

    3.) Turn off Filing, turn on Talkback, back to the same page. Scrolling with two fingers feels really stuttery in this mode too. Maybe moreso, it's hard to tell if it's not registering every swipe I make because of the two finger thing, or if it's the same as in 1. Either way it's bad.

    Test Device: 2014 Moto X, Pure Edition, Android 5.0

    So from here, we can maybe conclude that it's the web accessibility part that is causing issues? But it's hard to know if it's an Android issue, or a 1Password issue, since conceivably TalkBack/1Password could be both doing a lot of processing. It could also be (depending on how the API works) that 1Password toning down it's use of the API speeds up scrolling. Either way as an Android user I can't leave this feature on.

  • mverdemverde

    Team Member

    Thanks for the additional details. On the Verge page that you linked above, I can confirm that I see the scrolling stuttering when the 1Password accessibility service is enabled. I also see even worse stuttering when scrolling with either the TalkBack or SwitchAccess accessibility services enabled. It would seem that these two services either listen for more events than we do or do more processing on the events they receive notifications for.

    Out of curiosity, I decided to strip down our accessibility service to the bare minimum to see if I could see a qualitative improvement in scrolling smoothness in Chrome. I went as far as reducing event handling within our accessibility service to a no-op, limiting notifications to a single event type, and increasing the notification timeout to 10 seconds without seeing any noticeable improvement in scrolling. This leads me to believe that the simple act of enabling web accessibility is responsible for the scrolling stuttering that is occurring when the accessibility service is enabled.

  • Wow, that's pretty bad. You should probably file that in the Android AOSP bug tracker?

    In the meantime, is there an alternative way to fill passwords? I'd be more than happy with some kind of button I have to tap that would bring up 1Password and let me fill the password in?

  • Actually, I had the same experience with jerky scrolling when I had Android 4.4.4 and was using Lastpass. This is just FYI.

  • mverdemverde

    Team Member

    @rustyshelf I don't think that I would categorize the poor scrolling performance as a bug per se. While it would be great for Google to continue to improve accessibility performance in browsers (they replaced the previous accessibility support through Javascript injection with native support in Chrome 35), there is simply a lot of overhead that comes from iterating through the entire DOM and creating accessibility hooks for services. Because of this overhead, we are working to minimize the amount of code we execute in the accessibility service. We are close to releasing a beta update to our in-app filling feature which addresses a number of concerns that our testers have brought to our attention, including some changes that will help in this area too.

  • @mverde completely up to you and your team to figure out I guess. My concern as a user is that I can't have this service turned on if it causes such noticeable lag, so I need an alternative. Does that API Google provide allow you to be triggered somehow from the browser manually by the user? Because if that's an option it's what I'd use.

  • @mverde - im having a similar issue on my Nexus5 (on 5.0.1) with chrome (usually B41) ; scrolling is jittery.
    Semi related - I also seem to have issues if i try to fll a login field manually (auto login seems to override it when the prompt comes up), and sometimes even have the opposite issue where sometimes auto fill will not appear (but i believe thats more of an issue with the website rather than 1P)

  • mverdemverde

    Team Member

    CH The upcoming beta update that I mentioned in my reply to @rustyshelf should help in addressing these issues. I can't go into any more detail about it at this time, but we're really excited that we'll be able to share it with you soon.

  • I don't normally use 1Password to actually fill in passwords on my Nexus 5 (running stock Android 4.4.4 KitKat), but today I tried it. Turning on Filling requires you to turn on Accessibility for 1Password, which I did. This caused highly noticeable performance degradation - scrolling was absolutely horrible post this, there was a delay in opening apps and playing simple games like Hill Climb Racing or Smash Hit was getting very annoying due to framerate drops and jankiness.

    Disabling Accessibility for 1Password restored performance, but I do want to make use of this nice feature now that I know how useful it is. Is anyone else experiencing any perf issues like me?

    Running 4.2b7 on Nexus 5 with stock Android 4.4.4 KitKat. Please let me know if there is any other detail that I should be including.

  • saadsaad

    Team Member

    Hey @jainrounak, thank you so much for your feedback. I merged your original forum post with this thread as it seems to be similar to what others have also reported after enabling the accessibility setting. mverde included a great post about his findings just above and we will see if there is anything we can do.

    You can disable 1Password's accessibility setting as it's not required to perform filling . Disabling this option will require you to long press the 1Password icon on the keyboard and manually search for the login item. You can then perform manual filling by tapping on the filling buttons that become visible just above the keyboard.

    I hope that helps! Please let me know if you have any other questions.

This discussion has been closed.