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

Commit bb542f08 authored by Felipe Leme's avatar Felipe Leme Committed by android-build-merger
Browse files

Merge "Check for permission when displaying AutofilLServices." into oc-dev

am: 5d27ad49

Change-Id: Iaf0b47c41ca879a88438f3a15fc7a6ab345236c1
parents 98ec7135 5d27ad49
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.applications.defaultapps;

import android.Manifest;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
@@ -30,6 +31,7 @@ import android.service.autofill.AutofillService;
import android.service.autofill.AutofillServiceInfo;
import android.text.Html;
import android.text.TextUtils;
import android.util.Log;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
@@ -40,6 +42,8 @@ import java.util.List;

public class DefaultAutofillPicker extends DefaultAppPickerFragment {

    private static final String TAG = "DefaultAutofillPicker";

    static final String SETTING = Settings.Secure.AUTOFILL_SERVICE;
    static final Intent AUTOFILL_PROBE = new Intent(AutofillService.SERVICE_INTERFACE);

@@ -89,9 +93,14 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment {
        final List<ResolveInfo> resolveInfos = mPm.getPackageManager()
                .queryIntentServices(AUTOFILL_PROBE, PackageManager.GET_META_DATA);
        for (ResolveInfo info : resolveInfos) {
            final String permission = info.serviceInfo.permission;
            // TODO(b/37563972): remove BIND_AUTOFILL once clients use BIND_AUTOFILL_SERVICE
            if (Manifest.permission.BIND_AUTOFILL_SERVICE.equals(permission)
                    || Manifest.permission.BIND_AUTOFILL.equals(permission)) {
                candidates.add(new DefaultAppInfo(mPm, mUserId, new ComponentName(
                        info.serviceInfo.packageName, info.serviceInfo.name)));
            }
        }
        return candidates;
    }

@@ -157,9 +166,15 @@ public class DefaultAutofillPicker extends DefaultAppPickerFragment {
                final String flattenKey = new ComponentName(
                        serviceInfo.packageName, serviceInfo.name).flattenToString();
                if (TextUtils.equals(mSelectedKey, flattenKey)) {
                    final String settingsActivity = new AutofillServiceInfo(
                            mPackageManager, serviceInfo)
                    final String settingsActivity;
                    try {
                        settingsActivity = new AutofillServiceInfo(mPackageManager, serviceInfo)
                                .getSettingsActivity();
                    } catch (SecurityException e) {
                        // Service does not declare the proper permission, ignore it.
                        Log.w(TAG, "Error getting info for " + serviceInfo + ": " + e);
                        return null;
                    }
                    if (TextUtils.isEmpty(settingsActivity)) {
                        return null;
                    }