From 1266d08be53c6ee2494d18363092c68825ef449e Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 19 Jun 2017 12:57:13 -0700 Subject: [PATCH] Correct lastId on onCreate with unexpected state onCreate might be called with a state not produced by onSaveInstanceState. In this case the last autofill ID is not set, so we incorrectly restore it to NO_ID instead of LAST_APP_AUTOFILL_ID Change-Id: Id40c06bf223c0e3c6235b2d50779e3f4532898b5 Fixes: 62296699 Test: cts-tradefed run cts-dev -m CtsAutoFillServiceTestCases --- core/java/android/app/Activity.java | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 24c144c89ad2..bc6e9cd0ab7e 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -16,17 +16,9 @@ package android.app; -import android.graphics.Rect; -import android.view.ViewRootImpl.ActivityConfigCallback; -import android.view.autofill.AutofillManager; -import android.view.autofill.AutofillPopupWindow; -import android.view.autofill.IAutofillWindowPresenter; -import com.android.internal.annotations.GuardedBy; -import com.android.internal.app.IVoiceInteractor; -import com.android.internal.app.ToolbarActionBar; -import com.android.internal.app.WindowDecorActionBar; -import com.android.internal.policy.DecorView; -import com.android.internal.policy.PhoneWindow; +import static android.os.Build.VERSION_CODES.O; + +import static java.lang.Character.MIN_VALUE; import android.annotation.CallSuper; import android.annotation.DrawableRes; @@ -62,6 +54,7 @@ import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.session.MediaController; @@ -114,15 +107,26 @@ import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewManager; import android.view.ViewRootImpl; +import android.view.ViewRootImpl.ActivityConfigCallback; import android.view.Window; import android.view.Window.WindowControllerCallback; import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.view.accessibility.AccessibilityEvent; +import android.view.autofill.AutofillManager; +import android.view.autofill.AutofillPopupWindow; +import android.view.autofill.IAutofillWindowPresenter; import android.widget.AdapterView; import android.widget.Toast; import android.widget.Toolbar; +import com.android.internal.annotations.GuardedBy; +import com.android.internal.app.IVoiceInteractor; +import com.android.internal.app.ToolbarActionBar; +import com.android.internal.app.WindowDecorActionBar; +import com.android.internal.policy.DecorView; +import com.android.internal.policy.PhoneWindow; + import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -131,9 +135,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import static android.os.Build.VERSION_CODES.O; -import static java.lang.Character.MIN_VALUE; - /** * An activity is a single, focused thing that the user can do. Almost all * activities interact with the user, so the Activity class takes care of @@ -999,7 +1000,8 @@ public class Activity extends ContextThemeWrapper } if (savedInstanceState != null) { mAutoFillResetNeeded = savedInstanceState.getBoolean(AUTOFILL_RESET_NEEDED, false); - mLastAutofillId = savedInstanceState.getInt(LAST_AUTOFILL_ID, View.NO_ID); + mLastAutofillId = savedInstanceState.getInt(LAST_AUTOFILL_ID, + View.LAST_APP_AUTOFILL_ID); if (mAutoFillResetNeeded) { getAutofillManager().onCreate(savedInstanceState); -- 2.11.0