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

Commit 30110779 authored by Isaac Katzenelson's avatar Isaac Katzenelson Committed by Automerger Merge Worker
Browse files

Merge "Add PendingIntent to SharedConnectivitySettingsState" into udc-dev am: 56954d17

parents a9422726 56954d17
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -10134,16 +10134,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