Snap for 7537202 from 3e5b063766 to sc-v2-release
Change-Id: Id8e569fff5c422ab4638e6a8b5633e7c98668e3f
This commit is contained in:
@@ -20,30 +20,4 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:entries="@xml/items_multiple_carrier"
|
||||
android:icon="@drawable/ic_network_signal_blue">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SudContentFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/subtitle_bottom_padding">
|
||||
<TextView
|
||||
android:id="@+id/subtitle"
|
||||
style="@style/SudDescription.Glif"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.setupdesign.GlifRecyclerLayout
|
||||
android:id="@+id/recycler_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:entries="@xml/items_multiple_carrier" />
|
||||
|
||||
</LinearLayout>
|
||||
</com.google.android.setupdesign.GlifRecyclerLayout>
|
||||
android:icon="@drawable/ic_network_signal_blue" />
|
||||
|
||||
@@ -1529,8 +1529,6 @@
|
||||
<!-- An allowlist which packages won't show summary in battery usage screen.
|
||||
[CHAR LIMIT=NONE] -->
|
||||
<string-array name="allowlist_hide_summary_in_battery_usage" translatable="false">
|
||||
<!-- Google -->
|
||||
<item>"com.google.android.googlequicksearchbox"</item>
|
||||
</string-array>
|
||||
|
||||
<!-- An allowlist which packages won't show entry in battery usage screen.
|
||||
|
||||
@@ -101,10 +101,7 @@
|
||||
<string name="auto_rotate_settings_primary_switch_title">Use Auto-rotate</string>
|
||||
|
||||
<!-- Disclaimer for camera based rotate [CHAR_LIMIT=NONE] -->
|
||||
<string name="smart_rotate_text_headline">
|
||||
Face Detection uses the front-facing camera to improve Auto-rotate accuracy. Images are never stored or sent to Google.<br><br>
|
||||
<a href="<xliff:g example="http://www.google.com" id="url">http://support.google.com/mobile?p=telephony_rtt</xliff:g>">Learn more about Auto-rotate screen</a>
|
||||
</string>
|
||||
<string name="smart_rotate_text_headline">Face Detection uses the front-facing camera to improve Auto-rotate accuracy. Images are never stored or sent to Google.</string>
|
||||
<string name="font_size_preview_text_headline">Sample text</string>
|
||||
<string name="font_size_preview_text_title"
|
||||
translation_description="Title text in sample text used to illustrate how the currently selected font size will appear to the user. NOTE: Translate manually. No not adopt any copyrighted material for translation.">
|
||||
@@ -13099,8 +13096,8 @@
|
||||
<!-- Label for the title on wfc disclaimer location. [CHAR LIMIT=30] -->
|
||||
<string name="wfc_disclaimer_location_title_text">Location</string>
|
||||
|
||||
<!-- Warn the user that the phone may share its location with the service provider. [CHAR LIMIT=NONE] -->
|
||||
<string name="wfc_disclaimer_location_desc_text">Your service provider may collect your location in order to provide this service.\n\nPlease review your service provider\u2019s privacy policy.</string>
|
||||
<!-- Warn the user that the phone may share its location with the carrier. [CHAR LIMIT=NONE] -->
|
||||
<string name="wfc_disclaimer_location_desc_text">Your carrier may collect your location when you use this service for emergency calls.\n\nVisit your carrier\u2019s privacy policy for details.</string>
|
||||
|
||||
<!-- Message for forget passpoint dialog [CHAR LIMIT=none] -->
|
||||
<string name="forget_passpoint_dialog_message">You may lose access to any remaining time or data. Check with your provider before removing.</string>
|
||||
|
||||
@@ -75,6 +75,9 @@ public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements
|
||||
if (intent.getExtras().getBoolean(UsbManager.USB_FUNCTION_ACCESSORY)) {
|
||||
functions |= UsbManager.FUNCTION_ACCESSORY;
|
||||
}
|
||||
if (intent.getExtras().getBoolean(UsbManager.USB_FUNCTION_NCM)) {
|
||||
functions |= UsbManager.FUNCTION_NCM;
|
||||
}
|
||||
mFunctions = functions;
|
||||
mDataRole = mUsbBackend.getDataRole();
|
||||
mPowerRole = mUsbBackend.getPowerRole();
|
||||
|
||||
@@ -74,8 +74,10 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment {
|
||||
Log.d(TAG, "UsbConnectionListener() connected : " + connected + ", functions : "
|
||||
+ functions + ", defaultFunctions : " + defaultFunctions
|
||||
+ ", mIsStartTethering : " + mIsStartTethering);
|
||||
if (connected && !mIsConnected && defaultFunctions == UsbManager.FUNCTION_RNDIS
|
||||
if (connected && !mIsConnected && (defaultFunctions == UsbManager.FUNCTION_RNDIS
|
||||
|| defaultFunctions == UsbManager.FUNCTION_NCM)
|
||||
&& !mIsStartTethering) {
|
||||
mCurrentFunctions = defaultFunctions;
|
||||
startTethering();
|
||||
}
|
||||
|
||||
@@ -150,7 +152,11 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment {
|
||||
|
||||
@Override
|
||||
protected String getDefaultKey() {
|
||||
return UsbBackend.usbFunctionsToString(mUsbBackend.getDefaultUsbFunctions());
|
||||
long defaultUsbFunctions = mUsbBackend.getDefaultUsbFunctions();
|
||||
// Because we didn't have an option for NCM, so make FUNCTION_NCM corresponding to
|
||||
// FUNCTION_RNDIS for initializing the UI.
|
||||
return UsbBackend.usbFunctionsToString(defaultUsbFunctions == UsbManager.FUNCTION_NCM
|
||||
? UsbManager.FUNCTION_RNDIS : defaultUsbFunctions);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -158,9 +164,10 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment {
|
||||
long functions = UsbBackend.usbFunctionsFromString(key);
|
||||
mPreviousFunctions = mUsbBackend.getCurrentFunctions();
|
||||
if (!Utils.isMonkeyRunning()) {
|
||||
if (functions == UsbManager.FUNCTION_RNDIS) {
|
||||
if (functions == UsbManager.FUNCTION_RNDIS || functions == UsbManager.FUNCTION_NCM) {
|
||||
// We need to have entitlement check for usb tethering, so use API in
|
||||
// TetheringManager.
|
||||
mCurrentFunctions = functions;
|
||||
startTethering();
|
||||
} else {
|
||||
mIsStartTethering = false;
|
||||
@@ -193,8 +200,7 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment {
|
||||
public void onTetheringStarted() {
|
||||
Log.d(TAG, "onTetheringStarted()");
|
||||
// Set default usb functions again to make internal data persistent
|
||||
mCurrentFunctions = UsbManager.FUNCTION_RNDIS;
|
||||
mUsbBackend.setDefaultUsbFunctions(UsbManager.FUNCTION_RNDIS);
|
||||
mUsbBackend.setDefaultUsbFunctions(mCurrentFunctions);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -214,7 +220,11 @@ public class UsbDefaultFragment extends RadioButtonPickerFragment {
|
||||
final boolean isSupported = mUsbBackend.areFunctionsSupported(option);
|
||||
pref.setEnabled(isSupported);
|
||||
if (isSupported) {
|
||||
pref.setChecked(functions == option);
|
||||
if (functions == UsbManager.FUNCTION_NCM) {
|
||||
pref.setChecked(UsbManager.FUNCTION_RNDIS == option);
|
||||
} else {
|
||||
pref.setChecked(functions == option);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,6 +116,8 @@ public class UsbDetailsFunctionsController extends UsbDetailsController
|
||||
if (mUsbBackend.areFunctionsSupported(option)) {
|
||||
if (isAccessoryMode(functions)) {
|
||||
pref.setChecked(UsbManager.FUNCTION_MTP == option);
|
||||
} else if (functions == UsbManager.FUNCTION_NCM) {
|
||||
pref.setChecked(UsbManager.FUNCTION_RNDIS == option);
|
||||
} else {
|
||||
pref.setChecked(functions == option);
|
||||
}
|
||||
@@ -148,7 +150,7 @@ public class UsbDetailsFunctionsController extends UsbDetailsController
|
||||
preference.setChecked(true);
|
||||
}
|
||||
|
||||
if (function == UsbManager.FUNCTION_RNDIS) {
|
||||
if (function == UsbManager.FUNCTION_RNDIS || function == UsbManager.FUNCTION_NCM) {
|
||||
// We need to have entitlement check for usb tethering, so use API in
|
||||
// TetheringManager.
|
||||
mTetheringManager.startTethering(
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.display;
|
||||
|
||||
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
|
||||
import static android.hardware.SensorPrivacyManager.Sources.DIALOG;
|
||||
|
||||
import android.content.Context;
|
||||
import android.hardware.SensorPrivacyManager;
|
||||
@@ -77,7 +78,7 @@ public class AdaptiveSleepCameraStatePreferenceController {
|
||||
mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary);
|
||||
mPreference.setPositiveButtonText(R.string.allow);
|
||||
mPreference.setPositiveButtonOnClickListener(
|
||||
p -> mPrivacyManager.setSensorPrivacy(CAMERA, false));
|
||||
p -> mPrivacyManager.setSensorPrivacy(DIALOG, CAMERA, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ package com.android.settings.display;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.view.Choreographer;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -58,14 +60,35 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
|
||||
private View mLarger;
|
||||
private View mSmaller;
|
||||
|
||||
private static final long MIN_COMMIT_INTERVAL_MS = 800;
|
||||
private long mLastCommitTime;
|
||||
|
||||
private class onPreviewSeekBarChangeListener implements OnSeekBarChangeListener {
|
||||
private static final long CHANGE_BY_SEEKBAR_DELAY_MS = 100;
|
||||
private static final long CHANGE_BY_BUTTON_DELAY_MS = 300;
|
||||
|
||||
private boolean mSeekByTouch;
|
||||
private boolean mIsChanged;
|
||||
private long mCommitDelayMs;
|
||||
|
||||
private final Choreographer.FrameCallback mCommit = f -> {
|
||||
commit();
|
||||
mLastCommitTime = SystemClock.elapsedRealtime();
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
if (mCurrentIndex == progress) {
|
||||
mIsChanged = false;
|
||||
return;
|
||||
}
|
||||
mIsChanged = true;
|
||||
setPreviewLayer(progress, false);
|
||||
if (!mSeekByTouch) {
|
||||
commit();
|
||||
if (mSeekByTouch) {
|
||||
mCommitDelayMs = CHANGE_BY_SEEKBAR_DELAY_MS;
|
||||
} else {
|
||||
mCommitDelayMs = CHANGE_BY_BUTTON_DELAY_MS;
|
||||
commitOnNextFrame();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,18 +99,39 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
|
||||
|
||||
@Override
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
if (mPreviewPagerAdapter.isAnimating()) {
|
||||
mPreviewPagerAdapter.setAnimationEndAction(() -> commit());
|
||||
} else {
|
||||
commit();
|
||||
}
|
||||
mSeekByTouch = false;
|
||||
if (!mIsChanged) {
|
||||
return;
|
||||
}
|
||||
if (mPreviewPagerAdapter.isAnimating()) {
|
||||
mPreviewPagerAdapter.setAnimationEndAction(this::commitOnNextFrame);
|
||||
} else {
|
||||
commitOnNextFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void commitOnNextFrame() {
|
||||
if (SystemClock.elapsedRealtime() - mLastCommitTime < MIN_COMMIT_INTERVAL_MS) {
|
||||
mCommitDelayMs += MIN_COMMIT_INTERVAL_MS;
|
||||
}
|
||||
final Choreographer choreographer = Choreographer.getInstance();
|
||||
choreographer.removeFrameCallback(mCommit);
|
||||
choreographer.postFrameCallbackDelayed(mCommit, mCommitDelayMs);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putLong("mLastCommitTime", mLastCommitTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
if (savedInstanceState != null) {
|
||||
mLastCommitTime = savedInstanceState.getLong("mLastCommitTime");
|
||||
}
|
||||
final View root = super.onCreateView(inflater, container, savedInstanceState);
|
||||
final ViewGroup listContainer = root.findViewById(android.R.id.list_container);
|
||||
listContainer.removeAllViews();
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.display;
|
||||
|
||||
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
|
||||
import static android.hardware.SensorPrivacyManager.Sources.DIALOG;
|
||||
|
||||
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;
|
||||
|
||||
@@ -63,7 +64,7 @@ public class SmartAutoRotateCameraStateController extends BasePreferenceControll
|
||||
((BannerMessagePreference) mPreference)
|
||||
.setPositiveButtonText(R.string.allow)
|
||||
.setPositiveButtonOnClickListener(v -> {
|
||||
mPrivacyManager.setSensorPrivacy(CAMERA, false);
|
||||
mPrivacyManager.setSensorPrivacy(DIALOG, CAMERA, false);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -572,7 +572,8 @@ public class BatteryEntry {
|
||||
name = context.getResources().getString(R.string.process_kernel_label);
|
||||
} else if ("mediaserver".equals(name)) {
|
||||
name = context.getResources().getString(R.string.process_mediaserver_label);
|
||||
} else if ("dex2oat".equals(name)) {
|
||||
} else if ("dex2oat".equals(name) || "dex2oat32".equals(name) ||
|
||||
"dex2oat64".equals(name)) {
|
||||
name = context.getResources().getString(R.string.process_dex2oat_label);
|
||||
}
|
||||
return new NameAndIcon(name, icon, 0 /* iconId */);
|
||||
|
||||
@@ -20,7 +20,10 @@ import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET;
|
||||
import static com.android.settingslib.mobile.MobileMappings.getIconKey;
|
||||
import static com.android.settingslib.mobile.MobileMappings.mapIconSets;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.database.ContentObserver;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
@@ -60,11 +63,22 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
private SubscriptionsChangeListener mSubscriptionsListener;
|
||||
private MobileDataEnabledListener mDataEnabledListener;
|
||||
private DataConnectivityListener mConnectivityListener;
|
||||
private int mDefaultDataSubid = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
private final Context mContext;
|
||||
final Handler mHandler;
|
||||
@VisibleForTesting
|
||||
final NetworkProviderTelephonyCallback mTelephonyCallback;
|
||||
private final BroadcastReceiver mConnectionChangeReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
final String action = intent.getAction();
|
||||
if (action.equals(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
|
||||
Log.d(TAG, "ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED");
|
||||
updateListener();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private TelephonyManager mTelephonyManager;
|
||||
private Config mConfig = null;
|
||||
private TelephonyDisplayInfo mTelephonyDisplayInfo =
|
||||
@@ -80,10 +94,10 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
mMobileDataObserver = new DataContentObserver(mHandler, this);
|
||||
|
||||
mContext = context;
|
||||
mDefaultDataSubid = getDefaultDataSubscriptionId();
|
||||
|
||||
mDefaultDataSubId = getDefaultDataSubscriptionId();
|
||||
Log.d(TAG, "Init, SubId: " + mDefaultDataSubId);
|
||||
mTelephonyManager = mContext.getSystemService(
|
||||
TelephonyManager.class).createForSubscriptionId(mDefaultDataSubid);
|
||||
TelephonyManager.class).createForSubscriptionId(mDefaultDataSubId);
|
||||
mTelephonyCallback = new NetworkProviderTelephonyCallback();
|
||||
mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
|
||||
mDataEnabledListener = new MobileDataEnabledListener(context, this);
|
||||
@@ -98,12 +112,15 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
@Override
|
||||
protected void onSlicePinned() {
|
||||
Log.d(TAG, "onSlicePinned");
|
||||
mMobileDataObserver.register(mContext, mDefaultDataSubid);
|
||||
mMobileDataObserver.register(mContext, mDefaultDataSubId);
|
||||
mSubscriptionsListener.start();
|
||||
mDataEnabledListener.start(mDefaultDataSubid);
|
||||
mDataEnabledListener.start(mDefaultDataSubId);
|
||||
mConnectivityListener.start();
|
||||
mSignalStrengthListener.resume();
|
||||
mTelephonyManager.registerTelephonyCallback(mHandler::post, mTelephonyCallback);
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
|
||||
mContext.registerReceiver(mConnectionChangeReceiver, filter);
|
||||
super.onSlicePinned();
|
||||
}
|
||||
|
||||
@@ -116,6 +133,9 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
mConnectivityListener.stop();
|
||||
mSignalStrengthListener.pause();
|
||||
mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
|
||||
if (mConnectionChangeReceiver != null) {
|
||||
mContext.unregisterReceiver(mConnectionChangeReceiver);
|
||||
}
|
||||
super.onSliceUnpinned();
|
||||
}
|
||||
|
||||
@@ -137,14 +157,14 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
notifySliceChange();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
private void updateListener() {
|
||||
int defaultDataSubId = getDefaultDataSubscriptionId();
|
||||
if (mDefaultDataSubid == defaultDataSubId) {
|
||||
Log.d(TAG, "onSubscriptionsChanged: no change");
|
||||
if (mDefaultDataSubId == defaultDataSubId) {
|
||||
Log.d(TAG, "DDS: no change");
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, "onSubscriptionsChanged: defaultDataSubId:" + defaultDataSubId);
|
||||
mDefaultDataSubId = defaultDataSubId;
|
||||
Log.d(TAG, "DDS: defaultDataSubId:" + mDefaultDataSubId);
|
||||
if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) {
|
||||
mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
|
||||
mMobileDataObserver.unregister(mContext);
|
||||
@@ -160,6 +180,12 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
updateSlice();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
Log.d(TAG, "onSubscriptionsChanged");
|
||||
updateListener();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSignalStrengthChanged() {
|
||||
Log.d(TAG, "onSignalStrengthChanged");
|
||||
@@ -283,7 +309,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
||||
*/
|
||||
public String getNetworkTypeDescription() {
|
||||
return updateNetworkTypeName(mContext, mConfig, mTelephonyDisplayInfo,
|
||||
mDefaultDataSubid);
|
||||
mDefaultDataSubId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.settings.privacy;
|
||||
|
||||
import static android.hardware.SensorPrivacyManager.Sources.SETTINGS;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
@@ -51,7 +53,7 @@ public abstract class SensorToggleController extends TogglePreferenceController
|
||||
|
||||
@Override
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
mSensorPrivacyManagerHelper.setSensorBlocked(getSensor(), !isChecked);
|
||||
mSensorPrivacyManagerHelper.setSensorBlocked(SETTINGS, getSensor(), !isChecked);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -153,21 +153,23 @@ public class SensorPrivacyManagerHelper {
|
||||
|
||||
/**
|
||||
* Sets the sensor privacy for the current user.
|
||||
* @param source The source with which sensor privacy is toggled.
|
||||
* @param sensor The sensor to set for
|
||||
* @param blocked The state to set to
|
||||
*/
|
||||
public void setSensorBlocked(int sensor, boolean blocked) {
|
||||
mSensorPrivacyManager.setSensorPrivacy(sensor, blocked);
|
||||
public void setSensorBlocked(int source, int sensor, boolean blocked) {
|
||||
mSensorPrivacyManager.setSensorPrivacy(source, sensor, blocked);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the sensor privacy for the given user.
|
||||
* @param source The source with which sensor privacy is toggled.
|
||||
* @param sensor The sensor to set for
|
||||
* @param blocked The state to set to
|
||||
* @param userId The user to set for
|
||||
*/
|
||||
public void setSensorBlocked(int sensor, boolean blocked, int userId) {
|
||||
mSensorPrivacyManager.setSensorPrivacy(sensor, blocked, userId);
|
||||
public void setSensorBlocked(int source, int sensor, boolean blocked, int userId) {
|
||||
mSensorPrivacyManager.setSensorPrivacy(source, sensor, blocked, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -98,6 +98,20 @@ public class UsbConnectionBroadcastReceiverTest {
|
||||
POWER_ROLE_NONE, DATA_ROLE_NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onReceive_usbConnectedNcmEnabled_invokesCallback() {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(UsbManager.ACTION_USB_STATE);
|
||||
intent.putExtra(UsbManager.USB_CONNECTED, true);
|
||||
intent.putExtra(UsbManager.USB_FUNCTION_NCM, true);
|
||||
intent.putExtra(UsbManager.USB_DATA_UNLOCKED, true);
|
||||
|
||||
mReceiver.onReceive(mContext, intent);
|
||||
|
||||
verify(mListener).onUsbConnectionChanged(/* connected */ true, UsbManager.FUNCTION_NCM,
|
||||
POWER_ROLE_NONE, DATA_ROLE_NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onReceive_usbPortStatus_invokeCallback() {
|
||||
final Intent intent = new Intent();
|
||||
|
||||
@@ -103,6 +103,14 @@ public class UsbDefaultFragmentTest {
|
||||
.isEqualTo(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_MIDI));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDefaultKey_isNcm_returnsRndis() {
|
||||
when(mUsbBackend.getDefaultUsbFunctions()).thenReturn(UsbManager.FUNCTION_NCM);
|
||||
|
||||
assertThat(mFragment.getDefaultKey())
|
||||
.isEqualTo(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_RNDIS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setDefaultKey_isNone_shouldSetNone() {
|
||||
mFragment.setDefaultKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_NONE));
|
||||
@@ -149,6 +157,19 @@ public class UsbDefaultFragmentTest {
|
||||
UsbManager.FUNCTION_MTP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setDefaultKey_functionNcm_invokesStartTethering() {
|
||||
doReturn(UsbManager.FUNCTION_MTP).when(mUsbBackend).getCurrentFunctions();
|
||||
|
||||
mFragment.setDefaultKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_NCM));
|
||||
|
||||
verify(mTetheringManager).startTethering(eq(TetheringManager.TETHERING_USB),
|
||||
any(),
|
||||
eq(mFragment.mOnStartTetheringCallback));
|
||||
assertThat(mFragment.mPreviousFunctions).isEqualTo(
|
||||
UsbManager.FUNCTION_MTP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setDefaultKey_functionOther_setCurrentFunctionInvoked() {
|
||||
doReturn(UsbManager.FUNCTION_MTP).when(mUsbBackend).getCurrentFunctions();
|
||||
@@ -161,14 +182,24 @@ public class UsbDefaultFragmentTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onTetheringStarted_setDefaultUsbFunctions() {
|
||||
mFragment.mPreviousFunctions = UsbManager.FUNCTION_PTP;
|
||||
public void onTetheringStarted_currentFunctionsIsRndis_setsRndisAsDefaultUsbFunctions() {
|
||||
mFragment.mCurrentFunctions = UsbManager.FUNCTION_RNDIS;
|
||||
|
||||
mFragment.mOnStartTetheringCallback.onTetheringStarted();
|
||||
|
||||
verify(mUsbBackend).setDefaultUsbFunctions(UsbManager.FUNCTION_RNDIS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onTetheringStarted_currentFunctionsIsNcm_setsNcmAsDefaultUsbFunctions() {
|
||||
mFragment.mCurrentFunctions = UsbManager.FUNCTION_NCM;
|
||||
|
||||
mFragment.mOnStartTetheringCallback.onTetheringStarted();
|
||||
|
||||
verify(mUsbBackend).setDefaultUsbFunctions(UsbManager.FUNCTION_NCM);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void onPause_receivedRndis_shouldSetRndis() {
|
||||
mFragment.mIsStartTethering = true;
|
||||
@@ -229,6 +260,18 @@ public class UsbDefaultFragmentTest {
|
||||
assertThat(mFragment.mCurrentFunctions).isEqualTo(UsbManager.FUNCTION_MIDI);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPause_receivedNcm_setsNcm() {
|
||||
mFragment.mIsStartTethering = true;
|
||||
mFragment.mUsbConnectionListener.onUsbConnectionChanged(/* connected */ true,
|
||||
UsbManager.FUNCTION_NCM, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
|
||||
|
||||
mFragment.onPause();
|
||||
|
||||
verify(mUsbBackend, times(2)).setDefaultUsbFunctions(UsbManager.FUNCTION_NCM);
|
||||
assertThat(mFragment.mCurrentFunctions).isEqualTo(UsbManager.FUNCTION_NCM);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usbIsPluginAndUsbTetheringIsOn_startTetheringIsInvoked() {
|
||||
when(mUsbBackend.getDefaultUsbFunctions()).thenReturn(UsbManager.FUNCTION_RNDIS);
|
||||
@@ -243,6 +286,20 @@ public class UsbDefaultFragmentTest {
|
||||
eq(mFragment.mOnStartTetheringCallback));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usbIsPluginAndUsbTetheringIsOn_receivedNcm_startsTethering() {
|
||||
when(mUsbBackend.getDefaultUsbFunctions()).thenReturn(UsbManager.FUNCTION_NCM);
|
||||
|
||||
mFragment.mUsbConnectionListener.onUsbConnectionChanged(/* connected */ false,
|
||||
UsbManager.FUNCTION_NCM, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
|
||||
mFragment.mUsbConnectionListener.onUsbConnectionChanged(/* connected */ true,
|
||||
UsbManager.FUNCTION_NCM, POWER_ROLE_SINK, DATA_ROLE_DEVICE);
|
||||
|
||||
verify(mTetheringManager).startTethering(eq(TetheringManager.TETHERING_USB),
|
||||
any(),
|
||||
eq(mFragment.mOnStartTetheringCallback));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usbIsNotPluginAndUsbTetheringIsOn_startTetheringIsNotInvoked() {
|
||||
when(mUsbBackend.getDefaultUsbFunctions()).thenReturn(UsbManager.FUNCTION_RNDIS);
|
||||
|
||||
@@ -167,6 +167,19 @@ public class UsbDetailsFunctionsControllerTest {
|
||||
assertThat(prefs.get(0).isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayRefresh_ncmEnabled_checksSwitches() {
|
||||
when(mUsbBackend.areFunctionsSupported(anyLong())).thenReturn(true);
|
||||
|
||||
mDetailsFunctionsController.refresh(true, UsbManager.FUNCTION_NCM, POWER_ROLE_SINK,
|
||||
DATA_ROLE_DEVICE);
|
||||
List<RadioButtonPreference> prefs = getRadioPreferences();
|
||||
|
||||
assertThat(prefs.get(1).getKey())
|
||||
.isEqualTo(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_RNDIS));
|
||||
assertThat(prefs.get(1).isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onClickMtp_noneEnabled_shouldEnableMtp() {
|
||||
when(mUsbBackend.areFunctionsSupported(anyLong())).thenReturn(true);
|
||||
@@ -253,6 +266,20 @@ public class UsbDetailsFunctionsControllerTest {
|
||||
UsbManager.FUNCTION_MTP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRadioButtonClicked_functionNcm_startsTethering() {
|
||||
mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_NCM));
|
||||
doReturn(UsbManager.FUNCTION_MTP).when(mUsbBackend).getCurrentFunctions();
|
||||
|
||||
mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference);
|
||||
|
||||
verify(mTetheringManager).startTethering(eq(TetheringManager.TETHERING_USB),
|
||||
any(),
|
||||
eq(mDetailsFunctionsController.mOnStartTetheringCallback));
|
||||
assertThat(mDetailsFunctionsController.mPreviousFunction).isEqualTo(
|
||||
UsbManager.FUNCTION_MTP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRadioButtonClicked_functionOther_setCurrentFunctionInvoked() {
|
||||
mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_PTP));
|
||||
|
||||
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.os.UserManager;
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
@@ -72,11 +73,14 @@ public class BatteryAppListPreferenceControllerTest {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
final Resources resources = spy(mContext.getResources());
|
||||
when(mContext.getResources()).thenReturn(resources);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
when(mContext.getApplicationContext()).thenReturn(mContext);
|
||||
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||
when(mUserManager.getProfileIdsWithDisabled(anyInt())).thenReturn(new int[] {});
|
||||
|
||||
when(resources.getTextArray(R.array.allowlist_hide_summary_in_battery_usage))
|
||||
.thenReturn(new String[] {"com.android.googlequicksearchbox"});
|
||||
FakeFeatureFactory.setupForTest();
|
||||
|
||||
mPreference = new PowerGaugePreference(mContext);
|
||||
@@ -119,7 +123,7 @@ public class BatteryAppListPreferenceControllerTest {
|
||||
public void testSetUsageSummary_timeMoreThanOneMinute_GoogleApp_shouldNotSetScreenSummary() {
|
||||
when(mBatteryEntry.getTimeInForegroundMs()).thenReturn(2 * DateUtils.MINUTE_IN_MILLIS);
|
||||
when(mBatteryEntry.getDefaultPackageName())
|
||||
.thenReturn("com.google.android.googlequicksearchbox");
|
||||
.thenReturn("com.android.googlequicksearchbox");
|
||||
doReturn(mContext.getText(R.string.battery_used_for)).when(mFragment).getText(
|
||||
R.string.battery_used_for);
|
||||
doReturn(mContext).when(mFragment).getContext();
|
||||
|
||||
@@ -101,8 +101,11 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
mContext.getResources().getConfiguration().setLocales(
|
||||
new LocaleList(new Locale("en_US")));
|
||||
final Resources resources = spy(mContext.getResources());
|
||||
resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
|
||||
doReturn(resources).when(mContext).getResources();
|
||||
doReturn(new String[] {"com.android.googlequicksearchbox"})
|
||||
.when(resources).getTextArray(R.array.allowlist_hide_summary_in_battery_usage);
|
||||
mBatteryChartPreferenceController = createController();
|
||||
mBatteryChartPreferenceController.mPrefContext = mContext;
|
||||
mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup;
|
||||
@@ -467,7 +470,7 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
spy(createBatteryDiffEntry(
|
||||
/*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
|
||||
/*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
|
||||
doReturn("com.google.android.googlequicksearchbox").when(batteryDiffEntry)
|
||||
doReturn("com.android.googlequicksearchbox").when(batteryDiffEntry)
|
||||
.getPackageName();
|
||||
|
||||
mBatteryChartPreferenceController.setPreferenceSummary(pref, batteryDiffEntry);
|
||||
@@ -678,7 +681,7 @@ public final class BatteryChartPreferenceControllerTest {
|
||||
|
||||
// Verifies the item which is defined in the array list.
|
||||
assertThat(mBatteryChartPreferenceController
|
||||
.isValidToShowSummary("com.google.android.googlequicksearchbox"))
|
||||
.isValidToShowSummary("com.android.googlequicksearchbox"))
|
||||
.isFalse();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -36,6 +37,7 @@ import android.os.UserBatteryConsumer;
|
||||
import android.os.UserManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.fuelgauge.BatteryEntry.NameAndIcon;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
@@ -64,6 +66,7 @@ public class BatteryEntryTest {
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private Context mMockContext;
|
||||
private Context mContext;
|
||||
@Mock private Handler mockHandler;
|
||||
@Mock private PackageManager mockPackageManager;
|
||||
@Mock private UserManager mockUserManager;
|
||||
@@ -71,6 +74,7 @@ public class BatteryEntryTest {
|
||||
|
||||
@Before
|
||||
public void stubContextToReturnMockPackageManager() {
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mMockContext.getPackageManager()).thenReturn(mockPackageManager);
|
||||
}
|
||||
|
||||
@@ -248,4 +252,77 @@ public class BatteryEntryTest {
|
||||
final String key = entry.getKey();
|
||||
assertThat(key).isEqualTo("U|2");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNameAndIconFromUserId_nullUserInfo_returnDefaultNameAndIcon() {
|
||||
final int userId = 1001;
|
||||
doReturn(mockUserManager).when(mContext).getSystemService(UserManager.class);
|
||||
doReturn(null).when(mockUserManager).getUserInfo(userId);
|
||||
|
||||
final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUserId(
|
||||
mContext, userId);
|
||||
assertThat(nameAndIcon.name).isEqualTo(getString(
|
||||
R.string.running_process_item_removed_user_label));
|
||||
assertThat(nameAndIcon.icon).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNameAndIconFromUid_rerturnExpectedName() {
|
||||
final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUid(
|
||||
mContext, /* name */ null, /* uid */ 0);
|
||||
assertThat(nameAndIcon.name).isEqualTo(getString(R.string.process_kernel_label));
|
||||
|
||||
assertNameAndIcon("mediaserver", R.string.process_mediaserver_label);
|
||||
assertNameAndIcon("dex2oat32", R.string.process_dex2oat_label);
|
||||
assertNameAndIcon("dex2oat64", R.string.process_dex2oat_label);
|
||||
assertNameAndIcon("dex2oat", R.string.process_dex2oat_label);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNameAndIconFromPowerComponent_rerturnExpectedNameAndIcon() {
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY,
|
||||
R.string.ambient_display_screen_title,
|
||||
R.drawable.ic_settings_aod);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||
R.string.power_bluetooth,
|
||||
com.android.internal.R.drawable.ic_settings_bluetooth);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_CAMERA,
|
||||
R.string.power_camera,
|
||||
R.drawable.ic_settings_camera);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO,
|
||||
R.string.power_cell,
|
||||
R.drawable.ic_cellular_1_bar);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT,
|
||||
R.string.power_flashlight,
|
||||
R.drawable.ic_settings_display);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_PHONE,
|
||||
R.string.power_phone,
|
||||
R.drawable.ic_settings_voice_calls);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_SCREEN,
|
||||
R.string.power_screen,
|
||||
R.drawable.ic_settings_display);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_WIFI,
|
||||
R.string.power_wifi,
|
||||
R.drawable.ic_settings_wireless);
|
||||
assertNameAndIcon(BatteryConsumer.POWER_COMPONENT_IDLE,
|
||||
R.string.power_idle,
|
||||
R.drawable.ic_settings_phone_idle);
|
||||
}
|
||||
|
||||
private void assertNameAndIcon(String name, int stringId) {
|
||||
final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromUid(
|
||||
mContext, name, /* uid */ 1000);
|
||||
assertThat(nameAndIcon.name).isEqualTo(getString(stringId));
|
||||
}
|
||||
|
||||
private void assertNameAndIcon(int powerComponentId, int stringId, int iconId) {
|
||||
final NameAndIcon nameAndIcon = BatteryEntry.getNameAndIconFromPowerComponent(
|
||||
mContext, powerComponentId);
|
||||
assertThat(nameAndIcon.name).isEqualTo(getString(stringId));
|
||||
assertThat(nameAndIcon.iconId).isEqualTo(iconId);
|
||||
}
|
||||
|
||||
private String getString(int stringId) {
|
||||
return mContext.getResources().getString(stringId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,11 +18,13 @@ package com.android.settings.privacy;
|
||||
|
||||
import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
|
||||
import static android.hardware.SensorPrivacyManager.Sensors.MICROPHONE;
|
||||
import static android.hardware.SensorPrivacyManager.Sources.OTHER;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
@@ -91,14 +93,14 @@ public class SensorToggleControllerTest {
|
||||
listener.onSensorPrivacyChanged(MICROPHONE, mMicState);
|
||||
}
|
||||
return null;
|
||||
}).when(mSensorPrivacyManager).setSensorPrivacy(eq(MICROPHONE), anyBoolean());
|
||||
}).when(mSensorPrivacyManager).setSensorPrivacy(anyInt(), eq(MICROPHONE), anyBoolean());
|
||||
doAnswer(invocation -> {
|
||||
mCamState = invocation.getArgument(1);
|
||||
for (OnSensorPrivacyChangedListener listener : mMicListeners) {
|
||||
listener.onSensorPrivacyChanged(CAMERA, mMicState);
|
||||
}
|
||||
return null;
|
||||
}).when(mSensorPrivacyManager).setSensorPrivacy(eq(CAMERA), anyBoolean());
|
||||
}).when(mSensorPrivacyManager).setSensorPrivacy(anyInt(), eq(CAMERA), anyBoolean());
|
||||
|
||||
doAnswer(invocation -> mMicListeners.add(invocation.getArgument(1)))
|
||||
.when(mSensorPrivacyManager).addSensorPrivacyListener(eq(MICROPHONE), any());
|
||||
@@ -108,37 +110,37 @@ public class SensorToggleControllerTest {
|
||||
|
||||
@Test
|
||||
public void isChecked_disableMicrophoneSensorPrivacy_returnTrue() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
|
||||
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
|
||||
assertTrue(micToggleController.isChecked());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_enableMicrophoneSensorPrivacy_returnFalse() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
|
||||
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
|
||||
assertFalse(micToggleController.isChecked());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_disableMicrophoneSensorPrivacyThenChanged_returnFalse() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
|
||||
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
|
||||
assertFalse(micToggleController.isChecked());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_enableMicrophoneSensorPrivacyThenChanged_returnTrue() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
|
||||
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
|
||||
assertTrue(micToggleController.isChecked());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isMicrophoneSensorPrivacyEnabled_uncheckMicToggle_returnTrue() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, false);
|
||||
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
|
||||
micToggleController.setChecked(false);
|
||||
assertTrue(mMicState);
|
||||
@@ -146,7 +148,7 @@ public class SensorToggleControllerTest {
|
||||
|
||||
@Test
|
||||
public void isMicrophoneSensorPrivacyEnabled_checkMicToggle_returnFalse() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(MICROPHONE, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, MICROPHONE, true);
|
||||
MicToggleController micToggleController = new MicToggleController(mContext, "mic_toggle");
|
||||
micToggleController.setChecked(true);
|
||||
assertFalse(mMicState);
|
||||
@@ -154,7 +156,7 @@ public class SensorToggleControllerTest {
|
||||
|
||||
@Test
|
||||
public void isChecked_disableCameraSensorPrivacy_returnTrue() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
|
||||
CameraToggleController camToggleController =
|
||||
new CameraToggleController(mContext, "cam_toggle");
|
||||
assertTrue(camToggleController.isChecked());
|
||||
@@ -162,7 +164,7 @@ public class SensorToggleControllerTest {
|
||||
|
||||
@Test
|
||||
public void isChecked_enableCameraSensorPrivacy_returnFalse() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
|
||||
CameraToggleController camToggleController =
|
||||
new CameraToggleController(mContext, "cam_toggle");
|
||||
assertFalse(camToggleController.isChecked());
|
||||
@@ -170,25 +172,25 @@ public class SensorToggleControllerTest {
|
||||
|
||||
@Test
|
||||
public void isChecked_disableCameraSensorPrivacyThenChanged_returnFalse() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
|
||||
CameraToggleController camToggleController =
|
||||
new CameraToggleController(mContext, "cam_toggle");
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
|
||||
assertFalse(camToggleController.isChecked());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_enableCameraSensorPrivacyThenChanged_returnTrue() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
|
||||
CameraToggleController camToggleController =
|
||||
new CameraToggleController(mContext, "cam_toggle");
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
|
||||
assertTrue(camToggleController.isChecked());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isCameraSensorPrivacyEnabled_uncheckMicToggle_returnTrue() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, false);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, false);
|
||||
CameraToggleController camToggleController =
|
||||
new CameraToggleController(mContext, "cam_toggle");
|
||||
camToggleController.setChecked(false);
|
||||
@@ -197,7 +199,7 @@ public class SensorToggleControllerTest {
|
||||
|
||||
@Test
|
||||
public void isCameraSensorPrivacyEnabled_checkMicToggle_returnFalse() {
|
||||
mSensorPrivacyManager.setSensorPrivacy(CAMERA, true);
|
||||
mSensorPrivacyManager.setSensorPrivacy(OTHER, CAMERA, true);
|
||||
CameraToggleController camToggleController =
|
||||
new CameraToggleController(mContext, "cam_toggle");
|
||||
camToggleController.setChecked(true);
|
||||
|
||||
Reference in New Issue
Block a user