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

Commit 4827bf49 authored by Isaac Katzenelson's avatar Isaac Katzenelson
Browse files

Add callbacks for connection status.

Including some fixes to documentation and annotations.

Bug: 267765640, 268486125
API-Coverage-Bug: 265968015
Test: atest SharedConnectivityManagerTest
Change-Id: I0e7113aa621f3086573a01dc4bd70c7e9dfe3227
parent 4f7fa715
Loading
Loading
Loading
Loading
+53 −6
Original line number Diff line number Diff line
@@ -9791,8 +9791,8 @@ package android.net.wifi.sharedconnectivity.app {
  public final class DeviceInfo implements android.os.Parcelable {
    method public int describeContents();
    method @IntRange(from=0, to=100) @NonNull public int getBatteryPercentage();
    method @IntRange(from=0, to=3) @NonNull public int getConnectionStrength();
    method @IntRange(from=0, to=100) public int getBatteryPercentage();
    method @IntRange(from=0, to=3) public int getConnectionStrength();
    method @NonNull public String getDeviceName();
    method public int getDeviceType();
    method @NonNull public String getModelName();
@@ -9817,7 +9817,7 @@ package android.net.wifi.sharedconnectivity.app {
  public final class KnownNetwork implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.net.wifi.sharedconnectivity.app.DeviceInfo getDeviceInfo();
    method @NonNull public int getNetworkSource();
    method public int getNetworkSource();
    method @NonNull public int[] getSecurityTypes();
    method @NonNull public String getSsid();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -9835,9 +9835,29 @@ package android.net.wifi.sharedconnectivity.app {
    method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetwork.Builder setSsid(@NonNull String);
  }
  public final class KnownNetworkConnectionStatus implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.os.Bundle getExtras();
    method public int getStatus();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final int CONNECTION_STATUS_SAVED = 1; // 0x1
    field public static final int CONNECTION_STATUS_SAVE_FAILED = 2; // 0x2
    field public static final int CONNECTION_STATUS_UNKNOWN = 0; // 0x0
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus> CREATOR;
  }
  public static final class KnownNetworkConnectionStatus.Builder {
    ctor public KnownNetworkConnectionStatus.Builder();
    method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus build();
    method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus.Builder setExtras(@NonNull android.os.Bundle);
    method @NonNull public android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus.Builder setStatus(int);
  }
  public interface SharedConnectivityClientCallback {
    method public void onKnownNetworkConnectionStatusChanged(@NonNull android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus);
    method public void onKnownNetworksUpdated(@NonNull java.util.List<android.net.wifi.sharedconnectivity.app.KnownNetwork>);
    method public void onSharedConnectivitySettingsChanged(@NonNull android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState);
    method public void onTetherNetworkConnectionStatusChanged(@NonNull android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus);
    method public void onTetherNetworksUpdated(@NonNull java.util.List<android.net.wifi.sharedconnectivity.app.TetherNetwork>);
  }
@@ -9854,7 +9874,7 @@ package android.net.wifi.sharedconnectivity.app {
  public final class SharedConnectivitySettingsState implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.os.Bundle getExtras();
    method @NonNull public boolean isInstantTetherEnabled();
    method public boolean isInstantTetherEnabled();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState> CREATOR;
  }
@@ -9868,13 +9888,13 @@ package android.net.wifi.sharedconnectivity.app {
  public final class TetherNetwork implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public long getDeviceId();
    method public long getDeviceId();
    method @NonNull public android.net.wifi.sharedconnectivity.app.DeviceInfo getDeviceInfo();
    method @Nullable public String getHotspotBssid();
    method @Nullable public int[] getHotspotSecurityTypes();
    method @Nullable public String getHotspotSsid();
    method @NonNull public String getNetworkName();
    method @NonNull public int getNetworkType();
    method public int getNetworkType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.TetherNetwork> CREATOR;
    field public static final int NETWORK_TYPE_CELLULAR = 1; // 0x1
@@ -9895,6 +9915,31 @@ package android.net.wifi.sharedconnectivity.app {
    method @NonNull public android.net.wifi.sharedconnectivity.app.TetherNetwork.Builder setNetworkType(int);
  }
  public final class TetherNetworkConnectionStatus implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.os.Bundle getExtras();
    method public int getStatus();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final int CONNECTION_STATUS_CONNECT_TO_HOTSPOT_FAILED = 9; // 0x9
    field public static final int CONNECTION_STATUS_ENABLING_HOTSPOT = 1; // 0x1
    field public static final int CONNECTION_STATUS_ENABLING_HOTSPOT_FAILED = 7; // 0x7
    field public static final int CONNECTION_STATUS_ENABLING_HOTSPOT_TIMEOUT = 8; // 0x8
    field public static final int CONNECTION_STATUS_NO_CELL_DATA = 6; // 0x6
    field public static final int CONNECTION_STATUS_PROVISIONING_FAILED = 3; // 0x3
    field public static final int CONNECTION_STATUS_TETHERING_TIMEOUT = 4; // 0x4
    field public static final int CONNECTION_STATUS_TETHERING_UNSUPPORTED = 5; // 0x5
    field public static final int CONNECTION_STATUS_UNKNOWN = 0; // 0x0
    field public static final int CONNECTION_STATUS_UNKNOWN_ERROR = 2; // 0x2
    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus> CREATOR;
  }
  public static final class TetherNetworkConnectionStatus.Builder {
    ctor public TetherNetworkConnectionStatus.Builder();
    method @NonNull public android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus build();
    method @NonNull public android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus.Builder setExtras(@NonNull android.os.Bundle);
    method @NonNull public android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus.Builder setStatus(int);
  }
}
package android.net.wifi.sharedconnectivity.service {
@@ -9910,6 +9955,8 @@ package android.net.wifi.sharedconnectivity.service {
    method public final void setKnownNetworks(@NonNull java.util.List<android.net.wifi.sharedconnectivity.app.KnownNetwork>);
    method public final void setSettingsState(@NonNull android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState);
    method public final void setTetherNetworks(@NonNull java.util.List<android.net.wifi.sharedconnectivity.app.TetherNetwork>);
    method public final void updateKnownNetworkConnectionStatus(@NonNull android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus);
    method public final void updateTetherNetworkConnectionStatus(@NonNull android.net.wifi.sharedconnectivity.app.TetherNetworkConnectionStatus);
  }
}
+0 −2
Original line number Diff line number Diff line
@@ -225,7 +225,6 @@ public final class DeviceInfo implements Parcelable {
     *
     * @return Returns the battery charge percentage in the range 0 to 100.
     */
    @NonNull
    @IntRange(from = 0, to = 100)
    public int getBatteryPercentage() {
        return mBatteryPercentage;
@@ -236,7 +235,6 @@ public final class DeviceInfo implements Parcelable {
     *
     * @return Returns the connection strength in range 0 to 3.
     */
    @NonNull
    @IntRange(from = 0, to = 3)
    public int getConnectionStrength() {
        return mConnectionStrength;
+4 −5
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ import java.util.Arrays;
import java.util.Objects;

/**
 * A data class representing a known Wifi network.
 * A data class representing a known Wi-Fi network.
 *
 * @hide
 */
@@ -112,7 +112,7 @@ public final class KnownNetwork implements Parcelable {
        /**
         * Sets the device information of the device providing connectivity.
         *
         * @param deviceInfo The array of security types supported by the known network.
         * @param deviceInfo The device information object.
         * @return Returns the Builder object.
         */
        @NonNull
@@ -153,7 +153,7 @@ public final class KnownNetwork implements Parcelable {
            @NetworkSource int networkSource,
            @NonNull String ssid,
            @NonNull @SecurityType int[] securityTypes,
            @NonNull android.net.wifi.sharedconnectivity.app.DeviceInfo deviceInfo) {
            @NonNull DeviceInfo deviceInfo) {
        validate(networkSource, ssid, securityTypes);
        mNetworkSource = networkSource;
        mSsid = ssid;
@@ -166,7 +166,6 @@ public final class KnownNetwork implements Parcelable {
     *
     * @return Returns the network source as defined by IntDef {@link NetworkSource}.
     */
    @NonNull
    @NetworkSource
    public int getNetworkSource() {
        return mNetworkSource;
@@ -196,7 +195,7 @@ public final class KnownNetwork implements Parcelable {
    /**
     * Gets the device information of the device providing connectivity.
     *
     * @return Returns the array of security types supported by the known network.
     * @return Returns the information of the device providing the known network.
     */
    @NonNull
    public DeviceInfo getDeviceInfo() {
+19 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.net.wifi.sharedconnectivity.app;

parcelable KnownNetworkConnectionStatus;
+179 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.net.wifi.sharedconnectivity.app;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;

/**
 * The status of a connection to a known network after the client called
 * {@link SharedConnectivityManager#connectKnownNetwork}.
 *
 * @hide
 */
@SystemApi
public final class KnownNetworkConnectionStatus implements Parcelable {

    /**
     * Connection status is unknown.
     */
    public static final int CONNECTION_STATUS_UNKNOWN  = 0;

    /**
     * The connection's data was saved successfully in the Wi-Fi configuration.
     */
    public static final int CONNECTION_STATUS_SAVED  = 1;

    /**
     * Failed to save the connection's data in the Wi-Fi configuration.
     */
    public static final int CONNECTION_STATUS_SAVE_FAILED = 2;

    /**
     * @hide
     */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({
            CONNECTION_STATUS_UNKNOWN,
            CONNECTION_STATUS_SAVED,
            CONNECTION_STATUS_SAVE_FAILED,
    })
    public @interface ConnectionStatus {}

    @ConnectionStatus private final int mStatus;
    private final Bundle mExtras;

    /**
     * Builder class for {@link KnownNetworkConnectionStatus}.
     */
    public static final class Builder {
        @ConnectionStatus private int mStatus;
        private Bundle mExtras;

        public Builder() {}

        /**
         * Sets the status of the connection
         *
         * @return Returns the Builder object.
         */
        @NonNull
        public Builder setStatus(@ConnectionStatus int status) {
            mStatus = status;
            return this;
        }

        /**
         * Sets the extras bundle
         *
         * @return Returns the Builder object.
         */
        @NonNull
        public Builder setExtras(@NonNull Bundle extras) {
            mExtras = extras;
            return this;
        }

        /**
         * Builds the {@link KnownNetworkConnectionStatus} object.
         *
         * @return Returns the built {@link KnownNetworkConnectionStatus} object.
         */
        @NonNull
        public KnownNetworkConnectionStatus build() {
            return new KnownNetworkConnectionStatus(mStatus, mExtras);
        }
    }

    private KnownNetworkConnectionStatus(@ConnectionStatus int status, Bundle extras) {
        mStatus = status;
        mExtras = extras;
    }

    /**
     * Gets the status of the connection
     *
     * @return Returns true for enabled, false otherwise.
     */
    @ConnectionStatus
    public int getStatus() {
        return mStatus;
    }

    /**
     * Gets the extras Bundle.
     *
     * @return Returns a Bundle object.
     */
    @NonNull
    public Bundle getExtras() {
        return mExtras;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof KnownNetworkConnectionStatus)) return false;
        KnownNetworkConnectionStatus other = (KnownNetworkConnectionStatus) obj;
        return mStatus == other.getStatus();
    }

    @Override
    public int hashCode() {
        return Objects.hash(mStatus);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeInt(mStatus);
        dest.writeBundle(mExtras);
    }

    @NonNull
    public static final Creator<KnownNetworkConnectionStatus> CREATOR = new Creator<>() {
                @Override
                public KnownNetworkConnectionStatus createFromParcel(Parcel in) {
                    return new KnownNetworkConnectionStatus(in.readInt(),
                            in.readBundle(getClass().getClassLoader()));
                }

                @Override
                public KnownNetworkConnectionStatus[] newArray(int size) {
                    return new KnownNetworkConnectionStatus[size];
                }
            };

    @Override
    public String toString() {
        return new StringBuilder("KnownNetworkConnectionStatus[")
                .append("status=").append(mStatus)
                .append("extras=").append(mExtras.toString())
                .append("]").toString();
    }
}
Loading