From aaa9af93defeee1daea6c79b517e67a7ce754803 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Sun, 3 Jan 2016 20:39:37 -0500 Subject: fix getrootinactivewindow() nullpointerexceptions --- .../java/com/zeapo/pwdstore/autofill/AutofillService.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillService.java b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillService.java index 7346973c..526d6f98 100644 --- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillService.java +++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillService.java @@ -108,17 +108,14 @@ public class AutofillService extends AccessibilityService { && event.getSource() != null && (event.getSource().getPackageName().equals("com.android.chrome") || event.getSource().getPackageName().equals("com.android.browser")))) { - webViewTitle = searchWebView(getRootInActiveWindow()); - - // non-null webViewTitle means there is a webView. But still somehow - // getRootInActiveWindow() can be null, when switching windows + // there is a chance for getRootInActiveWindow() to return null at any time. save it. + AccessibilityNodeInfo root = getRootInActiveWindow(); + webViewTitle = searchWebView(root); webViewURL = null; - if (webViewTitle != null && getRootInActiveWindow() != null) { - List nodes = getRootInActiveWindow() - .findAccessibilityNodeInfosByViewId("com.android.chrome:id/url_bar"); + if (webViewTitle != null) { + List nodes = root.findAccessibilityNodeInfosByViewId("com.android.chrome:id/url_bar"); if (nodes.isEmpty()) { - nodes = getRootInActiveWindow() - .findAccessibilityNodeInfosByViewId("com.android.browser:id/url"); + nodes = root.findAccessibilityNodeInfosByViewId("com.android.browser:id/url"); } for (AccessibilityNodeInfo node : nodes) if (node.getText() != null) { -- cgit v1.2.3