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

Commit b5772ce1 authored by William Escande's avatar William Escande
Browse files

Add context to getCallingAttributionSource

This allow to use context.getPackageManager

Test: atest BluetoothInstrumentationTests
Bug: 195144968
Tag: #refactor
Ignore-AOSP-First: No such thing on aosp
Change-Id: I44f8e6a70db39552fe028d72e9f30523d4710e6d
parent 5fc16d47
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.BroadcastOptions;
import android.bluetooth.BluetoothAdapter;
@@ -54,7 +53,6 @@ import android.os.Bundle;
import android.os.ParcelUuid;
import android.os.PowerExemptionManager;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
@@ -414,17 +412,15 @@ public final class Utils {
                "Need DUMP permission");
    }

    public static AttributionSource getCallingAttributionSource() {
    /**
     */
    public static AttributionSource getCallingAttributionSource(Context context) {
        int callingUid = Binder.getCallingUid();
        if (callingUid == android.os.Process.ROOT_UID) {
            callingUid = android.os.Process.SYSTEM_UID;
        }
        try {
        return new AttributionSource(callingUid,
                    AppGlobals.getPackageManager().getPackagesForUid(callingUid)[0], null);
        } catch (RemoteException e) {
            throw new IllegalStateException("Failed to resolve AttributionSource", e);
        }
                context.getPackageManager().getPackagesForUid(callingUid)[0], null);
    }

    @SuppressLint("AndroidFrameworkRequiresPermission")
+24 −5
Original line number Diff line number Diff line
@@ -1236,7 +1236,11 @@ public class A2dpService extends ProfileService {

        @Override
        public boolean connect(BluetoothDevice device) {
            return connectWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return false;
            }
            return connectWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1251,7 +1255,11 @@ public class A2dpService extends ProfileService {

        @Override
        public boolean disconnect(BluetoothDevice device) {
            return disconnectWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return false;
            }
            return disconnectWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1266,7 +1274,11 @@ public class A2dpService extends ProfileService {

        @Override
        public List<BluetoothDevice> getConnectedDevices() {
            return getConnectedDevicesWithAttribution(Utils.getCallingAttributionSource());
            if (mService == null) {
                return new ArrayList<>(0);
            }
            return getConnectedDevicesWithAttribution(
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1280,8 +1292,11 @@ public class A2dpService extends ProfileService {

        @Override
        public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
            if (mService == null) {
                return new ArrayList<>(0);
            }
            return getDevicesMatchingConnectionStatesWithAttribution(states,
                    Utils.getCallingAttributionSource());
                    Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1296,7 +1311,11 @@ public class A2dpService extends ProfileService {

        @Override
        public int getConnectionState(BluetoothDevice device) {
            return getConnectionStateWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return BluetoothProfile.STATE_DISCONNECTED;
            }
            return getConnectionStateWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
+22 −6
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import android.util.SparseArray;

import com.android.bluetooth.BluetoothMetricsProto;
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
@@ -1242,7 +1243,10 @@ public class AdapterService extends Service {

        @Override
        public String getAddress() {
            return getAddressWithAttribution(Utils.getCallingAttributionSource());
            if (mService == null) {
                return null;
            }
            return getAddressWithAttribution(Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1670,7 +1674,11 @@ public class AdapterService extends Service {

        @Override
        public int getConnectionState(BluetoothDevice device) {
            return getConnectionStateWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return BluetoothProfile.STATE_DISCONNECTED;
            }
            return getConnectionStateWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1680,7 +1688,7 @@ public class AdapterService extends Service {
            AdapterService service = getService();
            if (service == null || !Utils.checkConnectPermissionForDataDelivery(
                    service, attributionSource, "AdapterService getConnectionState")) {
                return 0;
                return BluetoothProfile.STATE_DISCONNECTED;
            }

            return service.getConnectionState(device);
@@ -1795,12 +1803,17 @@ public class AdapterService extends Service {
            }

            DeviceProperties deviceProp = service.mRemoteDevices.getDeviceProperties(device);
            return deviceProp != null ? deviceProp.getDeviceType() : BluetoothDevice.DEVICE_TYPE_UNKNOWN;
            return deviceProp != null
                    ? deviceProp.getDeviceType() : BluetoothDevice.DEVICE_TYPE_UNKNOWN;
        }

        @Override
        public String getRemoteAlias(BluetoothDevice device) {
            return getRemoteAliasWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return null;
            }
            return getRemoteAliasWithAttribution(device,
                    Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -1883,8 +1896,11 @@ public class AdapterService extends Service {

        @Override
        public boolean fetchRemoteUuids(BluetoothDevice device) {
            if (mService == null) {
                return false;
            }
            return fetchRemoteUuidsWithAttribution(device, TRANSPORT_AUTO,
                    Utils.getCallingAttributionSource());
                    Utils.getCallingAttributionSource(mService));
        }

        @Override
+20 −4
Original line number Diff line number Diff line
@@ -435,7 +435,11 @@ public class HeadsetService extends ProfileService {

        @Override
        public boolean connect(BluetoothDevice device) {
            return connectWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return false;
            }
            return connectWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -450,7 +454,11 @@ public class HeadsetService extends ProfileService {

        @Override
        public boolean disconnect(BluetoothDevice device) {
            return disconnectWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return false;
            }
            return disconnectWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -465,7 +473,11 @@ public class HeadsetService extends ProfileService {

        @Override
        public List<BluetoothDevice> getConnectedDevices() {
            return getConnectedDevicesWithAttribution(Utils.getCallingAttributionSource());
            if (mService == null) {
                return new ArrayList<BluetoothDevice>(0);
            }
            return getConnectedDevicesWithAttribution(
                        Utils.getCallingAttributionSource(mService));
        }

        @Override
@@ -489,7 +501,11 @@ public class HeadsetService extends ProfileService {

        @Override
        public int getConnectionState(BluetoothDevice device) {
            return getConnectionStateWithAttribution(device, Utils.getCallingAttributionSource());
            if (mService == null) {
                return BluetoothProfile.STATE_DISCONNECTED;
            }
            return getConnectionStateWithAttribution(device,
                        Utils.getCallingAttributionSource(mService));
        }

        @Override