Merge "[Settings] Code Refactor"
This commit is contained in:
@@ -24,8 +24,6 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.os.UserManager;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.provider.Settings.Global;
|
import android.provider.Settings.Global;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
@@ -46,12 +44,10 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
|
|
||||||
import com.android.settings.core.InstrumentedFragment;
|
import com.android.settings.core.InstrumentedFragment;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
import com.android.settings.network.ResetNetworkRestrictionViewBuilder;
|
||||||
import com.android.settings.network.SubscriptionUtil;
|
import com.android.settings.network.SubscriptionUtil;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
import com.android.settings.password.ConfirmLockPattern;
|
import com.android.settings.password.ConfirmLockPattern;
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
|
||||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -115,7 +111,7 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
// confirmation prompt; otherwise, go back to the initial state.
|
// confirmation prompt; otherwise, go back to the initial state.
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
showFinalConfirmation();
|
showFinalConfirmation();
|
||||||
} else {
|
} else if (mContentView != null) {
|
||||||
establishInitialState(getActiveSubscriptionInfoList());
|
establishInitialState(getActiveSubscriptionInfoList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -252,6 +248,10 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
|
if (mContentView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// update options if subcription has been changed
|
// update options if subcription has been changed
|
||||||
List<SubscriptionInfo> updatedSubscriptions = getActiveSubscriptionInfoList();
|
List<SubscriptionInfo> updatedSubscriptions = getActiveSubscriptionInfoList();
|
||||||
if ((mSubscriptions != null)
|
if ((mSubscriptions != null)
|
||||||
@@ -277,18 +277,10 @@ public class ResetNetwork extends InstrumentedFragment {
|
|||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
final UserManager um = UserManager.get(getActivity());
|
View view = (new ResetNetworkRestrictionViewBuilder(getActivity())).build();
|
||||||
final EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
if (view != null) {
|
||||||
getActivity(), UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
|
Log.w(TAG, "Access deny.");
|
||||||
if (!um.isAdminUser() || RestrictedLockUtilsInternal.hasBaseUserRestriction(getActivity(),
|
return view;
|
||||||
UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
|
|
||||||
return inflater.inflate(R.layout.network_reset_disallowed_screen, null);
|
|
||||||
} else if (admin != null) {
|
|
||||||
new ActionDisabledByAdminDialogHelper(getActivity())
|
|
||||||
.prepareDialogBuilder(UserManager.DISALLOW_NETWORK_RESET, admin)
|
|
||||||
.setOnDismissListener(__ -> getActivity().finish())
|
|
||||||
.show();
|
|
||||||
return new View(getContext());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mContentView = inflater.inflate(R.layout.reset_network, null);
|
mContentView = inflater.inflate(R.layout.reset_network, null);
|
||||||
|
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package com.android.settings;
|
package com.android.settings;
|
||||||
|
|
||||||
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
@@ -35,8 +33,6 @@ import android.os.AsyncTask;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.RecoverySystem;
|
import android.os.RecoverySystem;
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.os.UserManager;
|
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
@@ -52,9 +48,8 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
|
||||||
import com.android.settings.core.InstrumentedFragment;
|
import com.android.settings.core.InstrumentedFragment;
|
||||||
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
import com.android.settings.network.ResetNetworkRestrictionViewBuilder;
|
||||||
import com.android.settings.network.apn.ApnSettings;
|
import com.android.settings.network.apn.ApnSettings;
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Confirm and execute a reset of the network settings to a clean "just out of the box"
|
* Confirm and execute a reset of the network settings to a clean "just out of the box"
|
||||||
@@ -262,17 +257,10 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
|||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
final EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
View view = (new ResetNetworkRestrictionViewBuilder(mActivity)).build();
|
||||||
mActivity, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
|
if (view != null) {
|
||||||
if (RestrictedLockUtilsInternal.hasBaseUserRestriction(mActivity,
|
Log.w(TAG, "Access deny.");
|
||||||
UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
|
return view;
|
||||||
return inflater.inflate(R.layout.network_reset_disallowed_screen, null);
|
|
||||||
} else if (admin != null) {
|
|
||||||
new ActionDisabledByAdminDialogHelper(mActivity)
|
|
||||||
.prepareDialogBuilder(UserManager.DISALLOW_NETWORK_RESET, admin)
|
|
||||||
.setOnDismissListener(__ -> mActivity.finish())
|
|
||||||
.show();
|
|
||||||
return new View(mActivity);
|
|
||||||
}
|
}
|
||||||
mContentView = inflater.inflate(R.layout.reset_network_confirm, null);
|
mContentView = inflater.inflate(R.layout.reset_network_confirm, null);
|
||||||
establishFinalConfirmationState();
|
establishFinalConfirmationState();
|
||||||
|
@@ -0,0 +1,118 @@
|
|||||||
|
/*
|
||||||
|
* 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.network;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
import android.os.UserManager;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewStub;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
|
||||||
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A builder for creating restriction View when constructing UI for resetting network
|
||||||
|
* configuration.
|
||||||
|
*/
|
||||||
|
public class ResetNetworkRestrictionViewBuilder extends NetworkResetRestrictionChecker {
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
static final String mRestriction = UserManager.DISALLOW_NETWORK_RESET;
|
||||||
|
|
||||||
|
protected Activity mActivity;
|
||||||
|
protected LayoutInflater mInflater;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor of builder.
|
||||||
|
*
|
||||||
|
* @param activity Activity to present restriction View.
|
||||||
|
*/
|
||||||
|
public ResetNetworkRestrictionViewBuilder(Activity activity) {
|
||||||
|
super(activity);
|
||||||
|
mActivity = activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Option for configuring LayoutInflater.
|
||||||
|
*
|
||||||
|
* @param inflater LayoutInflater
|
||||||
|
* @return this builder
|
||||||
|
*/
|
||||||
|
public ResetNetworkRestrictionViewBuilder setLayoutInflater(LayoutInflater inflater) {
|
||||||
|
mInflater = inflater;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to provide a View if access to reset network is not allowed.
|
||||||
|
* @return a View which presenting information of restrictions.
|
||||||
|
* {@code null} when no restriction on accessing.
|
||||||
|
*/
|
||||||
|
public View build() {
|
||||||
|
if (hasUserRestriction()) {
|
||||||
|
return operationNotAllow();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not allow when this option is restricted.
|
||||||
|
EnforcedAdmin admin = getEnforceAdminByRestriction();
|
||||||
|
if (admin == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
createRestrictDialogBuilder(admin)
|
||||||
|
.setOnDismissListener(dialogInterface -> mActivity.finish())
|
||||||
|
.show();
|
||||||
|
return createEmptyView();
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected LayoutInflater getLayoutInflater() {
|
||||||
|
if (mInflater != null) {
|
||||||
|
return mInflater;
|
||||||
|
}
|
||||||
|
return mActivity.getLayoutInflater();
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected View operationNotAllow() {
|
||||||
|
return getLayoutInflater().inflate(R.layout.network_reset_disallowed_screen, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected EnforcedAdmin getEnforceAdminByRestriction() {
|
||||||
|
return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
||||||
|
mActivity, mRestriction, UserHandle.myUserId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected AlertDialog.Builder createRestrictDialogBuilder(EnforcedAdmin admin) {
|
||||||
|
return (new ActionDisabledByAdminDialogHelper(mActivity))
|
||||||
|
.prepareDialogBuilder(mRestriction, admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected View createEmptyView() {
|
||||||
|
return new ViewStub(mActivity);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,110 @@
|
|||||||
|
/*
|
||||||
|
* 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.network;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.any;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.UserManager;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class ResetNetworkRestrictionViewBuilderTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Activity mActivity;
|
||||||
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
|
@Mock
|
||||||
|
private View mView;
|
||||||
|
@Mock
|
||||||
|
private AlertDialog.Builder mAlertDialogBuilder;
|
||||||
|
|
||||||
|
private ResetNetworkRestrictionViewBuilder mBuilder;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
|
doReturn(mUserManager).when(mActivity).getSystemService(Context.USER_SERVICE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void build_getNull_whenNoRestriction() {
|
||||||
|
mBuilder = new ResetNetworkRestrictionViewBuilder(mActivity) {
|
||||||
|
@Override
|
||||||
|
protected boolean hasUserRestriction() { return false; }
|
||||||
|
@Override
|
||||||
|
protected EnforcedAdmin getEnforceAdminByRestriction() { return null; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assertThat(mBuilder.build()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void build_getView_whenUserRestriction() {
|
||||||
|
mBuilder = new ResetNetworkRestrictionViewBuilder(mActivity) {
|
||||||
|
@Override
|
||||||
|
protected boolean hasUserRestriction() { return true; }
|
||||||
|
@Override
|
||||||
|
protected View operationNotAllow() { return mView; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assertThat(mBuilder.build()).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void build_getView_whenEnforceAdminRestriction() {
|
||||||
|
doReturn(mAlertDialogBuilder).when(mAlertDialogBuilder).setOnDismissListener(any());
|
||||||
|
|
||||||
|
String restriction = ResetNetworkRestrictionViewBuilder.mRestriction;
|
||||||
|
EnforcedAdmin admin = RestrictedLockUtils.EnforcedAdmin
|
||||||
|
.createDefaultEnforcedAdminWithRestriction(restriction);
|
||||||
|
|
||||||
|
mBuilder = new ResetNetworkRestrictionViewBuilder(mActivity) {
|
||||||
|
@Override
|
||||||
|
protected boolean hasUserRestriction() { return false; }
|
||||||
|
@Override
|
||||||
|
protected EnforcedAdmin getEnforceAdminByRestriction() { return admin; }
|
||||||
|
@Override
|
||||||
|
protected AlertDialog.Builder createRestrictDialogBuilder(EnforcedAdmin admin) {
|
||||||
|
return mAlertDialogBuilder;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected View createEmptyView() { return mView; }
|
||||||
|
};
|
||||||
|
|
||||||
|
assertThat(mBuilder.build()).isNotNull();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user