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

Commit 851bcaf2 authored by Paul Jensen's avatar Paul Jensen Committed by Android Git Automerger
Browse files

am ca36baaf: am 2cb16d2e: am 75a43340: am 00c64f7c: Merge "Add...

am ca36baaf: am 2cb16d2e: am 75a43340: am 00c64f7c: Merge "Add android.net.CaptivePortal class for captive-portal-handling-app callbacks" into mnc-dev

* commit 'ca36baaf':
  Add android.net.CaptivePortal class for captive-portal-handling-app callbacks
parents a5e2946f ca36baaf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -181,6 +181,7 @@ LOCAL_SRC_FILES += \
	core/java/android/hardware/location/IGeofenceHardwareMonitorCallback.aidl \
	core/java/android/hardware/soundtrigger/IRecognitionStatusCallback.aidl \
	core/java/android/hardware/usb/IUsbManager.aidl \
	core/java/android/net/ICaptivePortal.aidl \
	core/java/android/net/IConnectivityManager.aidl \
	core/java/android/net/IEthernetManager.aidl \
	core/java/android/net/IEthernetServiceListener.aidl \
+9 −3
Original line number Diff line number Diff line
@@ -18101,6 +18101,14 @@ package android.mtp {
package android.net {
  public class CaptivePortal implements android.os.Parcelable {
    method public int describeContents();
    method public void ignoreNetwork();
    method public void reportCaptivePortalDismissed();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR;
  }
  public class ConnectivityManager {
    method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
    method public boolean bindProcessToNetwork(android.net.Network);
@@ -18117,7 +18125,6 @@ package android.net {
    method public android.net.NetworkInfo getNetworkInfo(android.net.Network);
    method public deprecated int getNetworkPreference();
    method public static deprecated android.net.Network getProcessDefaultNetwork();
    method public void ignoreNetworkWithCaptivePortal(android.net.Network, java.lang.String);
    method public boolean isActiveNetworkMetered();
    method public boolean isDefaultNetworkActive();
    method public static deprecated boolean isNetworkTypeValid(int);
@@ -18126,7 +18133,6 @@ package android.net {
    method public void releaseNetworkRequest(android.app.PendingIntent);
    method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
    method public deprecated void reportBadNetwork(android.net.Network);
    method public void reportCaptivePortalDismissed(android.net.Network, java.lang.String);
    method public void reportNetworkConnectivity(android.net.Network, boolean);
    method public boolean requestBandwidthUpdate(android.net.Network);
    method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback);
@@ -18139,7 +18145,7 @@ package android.net {
    field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
    field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
    field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
    field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken";
    field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
    field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo";
    field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover";
    field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK";
+9 −3
Original line number Diff line number Diff line
@@ -19611,6 +19611,14 @@ package android.mtp {
package android.net {
  public class CaptivePortal implements android.os.Parcelable {
    method public int describeContents();
    method public void ignoreNetwork();
    method public void reportCaptivePortalDismissed();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR;
  }
  public class ConnectivityManager {
    method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
    method public boolean bindProcessToNetwork(android.net.Network);
@@ -19627,7 +19635,6 @@ package android.net {
    method public android.net.NetworkInfo getNetworkInfo(android.net.Network);
    method public deprecated int getNetworkPreference();
    method public static deprecated android.net.Network getProcessDefaultNetwork();
    method public void ignoreNetworkWithCaptivePortal(android.net.Network, java.lang.String);
    method public boolean isActiveNetworkMetered();
    method public boolean isDefaultNetworkActive();
    method public static deprecated boolean isNetworkTypeValid(int);
@@ -19636,7 +19643,6 @@ package android.net {
    method public void releaseNetworkRequest(android.app.PendingIntent);
    method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener);
    method public deprecated void reportBadNetwork(android.net.Network);
    method public void reportCaptivePortalDismissed(android.net.Network, java.lang.String);
    method public void reportNetworkConnectivity(android.net.Network, boolean);
    method public boolean requestBandwidthUpdate(android.net.Network);
    method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback);
@@ -19649,7 +19655,7 @@ package android.net {
    field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
    field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
    field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1
    field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken";
    field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
    field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo";
    field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover";
    field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK";
+108 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed urnder 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;

import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;

/**
 * A class allowing apps handling the {@link ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN}
 * activity to indicate to the system different outcomes of captive portal sign in.  This class is
 * passed as an extra named {@link ConnectivityManager#EXTRA_CAPTIVE_PORTAL} with the
 * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} activity.
 */
public class CaptivePortal implements Parcelable {
    /** @hide */
    public static final int APP_RETURN_DISMISSED    = 0;
    /** @hide */
    public static final int APP_RETURN_UNWANTED     = 1;
    /** @hide */
    public static final int APP_RETURN_WANTED_AS_IS = 2;

    private final IBinder mBinder;

    /** @hide */
    public CaptivePortal(IBinder binder) {
        mBinder = binder;
    }

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

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeStrongBinder(mBinder);
    }

    public static final Parcelable.Creator<CaptivePortal> CREATOR
            = new Parcelable.Creator<CaptivePortal>() {
        @Override
        public CaptivePortal createFromParcel(Parcel in) {
            return new CaptivePortal(in.readStrongBinder());
        }

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

    /**
     * Indicate to the system that the captive portal has been
     * dismissed.  In response the framework will re-evaluate the network's
     * connectivity and might take further action thereafter.
     */
    public void reportCaptivePortalDismissed() {
        try {
            ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_DISMISSED);
        } catch (RemoteException e) {
        }
    }

    /**
     * Indicate to the system that the user does not want to pursue signing in to the
     * captive portal and the system should continue to prefer other networks
     * without captive portals for use as the default active data network.  The
     * system will not retest the network for a captive portal so as to avoid
     * disturbing the user with further sign in to network notifications.
     */
    public void ignoreNetwork() {
        try {
            ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_UNWANTED);
        } catch (RemoteException e) {
        }
    }

    /**
     * Indicate to the system the user wants to use this network as is, even though
     * the captive portal is still in place.  The system will treat the network
     * as if it did not have a captive portal when selecting the network to use
     * as the default active data network. This may result in this network
     * becoming the default active data network, which could disrupt network
     * connectivity for apps because the captive portal is still in place.
     * @hide
     */
    public void useNetwork() {
        try {
            ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_WANTED_AS_IS);
        } catch (RemoteException e) {
        }
    }
}
+21 −98
Original line number Diff line number Diff line
@@ -102,26 +102,26 @@ public class ConnectivityManager {
     * portal, which is blocking Internet connectivity. The user was presented
     * with a notification that network sign in is required,
     * and the user invoked the notification's action indicating they
     * desire to sign in to the network. Apps handling this action should
     * desire to sign in to the network. Apps handling this activity should
     * facilitate signing in to the network. This action includes a
     * {@link Network} typed extra called {@link #EXTRA_NETWORK} that represents
     * the network presenting the captive portal; all communication with the
     * captive portal must be done using this {@code Network} object.
     * <p/>
     * When the app handling this action believes the user has signed in to
     * the network and the captive portal has been dismissed, the app should call
     * {@link #reportCaptivePortalDismissed} so the system can reevaluate the network.
     * If reevaluation finds the network no longer subject to a captive portal,
     * the network may become the default active data network.
     * <p/>
     * When the app handling this action believes the user explicitly wants
     * This activity includes a {@link CaptivePortal} extra named
     * {@link #EXTRA_CAPTIVE_PORTAL} that can be used to indicate different
     * outcomes of the captive portal sign in to the system:
     * <ul>
     * <li> When the app handling this action believes the user has signed in to
     * the network and the captive portal has been dismissed, the app should
     * call {@link CaptivePortal#reportCaptivePortalDismissed} so the system can
     * reevaluate the network. If reevaluation finds the network no longer
     * subject to a captive portal, the network may become the default active
     * data network. </li>
     * <li> When the app handling this action believes the user explicitly wants
     * to ignore the captive portal and the network, the app should call
     * {@link #ignoreNetworkWithCaptivePortal}.
     * <p/>
     * Note that this action includes a {@code String} extra named
     * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} that must
     * be passed in to {@link #reportCaptivePortalDismissed} and
     * {@link #ignoreNetworkWithCaptivePortal}.
     * {@link CaptivePortal#ignoreNetwork}. </li>
     * </ul>
     */
    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
    public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL";
@@ -187,16 +187,15 @@ public class ConnectivityManager {
     * {@hide}
     */
    public static final String EXTRA_INET_CONDITION = "inetCondition";

    /**
     * The lookup key for a string that is sent out with
     * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN}. This string must be
     * passed in to {@link #reportCaptivePortalDismissed} and
     * {@link #ignoreNetworkWithCaptivePortal}. Retrieve it with
     * {@link android.content.Intent#getStringExtra(String)}.
     * The lookup key for a {@link CaptivePortal} object included with the
     * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} intent.  The {@code CaptivePortal}
     * object can be used to either indicate to the system that the captive
     * portal has been dismissed or that the user does not want to pursue
     * signing in to captive portal.  Retrieve it with
     * {@link android.content.Intent#getParcelableExtra(String)}.
     */
    public static final String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken";

    public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL";
    /**
     * Broadcast action to indicate the change of data activity status
     * (idle or active) on a network in a recent period.
@@ -1779,82 +1778,6 @@ public class ConnectivityManager {
        }
    }

    /** {@hide} */
    public static final int CAPTIVE_PORTAL_APP_RETURN_DISMISSED    = 0;
    /** {@hide} */
    public static final int CAPTIVE_PORTAL_APP_RETURN_UNWANTED     = 1;
    /** {@hide} */
    public static final int CAPTIVE_PORTAL_APP_RETURN_WANTED_AS_IS = 2;

    /**
     * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN}
     * action to indicate to the system that the captive portal has been
     * dismissed.  In response the framework will re-evaluate the network's
     * connectivity and might take further action thereafter.
     *
     * @param network The {@link Network} object passed via
     *                {@link #EXTRA_NETWORK} with the
     *                {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action.
     * @param actionToken The {@code String} passed via
     *                    {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the
     *                    {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action.
     */
    public void reportCaptivePortalDismissed(Network network, String actionToken) {
        try {
            mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_DISMISSED,
                    actionToken);
        } catch (RemoteException e) {
        }
    }

    /**
     * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN}
     * action to indicate that the user does not want to pursue signing in to
     * captive portal and the system should continue to prefer other networks
     * without captive portals for use as the default active data network.  The
     * system will not retest the network for a captive portal so as to avoid
     * disturbing the user with further sign in to network notifications.
     *
     * @param network The {@link Network} object passed via
     *                {@link #EXTRA_NETWORK} with the
     *                {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action.
     * @param actionToken The {@code String} passed via
     *                    {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the
     *                    {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action.
     */
    public void ignoreNetworkWithCaptivePortal(Network network, String actionToken) {
        try {
            mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_UNWANTED,
                    actionToken);
        } catch (RemoteException e) {
        }
    }

    /**
     * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN}
     * action to indicate the user wants to use this network as is, even though
     * the captive portal is still in place.  The system will treat the network
     * as if it did not have a captive portal when selecting the network to use
     * as the default active data network. This may result in this network
     * becoming the default active data network, which could disrupt network
     * connectivity for apps because the captive portal is still in place.
     *
     * @param network The {@link Network} object passed via
     *                {@link #EXTRA_NETWORK} with the
     *                {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action.
     * @param actionToken The {@code String} passed via
     *                    {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the
     *                    {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action.
     * @hide
     */
    public void useNetworkWithCaptivePortal(Network network, String actionToken) {
        try {
            mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_WANTED_AS_IS,
                    actionToken);
        } catch (RemoteException e) {
        }
    }

    /**
     * Set a network-independent global http proxy.  This is not normally what you want
     * for typical HTTP proxies - they are general network dependent.  However if you're
Loading