Loading core/api/system-current.txt +3 −1 Original line number Original line Diff line number Diff line Loading @@ -10134,16 +10134,18 @@ package android.net.wifi.sharedconnectivity.app { public final class SharedConnectivitySettingsState implements android.os.Parcelable { public final class SharedConnectivitySettingsState implements android.os.Parcelable { method public int describeContents(); method public int describeContents(); method @NonNull public android.os.Bundle getExtras(); method @NonNull public android.os.Bundle getExtras(); method @Nullable public android.app.PendingIntent getInstantTetherSettingsPendingIntent(); method public boolean isInstantTetherEnabled(); method public boolean isInstantTetherEnabled(); method public void writeToParcel(@NonNull android.os.Parcel, int); 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; field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState> CREATOR; } } public static final class SharedConnectivitySettingsState.Builder { public static final class SharedConnectivitySettingsState.Builder { ctor public SharedConnectivitySettingsState.Builder(); ctor public SharedConnectivitySettingsState.Builder(@NonNull android.content.Context); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState build(); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState build(); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setExtras(@NonNull android.os.Bundle); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setExtras(@NonNull android.os.Bundle); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setInstantTetherEnabled(boolean); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setInstantTetherEnabled(boolean); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setInstantTetherSettingsPendingIntent(@NonNull android.content.Intent); } } } } wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivitySettingsState.java +56 −7 Original line number Original line Diff line number Diff line Loading @@ -17,7 +17,11 @@ package android.net.wifi.sharedconnectivity.app; package android.net.wifi.sharedconnectivity.app; import android.annotation.NonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.SystemApi; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Bundle; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; Loading @@ -37,6 +41,7 @@ import java.util.Objects; public final class SharedConnectivitySettingsState implements Parcelable { public final class SharedConnectivitySettingsState implements Parcelable { private final boolean mInstantTetherEnabled; private final boolean mInstantTetherEnabled; private final PendingIntent mInstantTetherSettingsPendingIntent; private final Bundle mExtras; private final Bundle mExtras; /** /** Loading @@ -44,9 +49,13 @@ public final class SharedConnectivitySettingsState implements Parcelable { */ */ public static final class Builder { public static final class Builder { private boolean mInstantTetherEnabled; private boolean mInstantTetherEnabled; private Intent mInstantTetherSettingsIntent; private final Context mContext; private Bundle mExtras; private Bundle mExtras; public Builder() {} public Builder(@NonNull Context context) { mContext = context; } /** /** * Sets the state of Instant Tether in settings * Sets the state of Instant Tether in settings Loading @@ -59,6 +68,20 @@ public final class SharedConnectivitySettingsState implements Parcelable { return this; return this; } } /** * Sets the intent that will open the Instant Tether settings page. * The intent will be stored as a {@link PendingIntent} in the settings object. The pending * intent will be set as {@link PendingIntent#FLAG_IMMUTABLE} and * {@link PendingIntent#FLAG_ONE_SHOT}. * * @return Returns the Builder object. */ @NonNull public Builder setInstantTetherSettingsPendingIntent(@NonNull Intent intent) { mInstantTetherSettingsIntent = intent; return this; } /** /** * Sets the extras bundle * Sets the extras bundle * * Loading @@ -77,12 +100,22 @@ public final class SharedConnectivitySettingsState implements Parcelable { */ */ @NonNull @NonNull public SharedConnectivitySettingsState build() { public SharedConnectivitySettingsState build() { return new SharedConnectivitySettingsState(mInstantTetherEnabled, mExtras); if (mInstantTetherSettingsIntent != null) { PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, mInstantTetherSettingsIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT); return new SharedConnectivitySettingsState(mInstantTetherEnabled, pendingIntent, mExtras); } return new SharedConnectivitySettingsState(mInstantTetherEnabled, null, mExtras); } } } } private SharedConnectivitySettingsState(boolean instantTetherEnabled, Bundle extras) { private SharedConnectivitySettingsState(boolean instantTetherEnabled, PendingIntent pendingIntent, Bundle extras) { mInstantTetherEnabled = instantTetherEnabled; mInstantTetherEnabled = instantTetherEnabled; mInstantTetherSettingsPendingIntent = pendingIntent; mExtras = extras; mExtras = extras; } } Loading @@ -95,6 +128,16 @@ public final class SharedConnectivitySettingsState implements Parcelable { return mInstantTetherEnabled; return mInstantTetherEnabled; } } /** * Gets the pending intent to open Instant Tether settings page. * * @return Returns the pending intent that opens the settings page, null if none. */ @Nullable public PendingIntent getInstantTetherSettingsPendingIntent() { return mInstantTetherSettingsPendingIntent; } /** /** * Gets the extras Bundle. * Gets the extras Bundle. * * Loading @@ -109,12 +152,14 @@ public final class SharedConnectivitySettingsState implements Parcelable { public boolean equals(Object obj) { public boolean equals(Object obj) { if (!(obj instanceof SharedConnectivitySettingsState)) return false; if (!(obj instanceof SharedConnectivitySettingsState)) return false; SharedConnectivitySettingsState other = (SharedConnectivitySettingsState) obj; SharedConnectivitySettingsState other = (SharedConnectivitySettingsState) obj; return mInstantTetherEnabled == other.isInstantTetherEnabled(); return mInstantTetherEnabled == other.isInstantTetherEnabled() && Objects.equals(mInstantTetherSettingsPendingIntent, other.getInstantTetherSettingsPendingIntent()); } } @Override @Override public int hashCode() { public int hashCode() { return Objects.hash(mInstantTetherEnabled); return Objects.hash(mInstantTetherEnabled, mInstantTetherSettingsPendingIntent); } } @Override @Override Loading @@ -124,6 +169,7 @@ public final class SharedConnectivitySettingsState implements Parcelable { @Override @Override public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { mInstantTetherSettingsPendingIntent.writeToParcel(dest, 0); dest.writeBoolean(mInstantTetherEnabled); dest.writeBoolean(mInstantTetherEnabled); dest.writeBundle(mExtras); dest.writeBundle(mExtras); } } Loading @@ -135,8 +181,10 @@ public final class SharedConnectivitySettingsState implements Parcelable { */ */ @NonNull @NonNull public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) { public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) { return new SharedConnectivitySettingsState(in.readBoolean(), PendingIntent pendingIntent = PendingIntent.CREATOR.createFromParcel(in); in.readBundle()); boolean instantTetherEnabled = in.readBoolean(); Bundle extras = in.readBundle(); return new SharedConnectivitySettingsState(instantTetherEnabled, pendingIntent, extras); } } @NonNull @NonNull Loading @@ -156,6 +204,7 @@ public final class SharedConnectivitySettingsState implements Parcelable { public String toString() { public String toString() { return new StringBuilder("SharedConnectivitySettingsState[") return new StringBuilder("SharedConnectivitySettingsState[") .append("instantTetherEnabled=").append(mInstantTetherEnabled) .append("instantTetherEnabled=").append(mInstantTetherEnabled) .append("PendingIntent=").append(mInstantTetherSettingsPendingIntent.toString()) .append("extras=").append(mExtras.toString()) .append("extras=").append(mExtras.toString()) .append("]").toString(); .append("]").toString(); } } Loading wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java +8 −3 Original line number Original line Diff line number Diff line Loading @@ -68,9 +68,7 @@ public abstract class SharedConnectivityService extends Service { new RemoteCallbackList<>(); new RemoteCallbackList<>(); private List<HotspotNetwork> mHotspotNetworks = Collections.emptyList(); private List<HotspotNetwork> mHotspotNetworks = Collections.emptyList(); private List<KnownNetwork> mKnownNetworks = Collections.emptyList(); private List<KnownNetwork> mKnownNetworks = Collections.emptyList(); private SharedConnectivitySettingsState mSettingsState = private SharedConnectivitySettingsState mSettingsState = null; new SharedConnectivitySettingsState.Builder().setInstantTetherEnabled(false) .setExtras(Bundle.EMPTY).build(); private HotspotNetworkConnectionStatus mHotspotNetworkConnectionStatus = private HotspotNetworkConnectionStatus mHotspotNetworkConnectionStatus = new HotspotNetworkConnectionStatus.Builder() new HotspotNetworkConnectionStatus.Builder() .setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN) .setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN) Loading Loading @@ -202,6 +200,13 @@ public abstract class SharedConnectivityService extends Service { @Override @Override public SharedConnectivitySettingsState getSettingsState() { public SharedConnectivitySettingsState getSettingsState() { checkPermissions(); checkPermissions(); // Done lazily since creating it needs a context. if (mSettingsState == null) { mSettingsState = new SharedConnectivitySettingsState .Builder(getApplicationContext()) .setInstantTetherEnabled(false) .setExtras(Bundle.EMPTY).build(); } return mSettingsState; return mSettingsState; } } Loading wifi/tests/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ android_test { static_libs: [ static_libs: [ "androidx.test.rules", "androidx.test.rules", "androidx.test.core", "frameworks-base-testutils", "frameworks-base-testutils", "guava", "guava", "mockito-target-minus-junit4", "mockito-target-minus-junit4", Loading wifi/tests/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManagerTest.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -497,8 +497,9 @@ public class SharedConnectivityManagerTest { @Test @Test public void getSettingsState_serviceConnected_shouldReturnState() throws RemoteException { public void getSettingsState_serviceConnected_shouldReturnState() throws RemoteException { SharedConnectivityManager manager = SharedConnectivityManager.create(mContext); SharedConnectivityManager manager = SharedConnectivityManager.create(mContext); SharedConnectivitySettingsState state = new SharedConnectivitySettingsState.Builder() SharedConnectivitySettingsState state = .setInstantTetherEnabled(true).setExtras(new Bundle()).build(); new SharedConnectivitySettingsState.Builder(mContext).setInstantTetherEnabled(true) .setExtras(new Bundle()).build(); manager.setService(mService); manager.setService(mService); when(mService.getSettingsState()).thenReturn(state); when(mService.getSettingsState()).thenReturn(state); Loading Loading
core/api/system-current.txt +3 −1 Original line number Original line Diff line number Diff line Loading @@ -10134,16 +10134,18 @@ package android.net.wifi.sharedconnectivity.app { public final class SharedConnectivitySettingsState implements android.os.Parcelable { public final class SharedConnectivitySettingsState implements android.os.Parcelable { method public int describeContents(); method public int describeContents(); method @NonNull public android.os.Bundle getExtras(); method @NonNull public android.os.Bundle getExtras(); method @Nullable public android.app.PendingIntent getInstantTetherSettingsPendingIntent(); method public boolean isInstantTetherEnabled(); method public boolean isInstantTetherEnabled(); method public void writeToParcel(@NonNull android.os.Parcel, int); 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; field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState> CREATOR; } } public static final class SharedConnectivitySettingsState.Builder { public static final class SharedConnectivitySettingsState.Builder { ctor public SharedConnectivitySettingsState.Builder(); ctor public SharedConnectivitySettingsState.Builder(@NonNull android.content.Context); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState build(); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState build(); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setExtras(@NonNull android.os.Bundle); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setExtras(@NonNull android.os.Bundle); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setInstantTetherEnabled(boolean); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setInstantTetherEnabled(boolean); method @NonNull public android.net.wifi.sharedconnectivity.app.SharedConnectivitySettingsState.Builder setInstantTetherSettingsPendingIntent(@NonNull android.content.Intent); } } } }
wifi/java/src/android/net/wifi/sharedconnectivity/app/SharedConnectivitySettingsState.java +56 −7 Original line number Original line Diff line number Diff line Loading @@ -17,7 +17,11 @@ package android.net.wifi.sharedconnectivity.app; package android.net.wifi.sharedconnectivity.app; import android.annotation.NonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.SystemApi; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Bundle; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; Loading @@ -37,6 +41,7 @@ import java.util.Objects; public final class SharedConnectivitySettingsState implements Parcelable { public final class SharedConnectivitySettingsState implements Parcelable { private final boolean mInstantTetherEnabled; private final boolean mInstantTetherEnabled; private final PendingIntent mInstantTetherSettingsPendingIntent; private final Bundle mExtras; private final Bundle mExtras; /** /** Loading @@ -44,9 +49,13 @@ public final class SharedConnectivitySettingsState implements Parcelable { */ */ public static final class Builder { public static final class Builder { private boolean mInstantTetherEnabled; private boolean mInstantTetherEnabled; private Intent mInstantTetherSettingsIntent; private final Context mContext; private Bundle mExtras; private Bundle mExtras; public Builder() {} public Builder(@NonNull Context context) { mContext = context; } /** /** * Sets the state of Instant Tether in settings * Sets the state of Instant Tether in settings Loading @@ -59,6 +68,20 @@ public final class SharedConnectivitySettingsState implements Parcelable { return this; return this; } } /** * Sets the intent that will open the Instant Tether settings page. * The intent will be stored as a {@link PendingIntent} in the settings object. The pending * intent will be set as {@link PendingIntent#FLAG_IMMUTABLE} and * {@link PendingIntent#FLAG_ONE_SHOT}. * * @return Returns the Builder object. */ @NonNull public Builder setInstantTetherSettingsPendingIntent(@NonNull Intent intent) { mInstantTetherSettingsIntent = intent; return this; } /** /** * Sets the extras bundle * Sets the extras bundle * * Loading @@ -77,12 +100,22 @@ public final class SharedConnectivitySettingsState implements Parcelable { */ */ @NonNull @NonNull public SharedConnectivitySettingsState build() { public SharedConnectivitySettingsState build() { return new SharedConnectivitySettingsState(mInstantTetherEnabled, mExtras); if (mInstantTetherSettingsIntent != null) { PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, mInstantTetherSettingsIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT); return new SharedConnectivitySettingsState(mInstantTetherEnabled, pendingIntent, mExtras); } return new SharedConnectivitySettingsState(mInstantTetherEnabled, null, mExtras); } } } } private SharedConnectivitySettingsState(boolean instantTetherEnabled, Bundle extras) { private SharedConnectivitySettingsState(boolean instantTetherEnabled, PendingIntent pendingIntent, Bundle extras) { mInstantTetherEnabled = instantTetherEnabled; mInstantTetherEnabled = instantTetherEnabled; mInstantTetherSettingsPendingIntent = pendingIntent; mExtras = extras; mExtras = extras; } } Loading @@ -95,6 +128,16 @@ public final class SharedConnectivitySettingsState implements Parcelable { return mInstantTetherEnabled; return mInstantTetherEnabled; } } /** * Gets the pending intent to open Instant Tether settings page. * * @return Returns the pending intent that opens the settings page, null if none. */ @Nullable public PendingIntent getInstantTetherSettingsPendingIntent() { return mInstantTetherSettingsPendingIntent; } /** /** * Gets the extras Bundle. * Gets the extras Bundle. * * Loading @@ -109,12 +152,14 @@ public final class SharedConnectivitySettingsState implements Parcelable { public boolean equals(Object obj) { public boolean equals(Object obj) { if (!(obj instanceof SharedConnectivitySettingsState)) return false; if (!(obj instanceof SharedConnectivitySettingsState)) return false; SharedConnectivitySettingsState other = (SharedConnectivitySettingsState) obj; SharedConnectivitySettingsState other = (SharedConnectivitySettingsState) obj; return mInstantTetherEnabled == other.isInstantTetherEnabled(); return mInstantTetherEnabled == other.isInstantTetherEnabled() && Objects.equals(mInstantTetherSettingsPendingIntent, other.getInstantTetherSettingsPendingIntent()); } } @Override @Override public int hashCode() { public int hashCode() { return Objects.hash(mInstantTetherEnabled); return Objects.hash(mInstantTetherEnabled, mInstantTetherSettingsPendingIntent); } } @Override @Override Loading @@ -124,6 +169,7 @@ public final class SharedConnectivitySettingsState implements Parcelable { @Override @Override public void writeToParcel(@NonNull Parcel dest, int flags) { public void writeToParcel(@NonNull Parcel dest, int flags) { mInstantTetherSettingsPendingIntent.writeToParcel(dest, 0); dest.writeBoolean(mInstantTetherEnabled); dest.writeBoolean(mInstantTetherEnabled); dest.writeBundle(mExtras); dest.writeBundle(mExtras); } } Loading @@ -135,8 +181,10 @@ public final class SharedConnectivitySettingsState implements Parcelable { */ */ @NonNull @NonNull public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) { public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) { return new SharedConnectivitySettingsState(in.readBoolean(), PendingIntent pendingIntent = PendingIntent.CREATOR.createFromParcel(in); in.readBundle()); boolean instantTetherEnabled = in.readBoolean(); Bundle extras = in.readBundle(); return new SharedConnectivitySettingsState(instantTetherEnabled, pendingIntent, extras); } } @NonNull @NonNull Loading @@ -156,6 +204,7 @@ public final class SharedConnectivitySettingsState implements Parcelable { public String toString() { public String toString() { return new StringBuilder("SharedConnectivitySettingsState[") return new StringBuilder("SharedConnectivitySettingsState[") .append("instantTetherEnabled=").append(mInstantTetherEnabled) .append("instantTetherEnabled=").append(mInstantTetherEnabled) .append("PendingIntent=").append(mInstantTetherSettingsPendingIntent.toString()) .append("extras=").append(mExtras.toString()) .append("extras=").append(mExtras.toString()) .append("]").toString(); .append("]").toString(); } } Loading
wifi/java/src/android/net/wifi/sharedconnectivity/service/SharedConnectivityService.java +8 −3 Original line number Original line Diff line number Diff line Loading @@ -68,9 +68,7 @@ public abstract class SharedConnectivityService extends Service { new RemoteCallbackList<>(); new RemoteCallbackList<>(); private List<HotspotNetwork> mHotspotNetworks = Collections.emptyList(); private List<HotspotNetwork> mHotspotNetworks = Collections.emptyList(); private List<KnownNetwork> mKnownNetworks = Collections.emptyList(); private List<KnownNetwork> mKnownNetworks = Collections.emptyList(); private SharedConnectivitySettingsState mSettingsState = private SharedConnectivitySettingsState mSettingsState = null; new SharedConnectivitySettingsState.Builder().setInstantTetherEnabled(false) .setExtras(Bundle.EMPTY).build(); private HotspotNetworkConnectionStatus mHotspotNetworkConnectionStatus = private HotspotNetworkConnectionStatus mHotspotNetworkConnectionStatus = new HotspotNetworkConnectionStatus.Builder() new HotspotNetworkConnectionStatus.Builder() .setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN) .setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN) Loading Loading @@ -202,6 +200,13 @@ public abstract class SharedConnectivityService extends Service { @Override @Override public SharedConnectivitySettingsState getSettingsState() { public SharedConnectivitySettingsState getSettingsState() { checkPermissions(); checkPermissions(); // Done lazily since creating it needs a context. if (mSettingsState == null) { mSettingsState = new SharedConnectivitySettingsState .Builder(getApplicationContext()) .setInstantTetherEnabled(false) .setExtras(Bundle.EMPTY).build(); } return mSettingsState; return mSettingsState; } } Loading
wifi/tests/Android.bp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ android_test { static_libs: [ static_libs: [ "androidx.test.rules", "androidx.test.rules", "androidx.test.core", "frameworks-base-testutils", "frameworks-base-testutils", "guava", "guava", "mockito-target-minus-junit4", "mockito-target-minus-junit4", Loading
wifi/tests/src/android/net/wifi/sharedconnectivity/app/SharedConnectivityManagerTest.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -497,8 +497,9 @@ public class SharedConnectivityManagerTest { @Test @Test public void getSettingsState_serviceConnected_shouldReturnState() throws RemoteException { public void getSettingsState_serviceConnected_shouldReturnState() throws RemoteException { SharedConnectivityManager manager = SharedConnectivityManager.create(mContext); SharedConnectivityManager manager = SharedConnectivityManager.create(mContext); SharedConnectivitySettingsState state = new SharedConnectivitySettingsState.Builder() SharedConnectivitySettingsState state = .setInstantTetherEnabled(true).setExtras(new Bundle()).build(); new SharedConnectivitySettingsState.Builder(mContext).setInstantTetherEnabled(true) .setExtras(new Bundle()).build(); manager.setService(mService); manager.setService(mService); when(mService.getSettingsState()).thenReturn(state); when(mService.getSettingsState()).thenReturn(state); Loading