Snap for 9330281 from 7d507964e6 to udc-release
Change-Id: Id3348620f4f456e8b73cc51029756d80136e5f81
This commit is contained in:
@@ -40,6 +40,9 @@ import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import androidx.activity.result.ActivityResult;
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
@@ -70,6 +73,7 @@ public class ResetNetwork extends InstrumentedFragment {
|
||||
// Arbitrary to avoid conficts
|
||||
private static final int KEYGUARD_REQUEST = 55;
|
||||
|
||||
private ActivityResultLauncher mActivityResultLauncher;
|
||||
private List<SubscriptionInfo> mSubscriptions;
|
||||
|
||||
private View mContentView;
|
||||
@@ -82,6 +86,10 @@ public class ResetNetwork extends InstrumentedFragment {
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getActivity().setTitle(R.string.reset_network_title);
|
||||
|
||||
mActivityResultLauncher = registerForActivityResult(
|
||||
new ActivityResultContracts.StartActivityForResult(),
|
||||
result -> onActivityLauncherResult(result));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -96,20 +104,14 @@ public class ResetNetwork extends InstrumentedFragment {
|
||||
new ChooseLockSettingsHelper.Builder(getActivity(), this);
|
||||
return builder.setRequestCode(request)
|
||||
.setTitle(res.getText(R.string.reset_network_title))
|
||||
.setActivityResultLauncher(mActivityResultLauncher)
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
if (requestCode != KEYGUARD_REQUEST) {
|
||||
return;
|
||||
}
|
||||
|
||||
public void onActivityLauncherResult(ActivityResult result) {
|
||||
// If the user entered a valid keyguard trace, present the final
|
||||
// confirmation prompt; otherwise, go back to the initial state.
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
if (result.getResultCode() == Activity.RESULT_OK) {
|
||||
showFinalConfirmation();
|
||||
} else if (mContentView != null) {
|
||||
establishInitialState(getActiveSubscriptionInfoList());
|
||||
@@ -119,14 +121,28 @@ public class ResetNetwork extends InstrumentedFragment {
|
||||
@VisibleForTesting
|
||||
void showFinalConfirmation() {
|
||||
Bundle args = new Bundle();
|
||||
|
||||
ResetNetworkRequest request = new ResetNetworkRequest(
|
||||
ResetNetworkRequest.RESET_CONNECTIVITY_MANAGER |
|
||||
ResetNetworkRequest.RESET_VPN_MANAGER |
|
||||
ResetNetworkRequest.RESET_WIFI_MANAGER |
|
||||
ResetNetworkRequest.RESET_WIFI_P2P_MANAGER |
|
||||
ResetNetworkRequest.RESET_BLUETOOTH_MANAGER
|
||||
);
|
||||
if (mSubscriptions != null && mSubscriptions.size() > 0) {
|
||||
int selectedIndex = mSubscriptionSpinner.getSelectedItemPosition();
|
||||
SubscriptionInfo subscription = mSubscriptions.get(selectedIndex);
|
||||
args.putInt(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
|
||||
subscription.getSubscriptionId());
|
||||
int subId = subscription.getSubscriptionId();
|
||||
request.setResetTelephonyAndNetworkPolicyManager(subId)
|
||||
.setResetApn(subId);
|
||||
}
|
||||
args.putBoolean(MainClear.ERASE_ESIMS_EXTRA,
|
||||
mEsimContainer.getVisibility() == View.VISIBLE && mEsimCheckbox.isChecked());
|
||||
if (mEsimContainer.getVisibility() == View.VISIBLE && mEsimCheckbox.isChecked()) {
|
||||
request.setResetEsim(getContext().getPackageName())
|
||||
.writeIntoBundle(args);
|
||||
} else {
|
||||
request.writeIntoBundle(args);
|
||||
}
|
||||
|
||||
new SubSettingLauncher(getContext())
|
||||
.setDestination(ResetNetworkConfirm.class.getName())
|
||||
.setArguments(args)
|
||||
|
||||
@@ -56,10 +56,9 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
private static final String TAG = "ResetNetworkConfirm";
|
||||
|
||||
@VisibleForTesting View mContentView;
|
||||
@VisibleForTesting boolean mEraseEsim;
|
||||
@VisibleForTesting ResetNetworkTask mResetNetworkTask;
|
||||
@VisibleForTesting Activity mActivity;
|
||||
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
@VisibleForTesting ResetNetworkRequest mResetNetworkRequest;
|
||||
private ProgressDialog mProgressDialog;
|
||||
private AlertDialog mAlertDialog;
|
||||
private OnSubscriptionsChangedListener mSubscriptionsChangedListener;
|
||||
@@ -72,32 +71,25 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
private static final String TAG = "ResetNetworkTask";
|
||||
|
||||
private final Context mContext;
|
||||
private final String mPackageName;
|
||||
|
||||
ResetNetworkTask(Context context) {
|
||||
mContext = context;
|
||||
mPackageName = context.getPackageName();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
final AtomicBoolean resetEsimSuccess = new AtomicBoolean(true);
|
||||
ResetNetworkOperationBuilder builder =
|
||||
(new ResetNetworkOperationBuilder(mContext))
|
||||
.resetConnectivityManager()
|
||||
.resetVpnManager()
|
||||
.resetWifiManager()
|
||||
.resetWifiP2pManager(Looper.getMainLooper());
|
||||
if (mEraseEsim) {
|
||||
builder = builder.resetEsim(mContext.getPackageName(),
|
||||
|
||||
String resetEsimPackageName = mResetNetworkRequest.getResetEsimPackageName();
|
||||
ResetNetworkOperationBuilder builder = mResetNetworkRequest
|
||||
.toResetNetworkOperationBuilder(mContext, Looper.getMainLooper());
|
||||
if (resetEsimPackageName != null) {
|
||||
// Override reset eSIM option for the result of reset operation
|
||||
builder = builder.resetEsim(resetEsimPackageName,
|
||||
success -> { resetEsimSuccess.set(success); }
|
||||
);
|
||||
}
|
||||
builder.resetTelephonyAndNetworkPolicyManager(mSubId)
|
||||
.resetBluetoothManager()
|
||||
.resetApn(mSubId)
|
||||
.build()
|
||||
.run();
|
||||
builder.build().run();
|
||||
|
||||
boolean isResetSucceed = resetEsimSuccess.get();
|
||||
Log.d(TAG, "network factoryReset complete. succeeded: "
|
||||
@@ -138,12 +130,13 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
// abandon execution if subscription no longer active
|
||||
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
int subId = mResetNetworkRequest.getResetApnSubId();
|
||||
if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
SubscriptionManager mgr = getSubscriptionManager();
|
||||
// always remove listener
|
||||
stopMonitorSubscriptionChange(mgr);
|
||||
if (!isSubscriptionRemainActive(mgr, mSubId)) {
|
||||
Log.w(TAG, "subId " + mSubId + " disappear when confirm");
|
||||
if (!isSubscriptionRemainActive(mgr, subId)) {
|
||||
Log.w(TAG, "subId " + subId + " disappear when confirm");
|
||||
mActivity.finish();
|
||||
return;
|
||||
}
|
||||
@@ -182,7 +175,7 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
|
||||
@VisibleForTesting
|
||||
void setSubtitle() {
|
||||
if (mEraseEsim) {
|
||||
if (mResetNetworkRequest.getResetEsimPackageName() != null) {
|
||||
((TextView) mContentView.findViewById(R.id.reset_network_confirm))
|
||||
.setText(R.string.reset_network_final_desc_esim);
|
||||
}
|
||||
@@ -193,6 +186,7 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
Bundle savedInstanceState) {
|
||||
View view = (new ResetNetworkRestrictionViewBuilder(mActivity)).build();
|
||||
if (view != null) {
|
||||
stopMonitorSubscriptionChange(getSubscriptionManager());
|
||||
Log.w(TAG, "Access deny.");
|
||||
return view;
|
||||
}
|
||||
@@ -207,15 +201,15 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
Bundle args = getArguments();
|
||||
if (args != null) {
|
||||
mSubId = args.getInt(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
|
||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
mEraseEsim = args.getBoolean(MainClear.ERASE_ESIMS_EXTRA);
|
||||
if (args == null) {
|
||||
args = savedInstanceState;
|
||||
}
|
||||
mResetNetworkRequest = new ResetNetworkRequest(args);
|
||||
|
||||
mActivity = getActivity();
|
||||
|
||||
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
if (mResetNetworkRequest.getResetApnSubId()
|
||||
== ResetNetworkRequest.INVALID_SUBSCRIPTION_ID) {
|
||||
return;
|
||||
}
|
||||
// close confirmation dialog when reset specific subscription
|
||||
@@ -223,6 +217,12 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
startMonitorSubscriptionChange(getSubscriptionManager());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
mResetNetworkRequest.writeIntoBundle(outState);
|
||||
}
|
||||
|
||||
private SubscriptionManager getSubscriptionManager() {
|
||||
SubscriptionManager mgr = mActivity.getSystemService(SubscriptionManager.class);
|
||||
if (mgr == null) {
|
||||
@@ -240,12 +240,13 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
Looper.getMainLooper()) {
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
int subId = mResetNetworkRequest.getResetApnSubId();
|
||||
SubscriptionManager mgr = getSubscriptionManager();
|
||||
if (isSubscriptionRemainActive(mgr, mSubId)) {
|
||||
if (isSubscriptionRemainActive(mgr, subId)) {
|
||||
return;
|
||||
}
|
||||
// close UI if subscription no longer active
|
||||
Log.w(TAG, "subId " + mSubId + " no longer active.");
|
||||
Log.w(TAG, "subId " + subId + " no longer active.");
|
||||
stopMonitorSubscriptionChange(mgr);
|
||||
mActivity.finish();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ public class RebootWithMteDialog extends InstrumentedDialogFragment
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.REBOOT_WITH_MTE;
|
||||
return SettingsEnums.REBOOT_WITH_MTE_DIALOG;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.content.IntentSender;
|
||||
import android.os.UserManager;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
@@ -109,19 +110,23 @@ public final class ChooseLockSettingsHelper {
|
||||
@VisibleForTesting @NonNull LockPatternUtils mLockPatternUtils;
|
||||
@NonNull private final Activity mActivity;
|
||||
@Nullable private final Fragment mFragment;
|
||||
@Nullable private final ActivityResultLauncher mActivityResultLauncher;
|
||||
@NonNull private final Builder mBuilder;
|
||||
|
||||
private ChooseLockSettingsHelper(@NonNull Builder builder, @NonNull Activity activity,
|
||||
@Nullable Fragment fragment) {
|
||||
@Nullable Fragment fragment,
|
||||
@Nullable ActivityResultLauncher activityResultLauncher) {
|
||||
mBuilder = builder;
|
||||
mActivity = activity;
|
||||
mFragment = fragment;
|
||||
mActivityResultLauncher = activityResultLauncher;
|
||||
mLockPatternUtils = new LockPatternUtils(activity);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
@NonNull private final Activity mActivity;
|
||||
@Nullable private Fragment mFragment;
|
||||
@Nullable private ActivityResultLauncher mActivityResultLauncher;
|
||||
|
||||
private int mRequestCode;
|
||||
@Nullable private CharSequence mTitle;
|
||||
@@ -265,6 +270,18 @@ public final class ChooseLockSettingsHelper {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Support of ActivityResultLauncher.
|
||||
*
|
||||
* Which allowing the launch operation be controlled externally.
|
||||
* @param activityResultLauncher a launcher previously prepared.
|
||||
*/
|
||||
@NonNull public Builder setActivityResultLauncher(
|
||||
ActivityResultLauncher activityResultLauncher) {
|
||||
mActivityResultLauncher = activityResultLauncher;
|
||||
return this;
|
||||
}
|
||||
|
||||
@NonNull public ChooseLockSettingsHelper build() {
|
||||
if (!mAllowAnyUserId && mUserId != LockPatternUtils.USER_FRP) {
|
||||
Utils.enforceSameOwner(mActivity, mUserId);
|
||||
@@ -282,7 +299,8 @@ public final class ChooseLockSettingsHelper {
|
||||
+ " ReturnCredentials. Are you sure this is what you want?");
|
||||
}
|
||||
|
||||
return new ChooseLockSettingsHelper(this, mActivity, mFragment);
|
||||
return new ChooseLockSettingsHelper(this, mActivity, mFragment,
|
||||
mActivityResultLauncher);
|
||||
}
|
||||
|
||||
public boolean show() {
|
||||
@@ -369,13 +387,17 @@ public final class ChooseLockSettingsHelper {
|
||||
if (external) {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
|
||||
copyOptionalExtras(inIntent, intent);
|
||||
if (mFragment != null) {
|
||||
if (mActivityResultLauncher != null) {
|
||||
mActivityResultLauncher.launch(intent);
|
||||
} else if (mFragment != null) {
|
||||
mFragment.startActivity(intent);
|
||||
} else {
|
||||
mActivity.startActivity(intent);
|
||||
}
|
||||
} else {
|
||||
if (mFragment != null) {
|
||||
if (mActivityResultLauncher != null) {
|
||||
mActivityResultLauncher.launch(intent);
|
||||
} else if (mFragment != null) {
|
||||
mFragment.startActivityForResult(intent, request);
|
||||
} else {
|
||||
mActivity.startActivityForResult(intent, request);
|
||||
|
||||
@@ -31,6 +31,9 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
||||
import com.android.settings.testutils.shadow.ShadowRecoverySystem;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
@@ -43,8 +46,11 @@ import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowRecoverySystem.class, ShadowBluetoothAdapter.class})
|
||||
public class ResetNetworkConfirmTest {
|
||||
|
||||
private static final String TEST_PACKAGE = "com.android.settings";
|
||||
|
||||
private FragmentActivity mActivity;
|
||||
|
||||
@Mock
|
||||
@@ -59,9 +65,28 @@ public class ResetNetworkConfirmTest {
|
||||
mResetNetworkConfirm.mActivity = mActivity;
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
ShadowRecoverySystem.reset();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResetNetworkData_notResetEsim() {
|
||||
mResetNetworkConfirm.mResetNetworkRequest =
|
||||
new ResetNetworkRequest(ResetNetworkRequest.RESET_NONE);
|
||||
|
||||
mResetNetworkConfirm.mFinalClickListener.onClick(null /* View */);
|
||||
Robolectric.getBackgroundThreadScheduler().advanceToLastPostedRunnable();
|
||||
|
||||
assertThat(ShadowRecoverySystem.getWipeEuiccCalledCount()).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setSubtitle_eraseEsim() {
|
||||
mResetNetworkConfirm.mEraseEsim = true;
|
||||
mResetNetworkConfirm.mResetNetworkRequest =
|
||||
new ResetNetworkRequest(ResetNetworkRequest.RESET_NONE);
|
||||
mResetNetworkConfirm.mResetNetworkRequest.setResetEsim(TEST_PACKAGE);
|
||||
|
||||
mResetNetworkConfirm.mContentView =
|
||||
LayoutInflater.from(mActivity).inflate(R.layout.reset_network_confirm, null);
|
||||
|
||||
@@ -74,7 +99,9 @@ public class ResetNetworkConfirmTest {
|
||||
|
||||
@Test
|
||||
public void setSubtitle_notEraseEsim() {
|
||||
mResetNetworkConfirm.mEraseEsim = false;
|
||||
mResetNetworkConfirm.mResetNetworkRequest =
|
||||
new ResetNetworkRequest(ResetNetworkRequest.RESET_NONE);
|
||||
|
||||
mResetNetworkConfirm.mContentView =
|
||||
LayoutInflater.from(mActivity).inflate(R.layout.reset_network_confirm, null);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.Robolectric;
|
||||
@@ -48,6 +49,7 @@ public class ResetNetworkTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void showFinalConfirmation_checkboxVisible_eraseEsimChecked() {
|
||||
mResetNetwork.mEsimContainer.setVisibility(View.VISIBLE);
|
||||
mResetNetwork.mEsimCheckbox.setChecked(true);
|
||||
@@ -55,8 +57,8 @@ public class ResetNetworkTest {
|
||||
mResetNetwork.showFinalConfirmation();
|
||||
|
||||
Intent intent = shadowOf(mActivity).getNextStartedActivity();
|
||||
assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
|
||||
.getBoolean(MainClear.ERASE_ESIMS_EXTRA, false)).isTrue();
|
||||
assertThat(intent.getStringExtra(ResetNetworkRequest.KEY_ESIM_PACKAGE))
|
||||
.isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -67,8 +69,8 @@ public class ResetNetworkTest {
|
||||
mResetNetwork.showFinalConfirmation();
|
||||
|
||||
Intent intent = shadowOf(mActivity).getNextStartedActivity();
|
||||
assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
|
||||
.getBoolean(MainClear.ERASE_ESIMS_EXTRA, false)).isFalse();
|
||||
assertThat(intent.getStringExtra(ResetNetworkRequest.KEY_ESIM_PACKAGE))
|
||||
.isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -79,8 +81,8 @@ public class ResetNetworkTest {
|
||||
mResetNetwork.showFinalConfirmation();
|
||||
|
||||
Intent intent = shadowOf(mActivity).getNextStartedActivity();
|
||||
assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
|
||||
.getBoolean(MainClear.ERASE_ESIMS_EXTRA, false)).isFalse();
|
||||
assertThat(intent.getStringExtra(ResetNetworkRequest.KEY_ESIM_PACKAGE))
|
||||
.isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -91,7 +93,7 @@ public class ResetNetworkTest {
|
||||
mResetNetwork.showFinalConfirmation();
|
||||
|
||||
Intent intent = shadowOf(mActivity).getNextStartedActivity();
|
||||
assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
|
||||
.getBoolean(MainClear.ERASE_ESIMS_EXTRA, false)).isFalse();
|
||||
assertThat(intent.getStringExtra(ResetNetworkRequest.KEY_ESIM_PACKAGE))
|
||||
.isNull();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user