diff --git a/core/java/android/service/autofill/AutoFillService.java b/core/java/android/service/autofill/AutoFillService.java index ab80aa3e23b83..6da6a398203b7 100644 --- a/core/java/android/service/autofill/AutoFillService.java +++ b/core/java/android/service/autofill/AutoFillService.java @@ -172,7 +172,7 @@ public abstract class AutoFillService extends Service { *

You should generally do initialization here rather than in {@link #onCreate}. */ public void onConnected() { - + //TODO(b/33197203): is not called anymore, fix it! } /** @@ -221,6 +221,6 @@ public abstract class AutoFillService extends Service { *

At this point this service may no longer be an active {@link AutoFillService}. */ public void onDisconnected() { - + //TODO(b/33197203): is not called anymore, fix it! } } diff --git a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java index 859e1a1ecc3ab..9e0b31a76a6ee 100644 --- a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java @@ -886,8 +886,10 @@ final class AutoFillManagerServiceImpl { } private AutoFillUI getUiForShowing() { - mUi.setCallback(this, mActivityToken); - return mUi; + synchronized (mLock) { + mUi.setCallbackLocked(this, mActivityToken); + return mUi; + } } private ViewNode findViewNodeByIdLocked(AutoFillId id) { @@ -926,7 +928,7 @@ final class AutoFillManagerServiceImpl { private void destroyLocked() { mRemoteFillService.destroy(); mUi.hideAll(); - mUi.setCallback(null, null); + mUi.setCallbackLocked(null, null); } private void removeSelf() { diff --git a/services/autofill/java/com/android/server/autofill/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/AutoFillUI.java index e9fc0440ba3a9..0763c745f1215 100644 --- a/services/autofill/java/com/android/server/autofill/AutoFillUI.java +++ b/services/autofill/java/com/android/server/autofill/AutoFillUI.java @@ -100,7 +100,7 @@ final class AutoFillUI { mWm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); } - void setCallback(AutoFillUiCallback callback, IBinder activityToken) { + void setCallbackLocked(AutoFillUiCallback callback, IBinder activityToken) { hideAll(); mCallback = callback; mActivityToken = activityToken; @@ -180,7 +180,11 @@ final class AutoFillUI { synchronized (mLock) { callback = mCallback; } - callback.fill(dataset); + if (callback != null) { + callback.fill(dataset); + } else { + Slog.w(TAG, "null callback on showFillUi() for " + viewState.mId); + } hideFillUi(); });