Search code examples
androidgoogle-chromelastpass

How does Lastpass know the current URL in Chrome


When browsing around in Chrome for Android, Lastpass pops up with suggestions if it recognizes the URL as one you have associated login details with.

How does it know which URL Chrome is looking at? I know that Lastpass makes use of Accessibility Services, but I wonder how it queries the current URL from Chrome.

PS. Apparently it only works for Chrome (it doesn't pop up in Opera for example) so it might be something Chrome specific.


Solution

  • LastPass on Android asks for Accessibility permission with canRetrieveWindowContent true. This lets it traverse the current view hierarchy, and access the views as AccessibilityNodeInfo objects.

    Accessibility API lets you search nodes by the text displayed on the view, and also gives you java class name of each such view. AccessibilityNodeInfo#findAccessibilityNodeInfosByText

    The feature doesn't work on Opera probably because the devs never handled the view hierarchy traversing logic for it.

    Check out https://developer.android.com/guide/topics/ui/accessibility/services.html