Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e78c771c authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

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
(cherry picked from commit 1266d08b)
parent fa791d5e
Loading
Loading
Loading
Loading
+17 −15
Original line number Diff line number Diff line
@@ -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);