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

Commit 8f528531 authored by Jeff Davidson's avatar Jeff Davidson Committed by Android Git Automerger
Browse files

am 8d9ad193: Merge "Default permissions for carrier apps." into mnc-dev

* commit '8d9ad193':
  Default permissions for carrier apps.
parents 168af812 8d9ad193
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ LOCAL_SRC_FILES += \
	core/java/android/content/pm/IPackageManager.aidl \
	core/java/android/content/pm/IPackageMoveObserver.aidl \
	core/java/android/content/pm/IPackageStatsObserver.aidl \
	core/java/android/content/pm/IPackagesProvider.aidl \
	core/java/android/content/pm/IOnPermissionsChangeListener.aidl \
	core/java/android/database/IContentObserver.aidl \
	core/java/android/hardware/ICameraService.aidl \
+12 −8
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.content.pm.IPackageDeleteObserver2;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageMoveObserver;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.IPackagesProvider;
import android.content.pm.IOnPermissionsChangeListener;
import android.content.pm.IntentFilterVerificationInfo;
import android.content.pm.InstrumentationInfo;
@@ -500,4 +501,7 @@ interface IPackageManager {

    void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
    void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);

    void grantDefaultPermissions(int userId);
    void setCarrierAppPackagesProvider(in IPackagesProvider provider);
}
+22 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.content.pm;

/** {@hide} */
interface IPackagesProvider {
    String[] getPackages(int userId);
}
+3 −1
Original line number Diff line number Diff line
@@ -1851,7 +1851,9 @@
         2. Pre-installed
         3. In the default state (enabled but not explicitly)
         And SubscriptionInfoUpdater undoes this and marks the app enabled when a SIM is inserted
         that marks the app as carrier privileged. -->
         that marks the app as carrier privileged. It also grants the app default permissions
         for Phone and Location. As such, apps MUST only ever be added to this list if they
         obtain user consent to access their location through other means. -->
    <string-array name="config_disabledUntilUsedPreinstalledCarrierApps" translatable="false" />

    <!-- The list of classes that should be added to the notification ranking pipline.
+22 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ import static android.os.Process.FIRST_APPLICATION_UID;
 * have phone related permission by default.
 */
final class DefaultPermissionGrantPolicy {
    private static final String TAG = "DefaultPermissionGrantPolicy";
    private static final String TAG = "DefaultPermGrantPolicy"; // must be <= 23 chars
    private static final boolean DEBUG = false;

    private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";
@@ -133,6 +133,7 @@ final class DefaultPermissionGrantPolicy {
    private PackagesProvider mImePackagesProvider;
    private PackagesProvider mLocationPackagesProvider;
    private PackagesProvider mVoiceInteractionPackagesProvider;
    private PackagesProvider mCarrierAppPackagesProvider;

    public DefaultPermissionGrantPolicy(PackageManagerService service) {
        mService = service;
@@ -150,6 +151,10 @@ final class DefaultPermissionGrantPolicy {
        mVoiceInteractionPackagesProvider = provider;
    }

    public void setCarrierAppPackagesProviderLPw(PackagesProvider provider) {
        mCarrierAppPackagesProvider = provider;
    }

    public void grantDefaultPermissions(int userId) {
        grantPermissionsToSysComponentsAndPrivApps(userId);
        grantDefaultSystemHandlerPermissions(userId);
@@ -193,11 +198,13 @@ final class DefaultPermissionGrantPolicy {
        final PackagesProvider imePackagesProvider;
        final PackagesProvider locationPackagesProvider;
        final PackagesProvider voiceInteractionPackagesProvider;
        final PackagesProvider carrierAppPackagesProvider;

        synchronized (mService.mPackages) {
            imePackagesProvider = mImePackagesProvider;
            locationPackagesProvider = mLocationPackagesProvider;
            voiceInteractionPackagesProvider = mVoiceInteractionPackagesProvider;
            carrierAppPackagesProvider = mCarrierAppPackagesProvider;
        }

        String[] imePackageNames = (imePackagesProvider != null)
@@ -206,6 +213,8 @@ final class DefaultPermissionGrantPolicy {
                ? voiceInteractionPackagesProvider.getPackages(userId) : null;
        String[] locationPackageNames = (locationPackagesProvider != null)
                ? locationPackagesProvider.getPackages(userId) : null;
        String[] carrierAppPackageNames = (carrierAppPackagesProvider != null)
                ? carrierAppPackagesProvider.getPackages(userId) : null;

        synchronized (mService.mPackages) {
            // Installers
@@ -382,6 +391,18 @@ final class DefaultPermissionGrantPolicy {
                    }
                }
            }

            // Carrier apps
            if (carrierAppPackageNames != null) {
                for (String packageName : carrierAppPackageNames) {
                    PackageParser.Package carrierPackage = getSystemPackageLPr(packageName);
                    if (carrierPackage != null
                            && doesPackageSupportRuntimePermissions(carrierPackage)) {
                        grantRuntimePermissionsLPw(carrierPackage, PHONE_PERMISSIONS, userId);
                        grantRuntimePermissionsLPw(carrierPackage, LOCATION_PERMISSIONS, userId);
                    }
                }
            }
        }
    }

Loading