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

Commit 9cc5b0f8 authored by Etienne Ruffieux's avatar Etienne Ruffieux
Browse files

Moved AttributionSource related APIs in AttributionSource

Modified myAttributionSource() to check for global AS for
process in ActivityThread and fallback to building new AS
with PackageManager#getPackageForUid(myUid()) if null.

Tag: #feature
Bug: 210467846
Bug: 210468546
Test: build
Change-Id: I7aa75395469bf0bb806100420faaf98c52057355
CTS-Coverage-Bug: 210906055
parent 80dbb106
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -788,7 +788,7 @@ public final class BluetoothAdapter {
    @RequiresNoPermission
    @RequiresNoPermission
    public static synchronized BluetoothAdapter getDefaultAdapter() {
    public static synchronized BluetoothAdapter getDefaultAdapter() {
        if (sAdapter == null) {
        if (sAdapter == null) {
            sAdapter = createAdapter(BluetoothManager.resolveAttributionSource(null));
            sAdapter = createAdapter(AttributionSource.myAttributionSource());
        }
        }
        return sAdapter;
        return sAdapter;
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -1178,7 +1178,7 @@ public final class BluetoothDevice implements Parcelable, Attributable {


        mAddress = address;
        mAddress = address;
        mAddressType = ADDRESS_TYPE_PUBLIC;
        mAddressType = ADDRESS_TYPE_PUBLIC;
        mAttributionSource = BluetoothManager.resolveAttributionSource(null);
        mAttributionSource = AttributionSource.myAttributionSource();
    }
    }


    /** {@hide} */
    /** {@hide} */
+2 −32
Original line number Original line Diff line number Diff line
@@ -16,14 +16,10 @@


package android.bluetooth;
package android.bluetooth;


import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresFeature;
import android.annotation.RequiresFeature;
import android.annotation.RequiresNoPermission;
import android.annotation.RequiresNoPermission;
import android.annotation.RequiresPermission;
import android.annotation.RequiresPermission;
import android.annotation.SystemService;
import android.annotation.SystemService;
import android.app.ActivityThread;
import android.app.AppGlobals;
import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
import android.content.Attributable;
import android.content.Attributable;
@@ -69,37 +65,11 @@ public final class BluetoothManager {
     * @hide
     * @hide
     */
     */
    public BluetoothManager(Context context) {
    public BluetoothManager(Context context) {
        mAttributionSource = resolveAttributionSource(context);
        mAttributionSource = (context != null) ? context.getAttributionSource() :
                AttributionSource.myAttributionSource();
        mAdapter = BluetoothAdapter.createAdapter(mAttributionSource);
        mAdapter = BluetoothAdapter.createAdapter(mAttributionSource);
    }
    }


    /** {@hide} */
    public static @NonNull AttributionSource resolveAttributionSource(@Nullable Context context) {
        AttributionSource res = null;
        if (context != null) {
            res = context.getAttributionSource();
        }
        if (res == null) {
            res = ActivityThread.currentAttributionSource();
        }
        if (res == null) {
            int uid = android.os.Process.myUid();
            if (uid == android.os.Process.ROOT_UID) {
                uid = android.os.Process.SYSTEM_UID;
            }
            try {
                res = new AttributionSource.Builder(uid)
                    .setPackageName(AppGlobals.getPackageManager().getPackagesForUid(uid)[0])
                    .build();
            } catch (RemoteException ignored) {
            }
        }
        if (res == null) {
            throw new IllegalStateException("Failed to resolve AttributionSource");
        }
        return res;
    }

    /**
    /**
     * Get the BLUETOOTH Adapter for this device.
     * Get the BLUETOOTH Adapter for this device.
     *
     *