[Settings] Code refactor
Wrap reset options into an Object, for better supporting Bug: 260034791 Test: auto testing Change-Id: I98cc12440414077b600bba0b5598c887608419cc
This commit is contained in:
224
src/com/android/settings/ResetNetworkRequest.java
Normal file
224
src/com/android/settings/ResetNetworkRequest.java
Normal file
@@ -0,0 +1,224 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user