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

Commit a4f39cd1 authored by Felipe Leme's avatar Felipe Leme
Browse files

Refactored Autofill properties that are optimized on application level.

Prior to this CL we were just caching whether the service supported compatibility mode for the app,
but now we're also caching the logging level and whether the app is whitelisted for augmented
autofill - although right now the augmented autofill info is not used, it will allow us to trigger
it in the scenarios where autofill is disabled for the app.

Bug: 123099842
Bug: 123100824
Test: atest CtsAutoFillServiceTestCases:AugmentedLoginActivityTest \
            CtsAutoFillServiceTestCases:VirtualContainerActivityCompatModeTest
      atest CtsAutoFillServiceTestCases # sanity check, although still flaky

Change-Id: Iaf8ea6634ca94e5e61131890ec17c96c2fbb329a
parent a48e54ed
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -483,6 +483,17 @@ package android.bluetooth {

package android.content {

  public final class AutofillOptions implements android.os.Parcelable {
    ctor public AutofillOptions(int, boolean);
    method public int describeContents();
    method public static android.content.AutofillOptions forWhitelistingItself();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.AutofillOptions> CREATOR;
    field public boolean augmentedEnabled;
    field public final boolean compatModeEnabled;
    field public final int loggingLevel;
  }

  public final class ContentCaptureOptions implements android.os.Parcelable {
    ctor public ContentCaptureOptions(int, int, int, int, int, @Nullable android.util.ArraySet<android.content.ComponentName>);
    method public int describeContents();
@@ -509,7 +520,7 @@ package android.content {
    method public android.content.Context createPackageContextAsUser(String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
    method public android.os.UserHandle getUser();
    method public int getUserId();
    method public void setAutofillCompatibilityEnabled(boolean);
    method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
    method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
  }

+1 −1
Original line number Diff line number Diff line
@@ -7608,7 +7608,7 @@ public class Activity extends ContextThemeWrapper

        mWindow.setColorMode(info.colorMode);

        setAutofillCompatibilityEnabled(application.isAutofillCompatibilityEnabled());
        setAutofillOptions(application.getAutofillOptions());
        setContentCaptureOptions(application.getContentCaptureOptions());
    }

+5 −5
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.app.servertransaction.PendingTransactionActions;
import android.app.servertransaction.PendingTransactionActions.StopInfo;
import android.app.servertransaction.TransactionExecutor;
import android.app.servertransaction.TransactionExecutorHelper;
import android.content.AutofillOptions;
import android.content.BroadcastReceiver;
import android.content.ComponentCallbacks2;
import android.content.ComponentName;
@@ -745,7 +746,7 @@ public final class ActivityThread extends ClientTransactionHandler {
        /** Initial values for {@link Profiler}. */
        ProfilerInfo initProfilerInfo;

        boolean autofillCompatibilityEnabled;
        AutofillOptions autofillOptions;

        /**
         * Content capture options for the application - when null, it means ContentCapture is not
@@ -975,9 +976,8 @@ public final class ActivityThread extends ClientTransactionHandler {
                boolean enableBinderTracking, boolean trackAllocation,
                boolean isRestrictedBackupMode, boolean persistent, Configuration config,
                CompatibilityInfo compatInfo, Map services, Bundle coreSettings,
                String buildSerial, boolean autofillCompatibilityEnabled,
                String buildSerial, AutofillOptions autofillOptions,
                ContentCaptureOptions contentCaptureOptions) {

            if (services != null) {
                if (false) {
                    // Test code to make sure the app could see the passed-in services.
@@ -1023,7 +1023,7 @@ public final class ActivityThread extends ClientTransactionHandler {
            data.compatInfo = compatInfo;
            data.initProfilerInfo = profilerInfo;
            data.buildSerial = buildSerial;
            data.autofillCompatibilityEnabled = autofillCompatibilityEnabled;
            data.autofillOptions = autofillOptions;
            data.contentCaptureOptions = contentCaptureOptions;
            sendMessage(H.BIND_APPLICATION, data);
        }
@@ -6164,7 +6164,7 @@ public final class ActivityThread extends ClientTransactionHandler {
            app = data.info.makeApplication(data.restrictedBackupMode, null);

            // Propagate autofill compat state
            app.setAutofillCompatibilityEnabled(data.autofillCompatibilityEnabled);
            app.setAutofillOptions(data.autofillOptions);

            // Propagate Content Capture options
            app.setContentCaptureOptions(data.contentCaptureOptions);
+7 −8
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ package android.app;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.content.AutofillOptions;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentCaptureOptions;
@@ -215,8 +215,8 @@ class ContextImpl extends Context {
    // The name of the split this Context is representing. May be null.
    private @Nullable String mSplitName = null;

    private AutofillClient mAutofillClient = null;
    private boolean mIsAutofillCompatEnabled;
    private @Nullable AutofillClient mAutofillClient = null;
    private @Nullable AutofillOptions mAutofillOptions;

    private ContentCaptureOptions mContentCaptureOptions = null;

@@ -2376,15 +2376,14 @@ class ContextImpl extends Context {

    /** @hide */
    @Override
    public boolean isAutofillCompatibilityEnabled() {
        return mIsAutofillCompatEnabled;
    public AutofillOptions getAutofillOptions() {
        return mAutofillOptions;
    }

    /** @hide */
    @TestApi
    @Override
    public void setAutofillCompatibilityEnabled(boolean autofillCompatEnabled) {
        mIsAutofillCompatEnabled = autofillCompatEnabled;
    public void setAutofillOptions(AutofillOptions options) {
        mAutofillOptions = options;
    }

    /** @hide */
+2 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.IUiAutomationConnection;
import android.app.ProfilerInfo;
import android.app.ResultInfo;
import android.app.servertransaction.ClientTransaction;
import android.content.AutofillOptions;
import android.content.ComponentName;
import android.content.ContentCaptureOptions;
import android.content.IIntentReceiver;
@@ -69,7 +70,7 @@ oneway interface IApplicationThread {
            int debugMode, boolean enableBinderTracking, boolean trackAllocation,
            boolean restrictedBackupMode, boolean persistent, in Configuration config,
            in CompatibilityInfo compatInfo, in Map services,
            in Bundle coreSettings, in String buildSerial, boolean isAutofillCompatEnabled,
            in Bundle coreSettings, in String buildSerial, in AutofillOptions autofillOptions,
            in ContentCaptureOptions contentCaptureOptions);
    void runIsolatedEntryPoint(in String entryPoint, in String[] entryPointArgs);
    void scheduleExit();
Loading