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

Commit 3157acc3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Default grant coarse loc perm to use-open-wifi app"

parents d2f41869 1e423b95
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -435,6 +435,10 @@ package android.provider {
    field public static final java.lang.String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
  }

  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
    field public static final java.lang.String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
  }

  public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
    field public static final java.lang.String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = "accessibility_display_magnification_enabled";
    field public static final java.lang.String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification";
+14 −0
Original line number Diff line number Diff line
@@ -118,6 +118,12 @@ public abstract class PackageManagerInternal {
     */
    public abstract void setSimCallManagerPackagesProvider(PackagesProvider provider);

    /**
     * Sets the Use Open Wifi packages provider.
     * @param provider The packages provider.
     */
    public abstract void setUseOpenWifiAppPackagesProvider(PackagesProvider provider);

    /**
     * Sets the sync adapter packages provider.
     * @param provider The provider.
@@ -146,6 +152,14 @@ public abstract class PackageManagerInternal {
    public abstract void grantDefaultPermissionsToDefaultSimCallManager(String packageName,
            int userId);

    /**
     * Requests granting of the default permissions to the current default Use Open Wifi app.
     * @param packageName The default use open wifi package name.
     * @param userId The user for which to grant the permissions.
     */
    public abstract void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName,
            int userId);

    /**
     * Sets a list of apps to keep in PM's internal data structures and as APKs even if no user has
     * currently installed it. The apps are not preloaded.
+1 −0
Original line number Diff line number Diff line
@@ -8790,6 +8790,7 @@ public final class Settings {
         * Type: string package name or null if the feature is either not provided or disabled.
         * @hide
         */
        @TestApi
        public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";

        /**
+41 −4
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.database.ContentObserver;
import android.location.LocationManager;
import android.net.INetworkRecommendationProvider;
@@ -50,14 +51,17 @@ import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.Settings.Global;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.IntArray;
import android.util.Log;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
import com.android.internal.os.TransferPipe;
import com.android.internal.telephony.SmsApplication;
import com.android.internal.util.DumpUtils;

import java.io.FileDescriptor;
@@ -91,7 +95,8 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
    private final Object mPackageMonitorLock = new Object();
    private final Object mServiceConnectionLock = new Object();
    private final Handler mHandler;
    private final DispatchingContentObserver mContentObserver;
    private final DispatchingContentObserver mRecommendationSettingsObserver;
    private final ContentObserver mUseOpenWifiPackageObserver;
    private final Function<NetworkScorerAppData, ScoringServiceConnection> mServiceConnProducer;

    @GuardedBy("mPackageMonitorLock")
@@ -255,8 +260,40 @@ public class NetworkScoreService extends INetworkScoreService.Stub {
        mContext.registerReceiverAsUser(
                mLocationModeReceiver, UserHandle.SYSTEM, locationModeFilter,
                null /* broadcastPermission*/, mHandler);
        mContentObserver = new DispatchingContentObserver(context, mHandler);
        mRecommendationSettingsObserver = new DispatchingContentObserver(context, mHandler);
        mServiceConnProducer = serviceConnProducer;
        mUseOpenWifiPackageObserver = new ContentObserver(mHandler) {
            @Override
            public void onChange(boolean selfChange, Uri uri, int userId) {
                Uri useOpenWifiPkgUri = Global.getUriFor(Global.USE_OPEN_WIFI_PACKAGE);
                if (useOpenWifiPkgUri.equals(uri)) {
                    String useOpenWifiPackage = Global.getString(mContext.getContentResolver(),
                            Global.USE_OPEN_WIFI_PACKAGE);
                    if (!TextUtils.isEmpty(useOpenWifiPackage)) {
                        LocalServices.getService(PackageManagerInternal.class)
                                .grantDefaultPermissionsToDefaultUseOpenWifiApp(useOpenWifiPackage,
                                        userId);
                    }
                }
            }
        };
        mContext.getContentResolver().registerContentObserver(
                Global.getUriFor(Global.USE_OPEN_WIFI_PACKAGE),
                false /*notifyForDescendants*/,
                mUseOpenWifiPackageObserver);
        // Set a callback for the package manager to query the use open wifi app.
        LocalServices.getService(PackageManagerInternal.class).setUseOpenWifiAppPackagesProvider(
                new PackageManagerInternal.PackagesProvider() {
                    @Override
                    public String[] getPackages(int userId) {
                        String useOpenWifiPackage = Global.getString(mContext.getContentResolver(),
                                Global.USE_OPEN_WIFI_PACKAGE);
                        if (!TextUtils.isEmpty(useOpenWifiPackage)) {
                            return new String[]{useOpenWifiPackage};
                        }
                        return null;
                    }
                });
    }

    /** Called when the system is ready to run third-party code but before it actually does so. */
@@ -287,11 +324,11 @@ public class NetworkScoreService extends INetworkScoreService.Stub {

    private void registerRecommendationSettingsObserver() {
        final Uri packageNameUri = Global.getUriFor(Global.NETWORK_RECOMMENDATIONS_PACKAGE);
        mContentObserver.observe(packageNameUri,
        mRecommendationSettingsObserver.observe(packageNameUri,
                ServiceHandler.MSG_RECOMMENDATIONS_PACKAGE_CHANGED);

        final Uri settingUri = Global.getUriFor(Global.NETWORK_RECOMMENDATIONS_ENABLED);
        mContentObserver.observe(settingUri,
        mRecommendationSettingsObserver.observe(settingUri,
                ServiceHandler.MSG_RECOMMENDATION_ENABLED_SETTING_CHANGED);
    }

+11 −0
Original line number Diff line number Diff line
@@ -23048,6 +23048,11 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
            mDefaultPermissionPolicy.setSimCallManagerPackagesProvider(provider);
        }
        @Override
        public void setUseOpenWifiAppPackagesProvider(PackagesProvider provider) {
            mDefaultPermissionPolicy.setUseOpenWifiAppPackagesProvider(provider);
        }
        @Override
        public void setSyncAdapterPackagesprovider(SyncAdapterPackagesProvider provider) {
            mDefaultPermissionPolicy.setSyncAdapterPackagesProvider(provider);
@@ -23072,6 +23077,12 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
                    packageName, userId);
        }
        @Override
        public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) {
            mDefaultPermissionPolicy.grantDefaultPermissionsToDefaultUseOpenWifiApp(
                    packageName, userId);
        }
        @Override
        public void setKeepUninstalledPackages(final List<String> packageList) {
            Preconditions.checkNotNull(packageList);
Loading