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

Commit 3f262bea authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Automerger Merge Worker
Browse files

Merge "CloseGuard for more Bluetooth components." into sc-dev am: ed3ac2e4ba

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14703950

Change-Id: Ibd7565adc09567e7fa709492e05ede46a1338208
parents 33359514 db38eb73
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.util.CloseGuard;
import android.util.Log;

import java.util.ArrayList;
@@ -338,6 +339,8 @@ public final class BluetoothHeadset implements BluetoothProfile {
    private static final int MESSAGE_HEADSET_SERVICE_CONNECTED = 100;
    private static final int MESSAGE_HEADSET_SERVICE_DISCONNECTED = 101;

    private final CloseGuard mCloseGuard = new CloseGuard();

    private Context mContext;
    private ServiceListener mServiceListener;
    private volatile IBluetoothHeadset mService;
@@ -385,6 +388,7 @@ public final class BluetoothHeadset implements BluetoothProfile {
        }

        doBind();
        mCloseGuard.open("close");
    }

    private boolean doBind() {
@@ -438,6 +442,14 @@ public final class BluetoothHeadset implements BluetoothProfile {
        }
        mServiceListener = null;
        doUnbind();
        mCloseGuard.close();
    }

    /** {@hide} */
    @Override
    protected void finalize() throws Throwable {
        mCloseGuard.warnIfOpen();
        close();
    }

    /**
+11 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.CloseGuard;
import android.util.Log;

/**
@@ -36,6 +37,7 @@ import android.util.Log;
 */
@SuppressLint("AndroidFrameworkBluetoothPermission")
public abstract class BluetoothProfileConnector<T> {
    private final CloseGuard mCloseGuard = new CloseGuard();
    private final int mProfileId;
    private BluetoothProfile.ServiceListener mServiceListener;
    private final BluetoothProfile mProfileProxy;
@@ -82,11 +84,19 @@ public abstract class BluetoothProfileConnector<T> {
        mServiceName = serviceName;
    }

    /** {@hide} */
    @Override
    public void finalize() {
        mCloseGuard.warnIfOpen();
        doUnbind();
    }

    @SuppressLint("AndroidFrameworkRequiresPermission")
    private boolean doBind() {
        synchronized (mConnection) {
            if (mService == null) {
                logDebug("Binding service...");
                mCloseGuard.open("doUnbind");
                try {
                    Intent intent = new Intent(mServiceName);
                    ComponentName comp = intent.resolveSystemService(
@@ -110,6 +120,7 @@ public abstract class BluetoothProfileConnector<T> {
        synchronized (mConnection) {
            if (mService != null) {
                logDebug("Unbinding service...");
                mCloseGuard.close();
                try {
                    mContext.unbindService(mConnection);
                } catch (IllegalArgumentException ie) {