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

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

Merge "Unbind from service on app killed and dedup association requests"

parents 81ff6ee4 a38fbf63
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ import android.nfc.NfcManager;
import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.Build;
import android.os.Debug;
import android.os.DropBoxManager;
import android.os.HardwarePropertiesManager;
import android.os.IBatteryPropertiesRegistrar;
+15 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.internal.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * A request for the user to select a companion device to associate with.
@@ -68,6 +69,20 @@ public final class AssociationRequest implements Parcelable {
        return mDeviceFilters;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        AssociationRequest that = (AssociationRequest) o;
        return mSingleDevice == that.mSingleDevice &&
                Objects.equals(mDeviceFilters, that.mDeviceFilters);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mSingleDevice, mDeviceFilters);
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeByte((byte) (mSingleDevice ? 1 : 0));
+17 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.internal.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;

/**
@@ -122,6 +123,22 @@ public final class BluetoothDeviceFilter implements DeviceFilter<BluetoothDevice
        dest.writeParcelableList(mServiceUuidMasks, flags);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        BluetoothDeviceFilter that = (BluetoothDeviceFilter) o;
        return Objects.equals(mNamePattern, that.mNamePattern) &&
                Objects.equals(mAddress, that.mAddress) &&
                Objects.equals(mServiceUuids, that.mServiceUuids) &&
                Objects.equals(mServiceUuidMasks, that.mServiceUuidMasks);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mNamePattern, mAddress, mServiceUuids, mServiceUuidMasks);
    }

    @Override
    public int describeContents() {
        return 0;
+54 −10
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import com.android.internal.util.BitUtils;
import com.android.internal.util.ObjectUtils;
import com.android.internal.util.Preconditions;

import java.util.Arrays;
import java.util.Objects;
import java.util.regex.Pattern;

/**
@@ -159,10 +161,40 @@ public final class BluetoothLEDeviceFilter implements DeviceFilter<ScanResult> {
        return DeviceFilter.MEDIUM_TYPE_BLUETOOTH_LE;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        BluetoothLEDeviceFilter that = (BluetoothLEDeviceFilter) o;
        return mRenameBytesFrom == that.mRenameBytesFrom &&
                mRenameBytesTo == that.mRenameBytesTo &&
                mRenameBytesReverseOrder == that.mRenameBytesReverseOrder &&
                Objects.equals(mNamePattern, that.mNamePattern) &&
                Objects.equals(mScanFilter, that.mScanFilter) &&
                Arrays.equals(mRawDataFilter, that.mRawDataFilter) &&
                Arrays.equals(mRawDataFilterMask, that.mRawDataFilterMask) &&
                Objects.equals(mRenamePrefix, that.mRenamePrefix) &&
                Objects.equals(mRenameSuffix, that.mRenameSuffix);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mNamePattern, mScanFilter, mRawDataFilter, mRawDataFilterMask,
                mRenamePrefix, mRenameSuffix, mRenameBytesFrom, mRenameBytesTo,
                mRenameBytesReverseOrder);
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(patternToString(getNamePattern()));
        dest.writeParcelable(mScanFilter, flags);
        dest.writeByteArray(mRawDataFilter);
        dest.writeByteArray(mRawDataFilterMask);
        dest.writeString(mRenamePrefix);
        dest.writeString(mRenameSuffix);
        dest.writeInt(mRenameBytesFrom);
        dest.writeInt(mRenameBytesTo);
        dest.writeBoolean(mRenameBytesReverseOrder);
    }

    @Override
@@ -174,13 +206,23 @@ public final class BluetoothLEDeviceFilter implements DeviceFilter<ScanResult> {
            = new Creator<BluetoothLEDeviceFilter>() {
        @Override
        public BluetoothLEDeviceFilter createFromParcel(Parcel in) {
            return new BluetoothLEDeviceFilter.Builder()
            Builder builder = new Builder()
                    .setNamePattern(patternFromString(in.readString()))
                    .setScanFilter(in.readParcelable(null))
                    .setRawDataFilter(in.readBlob(), in.readBlob())
                    .setRename(in.readString(), in.readString(),
                            in.readInt(), in.readInt(), in.readBoolean())
                    .build();
                    .setScanFilter(in.readParcelable(null));
            byte[] rawDataFilter = in.createByteArray();
            byte[] rawDataFilterMask = in.createByteArray();
            if (rawDataFilter != null) {
                builder.setRawDataFilter(rawDataFilter, rawDataFilterMask);
            }
            String renamePrefix = in.readString();
            String suffix = in.readString();
            int bytesFrom = in.readInt();
            int bytesTo = in.readInt();
            boolean bytesReverseOrder = in.readBoolean();
            if (renamePrefix != null) {
                builder.setRename(renamePrefix, suffix, bytesFrom, bytesTo, bytesReverseOrder);
            }
            return builder.build();
        }

        @Override
@@ -240,12 +282,14 @@ public final class BluetoothLEDeviceFilter implements DeviceFilter<ScanResult> {
         */
        @NonNull
        public Builder setRawDataFilter(@NonNull byte[] rawDataFilter,
                @NonNull byte[] rawDataFilterMask) {
                @Nullable byte[] rawDataFilterMask) {
            checkNotUsed();
            checkArgument(rawDataFilter.length == rawDataFilterMask.length,
            Preconditions.checkNotNull(rawDataFilter);
            checkArgument(rawDataFilterMask == null ||
                    rawDataFilter.length == rawDataFilterMask.length,
                    "Mask and filter should be the same length");
            mRawDataFilter = Preconditions.checkNotNull(rawDataFilter);
            mRawDataFilterMask = Preconditions.checkNotNull(rawDataFilterMask);
            mRawDataFilter = rawDataFilter;
            mRawDataFilterMask = rawDataFilterMask;
            return this;
        }

+6 −6
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package android.companion;


import static com.android.internal.util.Preconditions.checkNotNull;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.PendingIntent;
@@ -24,7 +26,6 @@ import android.content.Context;
import android.content.IntentSender;
import android.content.pm.PackageManager;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;

@@ -43,7 +44,7 @@ import java.util.List;
 */
public final class CompanionDeviceManager {

    private static final boolean DEBUG = false; //TODO
    private static final boolean DEBUG = false;
    private static final String LOG_TAG = "CompanionDeviceManager";

    /**
@@ -129,10 +130,9 @@ public final class CompanionDeviceManager {
        if (!checkFeaturePresent()) {
            return;
        }

        final Handler finalHandler = handler != null
                ? handler
                : new Handler(Looper.getMainLooper());
        checkNotNull(request, "Request cannot be null");
        checkNotNull(callback, "Callback cannot be null");
        final Handler finalHandler = Handler.mainIfNull(handler);
        try {
            mService.associate(
                    request,
Loading