Merge "Restrict DataUsageList for guest user" into tm-qpr-dev am: 5bde972e4e
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22323478 Change-Id: I6fcc26d5db647b9c36b743592a8b58dda52b1847 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -37,6 +37,7 @@ import android.os.UserManager;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
|
import android.util.EventLog;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -131,8 +132,14 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
final Activity activity = getActivity();
|
if (isGuestUser(getContext())) {
|
||||||
|
Log.e(TAG, "This setting isn't available for guest user");
|
||||||
|
EventLog.writeEvent(0x534e4554, "262741858", -1 /* UID */, "Guest user");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Activity activity = getActivity();
|
||||||
if (!isBandwidthControlEnabled()) {
|
if (!isBandwidthControlEnabled()) {
|
||||||
Log.w(TAG, "No bandwidth control; leaving");
|
Log.w(TAG, "No bandwidth control; leaving");
|
||||||
activity.finish();
|
activity.finish();
|
||||||
@@ -234,9 +241,10 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
mUidDetailProvider.clearCache();
|
if (mUidDetailProvider != null) {
|
||||||
mUidDetailProvider = null;
|
mUidDetailProvider.clearCache();
|
||||||
|
mUidDetailProvider = null;
|
||||||
|
}
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -614,4 +622,11 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private static boolean isGuestUser(Context context) {
|
||||||
|
if (context == null) return false;
|
||||||
|
final UserManager userManager = context.getSystemService(UserManager.class);
|
||||||
|
if (userManager == null) return false;
|
||||||
|
return userManager.isGuestUser();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
|
|||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -31,6 +32,7 @@ import android.content.Intent;
|
|||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -60,6 +62,9 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.Robolectric;
|
import org.robolectric.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.android.controller.ActivityController;
|
import org.robolectric.android.controller.ActivityController;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.annotation.Implementation;
|
||||||
|
import org.robolectric.annotation.Implements;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -74,6 +79,8 @@ public class DataUsageListTest {
|
|||||||
private TemplatePreference.NetworkServices mNetworkServices;
|
private TemplatePreference.NetworkServices mNetworkServices;
|
||||||
@Mock
|
@Mock
|
||||||
private LoaderManager mLoaderManager;
|
private LoaderManager mLoaderManager;
|
||||||
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
|
|
||||||
private Activity mActivity;
|
private Activity mActivity;
|
||||||
private DataUsageList mDataUsageList;
|
private DataUsageList mDataUsageList;
|
||||||
@@ -90,6 +97,8 @@ public class DataUsageListTest {
|
|||||||
mDataUsageList.mDataStateListener = mMobileDataEnabledListener;
|
mDataUsageList.mDataStateListener = mMobileDataEnabledListener;
|
||||||
|
|
||||||
doReturn(mActivity).when(mDataUsageList).getContext();
|
doReturn(mActivity).when(mDataUsageList).getContext();
|
||||||
|
doReturn(mUserManager).when(mActivity).getSystemService(UserManager.class);
|
||||||
|
doReturn(false).when(mUserManager).isGuestUser();
|
||||||
ReflectionHelpers.setField(mDataUsageList, "mDataStateListener",
|
ReflectionHelpers.setField(mDataUsageList, "mDataStateListener",
|
||||||
mMobileDataEnabledListener);
|
mMobileDataEnabledListener);
|
||||||
ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices);
|
ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices);
|
||||||
@@ -97,6 +106,27 @@ public class DataUsageListTest {
|
|||||||
mDataUsageList.mLoadingViewController = mock(LoadingViewController.class);
|
mDataUsageList.mLoadingViewController = mock(LoadingViewController.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(shadows = ShadowDataUsageBaseFragment.class)
|
||||||
|
public void onCreate_isNotGuestUser_shouldNotFinish() {
|
||||||
|
doReturn(false).when(mUserManager).isGuestUser();
|
||||||
|
doNothing().when(mDataUsageList).processArgument();
|
||||||
|
|
||||||
|
mDataUsageList.onCreate(null);
|
||||||
|
|
||||||
|
verify(mDataUsageList, never()).finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(shadows = ShadowDataUsageBaseFragment.class)
|
||||||
|
public void onCreate_isGuestUser_shouldFinish() {
|
||||||
|
doReturn(true).when(mUserManager).isGuestUser();
|
||||||
|
|
||||||
|
mDataUsageList.onCreate(null);
|
||||||
|
|
||||||
|
verify(mDataUsageList).finish();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void resume_shouldListenDataStateChange() {
|
public void resume_shouldListenDataStateChange() {
|
||||||
ReflectionHelpers.setField(
|
ReflectionHelpers.setField(
|
||||||
@@ -241,4 +271,17 @@ public class DataUsageListTest {
|
|||||||
final Spinner spinner = header.findViewById(R.id.filter_spinner);
|
final Spinner spinner = header.findViewById(R.id.filter_spinner);
|
||||||
return spinner;
|
return spinner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Implements(DataUsageBaseFragment.class)
|
||||||
|
public static class ShadowDataUsageBaseFragment {
|
||||||
|
@Implementation
|
||||||
|
public void onCreate(Bundle icicle) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
protected boolean isBandwidthControlEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user