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

Commit 0c66dc49 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Add PendingIntent to SharedConnectivitySettingsState" into...

Merge "Merge "Add PendingIntent to SharedConnectivitySettingsState" into udc-dev am: 56954d17 am: 4432fb8e"
parents 771015e5 812d5fdc
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -10141,16 +10141,18 @@ 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 @Nullable public android.app.PendingIntent getInstantTetherSettingsPendingIntent();
    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;
  }
  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.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 setInstantTetherSettingsPendingIntent(@NonNull android.content.Intent);
  }
}
+56 −7
Original line number Diff line number Diff line
@@ -17,7 +17,11 @@
package android.net.wifi.sharedconnectivity.app;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -37,6 +41,7 @@ import java.util.Objects;
public final class SharedConnectivitySettingsState implements Parcelable {

    private final boolean mInstantTetherEnabled;
    private final PendingIntent mInstantTetherSettingsPendingIntent;
    private final Bundle mExtras;

    /**
@@ -44,9 +49,13 @@ public final class SharedConnectivitySettingsState implements Parcelable {
     */
    public static final class Builder {
        private boolean mInstantTetherEnabled;
        private Intent mInstantTetherSettingsIntent;
        private final Context mContext;
        private Bundle mExtras;

        public Builder() {}
        public Builder(@NonNull Context context) {
            mContext = context;
        }

        /**
         * Sets the state of Instant Tether in settings
@@ -59,6 +68,20 @@ public final class SharedConnectivitySettingsState implements Parcelable {
            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
         *
@@ -77,12 +100,22 @@ public final class SharedConnectivitySettingsState implements Parcelable {
         */
        @NonNull
        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;
        mInstantTetherSettingsPendingIntent = pendingIntent;
        mExtras = extras;
    }

@@ -95,6 +128,16 @@ public final class SharedConnectivitySettingsState implements Parcelable {
        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.
     *
@@ -109,12 +152,14 @@ public final class SharedConnectivitySettingsState implements Parcelable {
    public boolean equals(Object obj) {
        if (!(obj instanceof SharedConnectivitySettingsState)) return false;
        SharedConnectivitySettingsState other = (SharedConnectivitySettingsState) obj;
        return mInstantTetherEnabled == other.isInstantTetherEnabled();
        return mInstantTetherEnabled == other.isInstantTetherEnabled()
                && Objects.equals(mInstantTetherSettingsPendingIntent,
                other.getInstantTetherSettingsPendingIntent());
    }

    @Override
    public int hashCode() {
        return Objects.hash(mInstantTetherEnabled);
        return Objects.hash(mInstantTetherEnabled, mInstantTetherSettingsPendingIntent);
    }

    @Override
@@ -124,6 +169,7 @@ public final class SharedConnectivitySettingsState implements Parcelable {

    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        mInstantTetherSettingsPendingIntent.writeToParcel(dest, 0);
        dest.writeBoolean(mInstantTetherEnabled);
        dest.writeBundle(mExtras);
    }
@@ -135,8 +181,10 @@ public final class SharedConnectivitySettingsState implements Parcelable {
     */
    @NonNull
    public static SharedConnectivitySettingsState readFromParcel(@NonNull Parcel in) {
        return new SharedConnectivitySettingsState(in.readBoolean(),
                in.readBundle());
        PendingIntent pendingIntent = PendingIntent.CREATOR.createFromParcel(in);
        boolean instantTetherEnabled = in.readBoolean();
        Bundle extras = in.readBundle();
        return new SharedConnectivitySettingsState(instantTetherEnabled, pendingIntent, extras);
    }

    @NonNull
@@ -156,6 +204,7 @@ public final class SharedConnectivitySettingsState implements Parcelable {
    public String toString() {
        return new StringBuilder("SharedConnectivitySettingsState[")
                .append("instantTetherEnabled=").append(mInstantTetherEnabled)
                .append("PendingIntent=").append(mInstantTetherSettingsPendingIntent.toString())
                .append("extras=").append(mExtras.toString())
                .append("]").toString();
    }
+8 −3
Original line number Diff line number Diff line
@@ -68,9 +68,7 @@ public abstract class SharedConnectivityService extends Service {
            new RemoteCallbackList<>();
    private List<HotspotNetwork> mHotspotNetworks = Collections.emptyList();
    private List<KnownNetwork> mKnownNetworks = Collections.emptyList();
    private SharedConnectivitySettingsState mSettingsState =
            new SharedConnectivitySettingsState.Builder().setInstantTetherEnabled(false)
                    .setExtras(Bundle.EMPTY).build();
    private SharedConnectivitySettingsState mSettingsState = null;
    private HotspotNetworkConnectionStatus mHotspotNetworkConnectionStatus =
            new HotspotNetworkConnectionStatus.Builder()
                    .setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN)
@@ -202,6 +200,13 @@ public abstract class SharedConnectivityService extends Service {
            @Override
            public SharedConnectivitySettingsState getSettingsState() {
                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;
            }

+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ android_test {

    static_libs: [
        "androidx.test.rules",
        "androidx.test.core",
        "frameworks-base-testutils",
        "guava",
        "mockito-target-minus-junit4",
+3 −2
Original line number Diff line number Diff line
@@ -497,8 +497,9 @@ public class SharedConnectivityManagerTest {
    @Test
    public void getSettingsState_serviceConnected_shouldReturnState() throws RemoteException {
        SharedConnectivityManager manager = SharedConnectivityManager.create(mContext);
        SharedConnectivitySettingsState state = new SharedConnectivitySettingsState.Builder()
                .setInstantTetherEnabled(true).setExtras(new Bundle()).build();
        SharedConnectivitySettingsState state =
                new SharedConnectivitySettingsState.Builder(mContext).setInstantTetherEnabled(true)
                        .setExtras(new Bundle()).build();
        manager.setService(mService);
        when(mService.getSettingsState()).thenReturn(state);

Loading