Wrap reset options into an Object, for better supporting Bug: 260034791 Test: auto testing Change-Id: I98cc12440414077b600bba0b5598c887608419cc
225 lines
8.6 KiB
Java
225 lines
8.6 KiB
Java
/*
|
|
* Copyright (C) 2022 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 com.android.settings;
|
|
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
import android.os.Looper;
|
|
import android.telephony.SubscriptionManager;
|
|
|
|
import androidx.annotation.VisibleForTesting;
|
|
|
|
import com.android.settings.network.ResetNetworkOperationBuilder;
|
|
|
|
/**
|
|
* A request which contains options required for resetting network.
|
|
*/
|
|
public class ResetNetworkRequest {
|
|
|
|
/* Reset option - nothing get reset */
|
|
public static final int RESET_NONE = 0x00;
|
|
|
|
/* Reset option - reset ConnectivityManager */
|
|
public static final int RESET_CONNECTIVITY_MANAGER = 0x01;
|
|
|
|
/* Reset option - reset VpnManager */
|
|
public static final int RESET_VPN_MANAGER = 0x02;
|
|
|
|
/* Reset option - reset WiFiManager */
|
|
public static final int RESET_WIFI_MANAGER = 0x04;
|
|
|
|
/* Reset option - reset WifiP2pManager */
|
|
public static final int RESET_WIFI_P2P_MANAGER = 0x08;
|
|
|
|
/* Reset option - reset BluetoothManager */
|
|
public static final int RESET_BLUETOOTH_MANAGER = 0x10;
|
|
|
|
/* Subscription ID for not performing reset TelephonyAndNetworkPolicy or reset APN */
|
|
public static final int INVALID_SUBSCRIPTION_ID = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
|
|
|
/* Subscription ID for performing reset TelephonyAndNetworkPolicy or reset APN
|
|
on all subscriptions */
|
|
public static final int ALL_SUBSCRIPTION_ID = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
|
|
|
|
/* Key within Bundle. To store some connectivity options for reset */
|
|
@VisibleForTesting
|
|
protected static final String KEY_RESET_OPTIONS = "resetNetworkOptions";
|
|
|
|
/* Key within Bundle. To store package name for resetting eSIM */
|
|
@VisibleForTesting
|
|
protected static final String KEY_ESIM_PACKAGE = "resetEsimPackage";
|
|
|
|
/**
|
|
* Key within Bundle. To store subscription ID for resetting
|
|
* telephony manager and network and network policy manager.
|
|
*/
|
|
@VisibleForTesting
|
|
protected static final String KEY_TELEPHONY_NET_POLICY_MANAGER_SUBID =
|
|
"resetTelephonyNetPolicySubId";
|
|
|
|
/* Key within Bundle. To store subscription ID for resetting APN. */
|
|
@VisibleForTesting
|
|
protected static final String KEY_APN_SUBID = "resetApnSubId";
|
|
|
|
private int mResetOptions = RESET_NONE;
|
|
private String mResetEsimPackageName;
|
|
private int mResetTelephonyManager = INVALID_SUBSCRIPTION_ID;
|
|
private int mResetApn = INVALID_SUBSCRIPTION_ID;
|
|
|
|
/**
|
|
* Reconstruct based on keys stored within Bundle.
|
|
* @param optionsFromBundle is a Bundle which previously stored through #writeIntoBundle()
|
|
*/
|
|
public ResetNetworkRequest(Bundle optionsFromBundle) {
|
|
if (optionsFromBundle == null) {
|
|
return;
|
|
}
|
|
mResetOptions = optionsFromBundle.getInt(KEY_RESET_OPTIONS, RESET_NONE);
|
|
mResetEsimPackageName = optionsFromBundle.getString(KEY_ESIM_PACKAGE);
|
|
mResetTelephonyManager = optionsFromBundle.getInt(
|
|
KEY_TELEPHONY_NET_POLICY_MANAGER_SUBID, INVALID_SUBSCRIPTION_ID);
|
|
mResetApn = optionsFromBundle.getInt(KEY_APN_SUBID, INVALID_SUBSCRIPTION_ID);
|
|
}
|
|
|
|
/**
|
|
* Construct of class
|
|
* @param resetOptions is a binary combination(OR logic operation) of constants
|
|
* comes with RESET_ prefix. Which are the reset options comes within.
|
|
*/
|
|
public ResetNetworkRequest(int resetOptions) {
|
|
mResetOptions = resetOptions;
|
|
}
|
|
|
|
/**
|
|
* Get the package name applied for resetting eSIM.
|
|
* @return package name. {@code null} means resetting eSIM is not part of the
|
|
* option within this request.
|
|
*/
|
|
public String getResetEsimPackageName() {
|
|
return mResetEsimPackageName;
|
|
}
|
|
|
|
/**
|
|
* Set the package name for resetting eSIM.
|
|
* @param packageName is the package name for resetting eSIM.
|
|
* {@code null} will remove the resetting eSIM option out of this request.
|
|
* @return this request
|
|
*/
|
|
public ResetNetworkRequest setResetEsim(String packageName) {
|
|
mResetEsimPackageName = packageName;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Get the subscription ID applied for resetting Telephony and NetworkPolicy.
|
|
* @return subscription ID.
|
|
* {@code ALL_SUBSCRIPTION_ID} for applying to all subscriptions.
|
|
* {@code INVALID_SUBSCRIPTION_ID} means
|
|
* resetting Telephony and NetworkPolicy is not part of the option
|
|
* within this request.
|
|
*/
|
|
public int getResetTelephonyAndNetworkPolicyManager() {
|
|
return mResetTelephonyManager;
|
|
}
|
|
|
|
/**
|
|
* Set the subscription ID applied for resetting Telephony and NetworkPolicy.
|
|
* @param subscriptionId is the subscription ID referenced fron SubscriptionManager.
|
|
* {@code ALL_SUBSCRIPTION_ID} for applying to all subscriptions.
|
|
* {@code INVALID_SUBSCRIPTION_ID} means resetting Telephony and NetworkPolicy
|
|
* will not take place.
|
|
* @return this request
|
|
*/
|
|
public ResetNetworkRequest setResetTelephonyAndNetworkPolicyManager(int subscriptionId) {
|
|
mResetTelephonyManager = subscriptionId;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Get the subscription ID applied for resetting APN.
|
|
* @return subscription ID.
|
|
* {@code ALL_SUBSCRIPTION_ID} for applying to all subscriptions.
|
|
* {@code INVALID_SUBSCRIPTION_ID} means resetting APN
|
|
* is not part of the option within this request.
|
|
*/
|
|
public int getResetApnSubId() {
|
|
return mResetApn;
|
|
}
|
|
|
|
/**
|
|
* Set the subscription ID applied for resetting APN.
|
|
* @param subscriptionId is the subscription ID referenced fron SubscriptionManager.
|
|
* {@code ALL_SUBSCRIPTION_ID} for applying to all subscriptions.
|
|
* {@code INVALID_SUBSCRIPTION_ID} means resetting APN will not take place.
|
|
* @return this request
|
|
*/
|
|
public ResetNetworkRequest setResetApn(int subscriptionId) {
|
|
mResetApn = subscriptionId;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Store a copy of this request into Bundle given.
|
|
* @param writeToBundle is a Bundle for storing configurations of this request.
|
|
* @return this request
|
|
*/
|
|
public ResetNetworkRequest writeIntoBundle(Bundle writeToBundle) {
|
|
writeToBundle.putInt(KEY_RESET_OPTIONS, mResetOptions);
|
|
writeToBundle.putString(KEY_ESIM_PACKAGE, mResetEsimPackageName);
|
|
writeToBundle.putInt(KEY_TELEPHONY_NET_POLICY_MANAGER_SUBID, mResetTelephonyManager);
|
|
writeToBundle.putInt(KEY_APN_SUBID, mResetApn);
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Build a ResetNetworkOperationBuilder based on configurations within this request.
|
|
* @param context required by ResetNetworkOperationBuilder
|
|
* @param looper required by ResetNetworkOperationBuilder for callback support
|
|
* @return a ResetNetworkOperationBuilder
|
|
*/
|
|
public ResetNetworkOperationBuilder toResetNetworkOperationBuilder(Context context,
|
|
Looper looper) {
|
|
// Follow specific order based on previous design within file ResetNetworkConfirm.java
|
|
ResetNetworkOperationBuilder builder = new ResetNetworkOperationBuilder(context);
|
|
if ((mResetOptions & RESET_CONNECTIVITY_MANAGER) != 0) {
|
|
builder.resetConnectivityManager();
|
|
}
|
|
if ((mResetOptions & RESET_VPN_MANAGER) != 0) {
|
|
builder.resetVpnManager();
|
|
}
|
|
if ((mResetOptions & RESET_WIFI_MANAGER) != 0) {
|
|
builder.resetWifiManager();
|
|
}
|
|
if ((mResetOptions & RESET_WIFI_P2P_MANAGER) != 0) {
|
|
builder.resetWifiP2pManager(looper);
|
|
}
|
|
if (mResetEsimPackageName != null) {
|
|
builder.resetEsim(mResetEsimPackageName);
|
|
}
|
|
if (mResetTelephonyManager != INVALID_SUBSCRIPTION_ID) {
|
|
builder.resetTelephonyAndNetworkPolicyManager(mResetTelephonyManager);
|
|
}
|
|
if ((mResetOptions & RESET_BLUETOOTH_MANAGER) != 0) {
|
|
builder.resetBluetoothManager();
|
|
}
|
|
if (mResetApn != INVALID_SUBSCRIPTION_ID) {
|
|
builder.resetApn(mResetApn);
|
|
}
|
|
return builder;
|
|
}
|
|
}
|