Snap for 4869171 from 6acf0510fb to qt-release
Change-Id: I6e9e4fdaccd5e2dee8365056b5e4ae4f5b4fdb48
This commit is contained in:
@@ -1562,11 +1562,11 @@
|
||||
android:windowSoftInputMode="stateHidden|adjustResize"
|
||||
android:theme="@style/GlifTheme.Light"/>
|
||||
|
||||
<activity android:name=".fingerprint.FingerprintSettings" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.FingerprintEnrollFindSensor" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.FingerprintEnrollEnrolling" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.FingerprintEnrollFinish" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.FingerprintEnrollIntroduction"
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintSettings" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintEnrollFindSensor" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintEnrollEnrolling" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintEnrollFinish" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintEnrollIntroduction"
|
||||
android:exported="true"
|
||||
android:theme="@style/GlifTheme.Light">
|
||||
<intent-filter>
|
||||
@@ -1575,10 +1575,10 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".fingerprint.SetupFingerprintEnrollFindSensor" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.SetupFingerprintEnrollEnrolling" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.SetupFingerprintEnrollFinish" android:exported="false"/>
|
||||
<activity android:name=".fingerprint.SetupFingerprintEnrollIntroduction"
|
||||
<activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollFindSensor" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollEnrolling" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollFinish" android:exported="false"/>
|
||||
<activity android:name=".biometrics.fingerprint.SetupFingerprintEnrollIntroduction"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.MANAGE_FINGERPRINT"
|
||||
android:theme="@style/GlifTheme.Light">
|
||||
@@ -1588,7 +1588,7 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".fingerprint.FingerprintSuggestionActivity"
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintSuggestionActivity"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.MANAGE_FINGERPRINT"
|
||||
android:icon="@drawable/ic_suggestion_fingerprint"
|
||||
@@ -1663,7 +1663,7 @@
|
||||
<meta-data android:name="com.android.settings.icon_tintable" android:value="true" />
|
||||
</activity>
|
||||
|
||||
<activity android:name=".fingerprint.FingerprintEnrollSuggestionActivity"
|
||||
<activity android:name=".biometrics.fingerprint.FingerprintEnrollSuggestionActivity"
|
||||
android:icon="@drawable/ic_suggestion_fingerprint">
|
||||
<intent-filter android:priority="2">
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
android:src="@drawable/fingerprint_sensor_location"
|
||||
android:scaleType="centerInside"/>
|
||||
|
||||
<com.android.settings.fingerprint.FingerprintLocationAnimationView
|
||||
<com.android.settings.biometrics.fingerprint.FingerprintLocationAnimationView
|
||||
android:id="@+id/fingerprint_sensor_location_animation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
35
res/layout/settings_base_layout.xml
Normal file
35
res/layout/settings_base_layout.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<!--
|
||||
Copyright (C) 2018 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.
|
||||
-->
|
||||
<!-- The main content view -->
|
||||
<LinearLayout
|
||||
android:id="@+id/content_parent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
<Toolbar
|
||||
android:id="@+id/action_bar"
|
||||
style="?android:attr/actionBarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="?android:attr/actionBarTheme"
|
||||
android:navigationContentDescription="@*android:string/action_bar_up_description" />
|
||||
<FrameLayout
|
||||
android:id="@+id/content_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="?android:attr/windowBackground" />
|
||||
</LinearLayout>
|
||||
@@ -57,7 +57,7 @@
|
||||
</com.android.settingslib.RestrictedPreference>
|
||||
|
||||
<!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
|
||||
<com.android.settings.TimeoutListPreference
|
||||
<com.android.settings.display.TimeoutListPreference
|
||||
android:key="screen_timeout"
|
||||
android:title="@string/screen_timeout"
|
||||
android:summary="@string/summary_placeholder"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
android:title="@string/lockpattern_settings_enable_visible_pattern_title" />
|
||||
|
||||
<!-- available in pin/pattern/password -->
|
||||
<com.android.settings.TimeoutListPreference
|
||||
<com.android.settings.display.TimeoutListPreference
|
||||
android:key="lock_after_timeout"
|
||||
android:title="@string/lock_after_timeout"
|
||||
android:summary="@string/summary_placeholder"
|
||||
|
||||
@@ -52,6 +52,7 @@ import com.android.internal.util.ArrayUtils;
|
||||
import com.android.settings.Settings.WifiSettingsActivity;
|
||||
import com.android.settings.applications.manageapplications.ManageApplications;
|
||||
import com.android.settings.backup.BackupSettingsActivity;
|
||||
import com.android.settings.core.SettingsBaseActivity;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.core.gateway.SettingsGateway;
|
||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||
@@ -64,7 +65,6 @@ import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
|
||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -76,7 +76,8 @@ import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragment;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
public class SettingsActivity extends SettingsDrawerActivity
|
||||
|
||||
public class SettingsActivity extends SettingsBaseActivity
|
||||
implements PreferenceManager.OnPreferenceTreeClickListener,
|
||||
PreferenceFragment.OnPreferenceStartFragmentCallback,
|
||||
ButtonBarHandler, FragmentManager.OnBackStackChangedListener {
|
||||
@@ -606,7 +607,7 @@ public class SettingsActivity extends SettingsDrawerActivity
|
||||
private void updateTilesList() {
|
||||
// Generally the items that are will be changing from these updates will
|
||||
// not be in the top list of tiles, so run it in the background and the
|
||||
// SettingsDrawerActivity will pick up on the updates automatically.
|
||||
// SettingsBaseActivity will pick up on the updates automatically.
|
||||
AsyncTask.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@@ -152,7 +152,6 @@ public class BackupSettingsHelper {
|
||||
}
|
||||
|
||||
private Intent getIntentForDefaultBackupSettings() {
|
||||
// Extra needed by {@link SettingsDrawerActivity} to show the back button navigation.
|
||||
return new Intent(mContext, PrivacySettingsActivity.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Default reviewers for this and subdirectories.
|
||||
jaggies@google.com
|
||||
kchyn@google.com
|
||||
yukl@google.com
|
||||
|
||||
# Emergency approvers in case the above are not available
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Intent;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.ObjectAnimator;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
@@ -27,7 +27,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.fingerprint.FingerprintEnrollSidecar.Listener;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollSidecar.Listener;
|
||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.Activity;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
/**
|
||||
* An abstraction for a view that contains an animation that shows the user
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.UserHandle;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
@@ -121,7 +121,7 @@ public class FingerprintRemoveSidecar extends InstrumentedFragment {
|
||||
}
|
||||
|
||||
final boolean isRemovingFingerprint(int fid) {
|
||||
return inProgress() && mFingerprintRemoving.getFingerId() == fid;
|
||||
return inProgress() && mFingerprintRemoving.getBiometricId() == fid;
|
||||
}
|
||||
|
||||
final boolean inProgress() {
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -161,7 +161,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
@Override
|
||||
public void onAuthenticationSucceeded(
|
||||
FingerprintManager.AuthenticationResult result) {
|
||||
int fingerId = result.getFingerprint().getFingerId();
|
||||
int fingerId = result.getFingerprint().getBiometricId();
|
||||
mHandler.obtainMessage(MSG_FINGER_AUTH_SUCCESS, fingerId, 0).sendToTarget();
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
new FingerprintRemoveSidecar.Listener() {
|
||||
public void onRemovalSucceeded(Fingerprint fingerprint) {
|
||||
mHandler.obtainMessage(MSG_REFRESH_FINGERPRINT_TEMPLATES,
|
||||
fingerprint.getFingerId(), 0).sendToTarget();
|
||||
fingerprint.getBiometricId(), 0).sendToTarget();
|
||||
updateDialog();
|
||||
}
|
||||
|
||||
@@ -393,16 +393,16 @@ public class FingerprintSettings extends SubSettings {
|
||||
final Fingerprint item = items.get(i);
|
||||
FingerprintPreference pref = new FingerprintPreference(root.getContext(),
|
||||
this /* onDeleteClickListener */);
|
||||
pref.setKey(genKey(item.getFingerId()));
|
||||
pref.setKey(genKey(item.getBiometricId()));
|
||||
pref.setTitle(item.getName());
|
||||
pref.setFingerprint(item);
|
||||
pref.setPersistent(false);
|
||||
pref.setIcon(R.drawable.ic_fingerprint_24dp);
|
||||
if (mRemovalSidecar.isRemovingFingerprint(item.getFingerId())) {
|
||||
if (mRemovalSidecar.isRemovingFingerprint(item.getBiometricId())) {
|
||||
pref.setEnabled(false);
|
||||
}
|
||||
if (mFingerprintsRenaming.containsKey(item.getFingerId())) {
|
||||
pref.setTitle(mFingerprintsRenaming.get(item.getFingerId()));
|
||||
if (mFingerprintsRenaming.containsKey(item.getBiometricId())) {
|
||||
pref.setTitle(mFingerprintsRenaming.get(item.getBiometricId()));
|
||||
}
|
||||
root.addPreference(pref);
|
||||
pref.setOnPreferenceChangeListener(this);
|
||||
@@ -522,9 +522,9 @@ public class FingerprintSettings extends SubSettings {
|
||||
private void showRenameDialog(final Fingerprint fp) {
|
||||
RenameDialog renameDialog = new RenameDialog();
|
||||
Bundle args = new Bundle();
|
||||
if (mFingerprintsRenaming.containsKey(fp.getFingerId())) {
|
||||
final Fingerprint f = new Fingerprint(mFingerprintsRenaming.get(fp.getFingerId()),
|
||||
fp.getGroupId(), fp.getFingerId(), fp.getDeviceId());
|
||||
if (mFingerprintsRenaming.containsKey(fp.getBiometricId())) {
|
||||
final Fingerprint f = new Fingerprint(mFingerprintsRenaming.get(fp.getBiometricId()),
|
||||
fp.getGroupId(), fp.getBiometricId(), fp.getDeviceId());
|
||||
args.putParcelable("fingerprint", f);
|
||||
} else {
|
||||
args.putParcelable("fingerprint", fp);
|
||||
@@ -648,7 +648,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
@VisibleForTesting
|
||||
void deleteFingerPrint(Fingerprint fingerPrint) {
|
||||
mRemovalSidecar.startRemove(fingerPrint, mUserId);
|
||||
String name = genKey(fingerPrint.getFingerId());
|
||||
String name = genKey(fingerPrint.getBiometricId());
|
||||
Preference prefToRemove = findPreference(name);
|
||||
prefToRemove.setEnabled(false);
|
||||
updateAddPreference();
|
||||
@@ -711,7 +711,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which == DialogInterface.BUTTON_POSITIVE) {
|
||||
final int fingerprintId = mFp.getFingerId();
|
||||
final int fingerprintId = mFp.getBiometricId();
|
||||
Log.v(TAG, "Removing fpId=" + fingerprintId);
|
||||
mMetricsFeatureProvider.action(getContext(),
|
||||
MetricsEvent.ACTION_FINGERPRINT_DELETE,
|
||||
@@ -760,11 +760,11 @@ public class FingerprintSettings extends SubSettings {
|
||||
Log.d(TAG, "rename " + name + " to " + newName);
|
||||
mMetricsFeatureProvider.action(getContext(),
|
||||
MetricsEvent.ACTION_FINGERPRINT_RENAME,
|
||||
mFp.getFingerId());
|
||||
mFp.getBiometricId());
|
||||
FingerprintSettingsFragment parent
|
||||
= (FingerprintSettingsFragment)
|
||||
getTargetFragment();
|
||||
parent.renameFingerPrint(mFp.getFingerId(),
|
||||
parent.renameFingerPrint(mFp.getBiometricId(),
|
||||
newName);
|
||||
}
|
||||
dialog.dismiss();
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.os.CancellationSignal;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Intent;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.UserHandle;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.KeyguardManager;
|
||||
@@ -35,7 +35,7 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
||||
implements Preference.OnPreferenceClickListener {
|
||||
|
||||
private static final String TAG = "AvailableMediaBluetoothDeviceUpdater";
|
||||
private static final boolean DBG = false;
|
||||
private static final boolean DBG = true;
|
||||
|
||||
private final AudioManager mAudioManager;
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||
@@ -49,6 +50,7 @@ import androidx.preference.Preference;
|
||||
public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
||||
LocalBluetoothProfileManager.ServiceListener {
|
||||
private static final String TAG = "BluetoothDeviceUpdater";
|
||||
private static final boolean DBG = true;
|
||||
private static final String BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY =
|
||||
"persist.bluetooth.showdeviceswithoutnames";
|
||||
|
||||
@@ -250,6 +252,10 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
||||
return false;
|
||||
}
|
||||
final BluetoothDevice device = cachedDevice.getDevice();
|
||||
if (DBG) {
|
||||
Log.d(TAG, "isDeviceConnected() device name : " + cachedDevice.getName() +
|
||||
", is connected : " + device.isConnected());
|
||||
}
|
||||
return device.getBondState() == BluetoothDevice.BOND_BONDED && device.isConnected();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import androidx.preference.Preference;
|
||||
public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater {
|
||||
|
||||
private static final String TAG = "ConnBluetoothDeviceUpdater";
|
||||
private static final boolean DBG = false;
|
||||
private static final boolean DBG = true;
|
||||
|
||||
private final AudioManager mAudioManager;
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.content.Context;
|
||||
|
||||
import android.util.Log;
|
||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
@@ -33,6 +34,7 @@ import androidx.preference.Preference;
|
||||
public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
||||
implements Preference.OnPreferenceClickListener {
|
||||
private static final String TAG = "SavedBluetoothDeviceUpdater";
|
||||
private static final boolean DBG = true;
|
||||
|
||||
public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment,
|
||||
DevicePreferenceCallback devicePreferenceCallback) {
|
||||
@@ -59,6 +61,10 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
|
||||
@Override
|
||||
public boolean isFilterMatched(CachedBluetoothDevice cachedDevice) {
|
||||
final BluetoothDevice device = cachedDevice.getDevice();
|
||||
if (DBG) {
|
||||
Log.d(TAG, "isFilterMatched() device name : " + cachedDevice.getName() +
|
||||
", is connected : " + device.isConnected());
|
||||
}
|
||||
return device.getBondState() == BluetoothDevice.BOND_BONDED && !device.isConnected();
|
||||
}
|
||||
|
||||
|
||||
211
src/com/android/settings/core/SettingsBaseActivity.java
Normal file
211
src/com/android/settings/core/SettingsBaseActivity.java
Normal file
@@ -0,0 +1,211 @@
|
||||
/**
|
||||
* Copyright (C) 2018 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.core;
|
||||
|
||||
import android.annotation.LayoutRes;
|
||||
import android.annotation.Nullable;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.TypedArray;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager.LayoutParams;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.drawer.CategoryManager;
|
||||
import com.android.settingslib.drawer.TileUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
public class SettingsBaseActivity extends FragmentActivity {
|
||||
|
||||
protected static final boolean DEBUG_TIMING = false;
|
||||
private static final String TAG = "SettingsBaseActivity";
|
||||
private static final String DATA_SCHEME_PKG = "package";
|
||||
|
||||
// Serves as a temporary list of tiles to ignore until we heard back from the PM that they
|
||||
// are disabled.
|
||||
private static ArraySet<ComponentName> sTileBlacklist = new ArraySet<>();
|
||||
|
||||
private final PackageReceiver mPackageReceiver = new PackageReceiver();
|
||||
private final List<CategoryListener> mCategoryListeners = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
final long startTime = System.currentTimeMillis();
|
||||
|
||||
final TypedArray theme = getTheme().obtainStyledAttributes(android.R.styleable.Theme);
|
||||
if (!theme.getBoolean(android.R.styleable.Theme_windowNoTitle, false)) {
|
||||
getWindow().addFlags(LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
}
|
||||
super.setContentView(R.layout.settings_base_layout);
|
||||
|
||||
final Toolbar toolbar = findViewById(R.id.action_bar);
|
||||
if (theme.getBoolean(android.R.styleable.Theme_windowNoTitle, false)) {
|
||||
toolbar.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
setActionBar(toolbar);
|
||||
|
||||
if (DEBUG_TIMING) {
|
||||
Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
|
||||
+ " ms");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNavigateUp() {
|
||||
if (!super.onNavigateUp()) {
|
||||
finish();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
final IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
|
||||
filter.addDataScheme(DATA_SCHEME_PKG);
|
||||
registerReceiver(mPackageReceiver, filter);
|
||||
|
||||
new CategoriesUpdateTask().execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
unregisterReceiver(mPackageReceiver);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
public void addCategoryListener(CategoryListener listener) {
|
||||
mCategoryListeners.add(listener);
|
||||
}
|
||||
|
||||
public void remCategoryListener(CategoryListener listener) {
|
||||
mCategoryListeners.remove(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContentView(@LayoutRes int layoutResID) {
|
||||
final ViewGroup parent = findViewById(R.id.content_frame);
|
||||
if (parent != null) {
|
||||
parent.removeAllViews();
|
||||
}
|
||||
LayoutInflater.from(this).inflate(layoutResID, parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContentView(View view) {
|
||||
((ViewGroup) findViewById(R.id.content_frame)).addView(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContentView(View view, ViewGroup.LayoutParams params) {
|
||||
((ViewGroup) findViewById(R.id.content_frame)).addView(view, params);
|
||||
}
|
||||
|
||||
private void onCategoriesChanged() {
|
||||
final int N = mCategoryListeners.size();
|
||||
for (int i = 0; i < N; i++) {
|
||||
mCategoryListeners.get(i).onCategoriesChanged();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return whether or not the enabled state actually changed.
|
||||
*/
|
||||
public boolean setTileEnabled(ComponentName component, boolean enabled) {
|
||||
final PackageManager pm = getPackageManager();
|
||||
int state = pm.getComponentEnabledSetting(component);
|
||||
boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
|
||||
if (isEnabled != enabled || state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
|
||||
if (enabled) {
|
||||
sTileBlacklist.remove(component);
|
||||
} else {
|
||||
sTileBlacklist.add(component);
|
||||
}
|
||||
pm.setComponentEnabledSetting(component, enabled
|
||||
? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
|
||||
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
|
||||
PackageManager.DONT_KILL_APP);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates dashboard categories. Only necessary to call this after setTileEnabled
|
||||
*/
|
||||
public void updateCategories() {
|
||||
new CategoriesUpdateTask().execute();
|
||||
}
|
||||
|
||||
public String getSettingPkg() {
|
||||
return TileUtils.SETTING_PKG;
|
||||
}
|
||||
|
||||
public interface CategoryListener {
|
||||
void onCategoriesChanged();
|
||||
}
|
||||
|
||||
private class CategoriesUpdateTask extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
private final CategoryManager mCategoryManager;
|
||||
|
||||
public CategoriesUpdateTask() {
|
||||
mCategoryManager = CategoryManager.get(SettingsBaseActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
mCategoryManager.reloadAllCategories(SettingsBaseActivity.this, getSettingPkg());
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void result) {
|
||||
mCategoryManager.updateCategoryFromBlacklist(sTileBlacklist);
|
||||
onCategoriesChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private class PackageReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
new CategoriesUpdateTask().execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,13 +27,13 @@ import android.util.Log;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.PreferenceControllerListHelper;
|
||||
import com.android.settings.core.SettingsBaseActivity;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.drawer.TileUtils;
|
||||
|
||||
@@ -52,7 +52,7 @@ import androidx.preference.PreferenceScreen;
|
||||
* Base fragment for dashboard style UI containing a list of static and dynamic setting items.
|
||||
*/
|
||||
public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
implements SettingsDrawerActivity.CategoryListener, Indexable,
|
||||
implements SettingsBaseActivity.CategoryListener, Indexable,
|
||||
SummaryLoader.SummaryConsumer {
|
||||
private static final String TAG = "DashboardFragment";
|
||||
|
||||
@@ -145,9 +145,9 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
mSummaryLoader.setListening(true);
|
||||
}
|
||||
final Activity activity = getActivity();
|
||||
if (activity instanceof SettingsDrawerActivity) {
|
||||
if (activity instanceof SettingsBaseActivity) {
|
||||
mListeningToCategoryChange = true;
|
||||
((SettingsDrawerActivity) activity).addCategoryListener(this);
|
||||
((SettingsBaseActivity) activity).addCategoryListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,8 +197,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
}
|
||||
if (mListeningToCategoryChange) {
|
||||
final Activity activity = getActivity();
|
||||
if (activity instanceof SettingsDrawerActivity) {
|
||||
((SettingsDrawerActivity) activity).remCategoryListener(this);
|
||||
if (activity instanceof SettingsBaseActivity) {
|
||||
((SettingsBaseActivity) activity).remCategoryListener(this);
|
||||
}
|
||||
mListeningToCategoryChange = false;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import android.view.ViewGroup;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.core.SettingsBaseActivity;
|
||||
import com.android.settings.core.SettingsBaseActivity.CategoryListener;
|
||||
import com.android.settings.dashboard.conditional.Condition;
|
||||
import com.android.settings.dashboard.conditional.ConditionManager;
|
||||
import com.android.settings.dashboard.conditional.ConditionManager.ConditionListener;
|
||||
@@ -40,8 +42,6 @@ import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.ActionBarShadowController;
|
||||
import com.android.settingslib.drawer.CategoryKey;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||
import com.android.settingslib.drawer.SettingsDrawerActivity.CategoryListener;
|
||||
import com.android.settingslib.suggestions.SuggestionControllerMixin;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
|
||||
@@ -138,7 +138,7 @@ public class DashboardSummary extends InstrumentedFragment
|
||||
long startTime = System.currentTimeMillis();
|
||||
super.onResume();
|
||||
|
||||
((SettingsDrawerActivity) getActivity()).addCategoryListener(this);
|
||||
((SettingsBaseActivity) getActivity()).addCategoryListener(this);
|
||||
mSummaryLoader.setListening(true);
|
||||
final int metricsCategory = getMetricsCategory();
|
||||
for (Condition c : mConditionManager.getConditions()) {
|
||||
@@ -156,7 +156,7 @@ public class DashboardSummary extends InstrumentedFragment
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
((SettingsDrawerActivity) getActivity()).remCategoryListener(this);
|
||||
((SettingsBaseActivity) getActivity()).remCategoryListener(this);
|
||||
mSummaryLoader.setListening(false);
|
||||
for (Condition c : mConditionManager.getConditions()) {
|
||||
if (c.shouldShow()) {
|
||||
|
||||
@@ -28,8 +28,8 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.Settings.NightDisplaySuggestionActivity;
|
||||
import com.android.settings.display.NightDisplayPreferenceController;
|
||||
import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity;
|
||||
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintSuggestionActivity;
|
||||
import com.android.settings.notification.ZenOnboardingActivity;
|
||||
import com.android.settings.notification.ZenSuggestionActivity;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings;
|
||||
package com.android.settings.display;
|
||||
|
||||
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
|
||||
@@ -24,13 +24,17 @@ import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.RestrictedListPreference;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class TimeoutListPreference extends RestrictedListPreference {
|
||||
private static final String TAG = "TimeoutListPreference";
|
||||
private EnforcedAdmin mAdmin;
|
||||
private final CharSequence[] mInitialEntries;
|
||||
private final CharSequence[] mInitialValues;
|
||||
@@ -115,10 +119,11 @@ public class TimeoutListPreference extends RestrictedListPreference {
|
||||
// If the last one happens to be the same as the max timeout, select that
|
||||
setValue(String.valueOf(maxTimeout));
|
||||
} else {
|
||||
// There will be no highlighted selection since nothing in the list matches
|
||||
// maxTimeout. The user can still select anything less than maxTimeout.
|
||||
// TODO: maybe append maxTimeout to the list and mark selected.
|
||||
// The selected time out value is longer than the max timeout allowed by the admin.
|
||||
// Select the largest value from the list by default.
|
||||
Log.w(TAG, "Default to longest timeout. Value disabled by admin:" + userPreference);
|
||||
setValue(revisedValues.get(revisedValues.size() - 1).toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,6 @@ import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TimeoutListPreference;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
@@ -71,12 +70,13 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im
|
||||
dpm.getMaximumTimeToLock(null /* admin */, UserHandle.myUserId());
|
||||
timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin);
|
||||
}
|
||||
updateTimeoutPreferenceDescription(timeoutListPreference, currentTimeout);
|
||||
updateTimeoutPreferenceDescription(timeoutListPreference,
|
||||
Long.parseLong(timeoutListPreference.getValue()));
|
||||
|
||||
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||
UserHandle.myUserId());
|
||||
if(admin != null) {
|
||||
final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||
UserHandle.myUserId());
|
||||
if (admin != null) {
|
||||
timeoutListPreference.removeUnusableTimeouts(0/* disable all*/, admin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,8 +53,8 @@ import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.fingerprint.FingerprintEnrollBase;
|
||||
import com.android.settings.fingerprint.FingerprintEnrollFindSensor;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollBase;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
import com.android.settingslib.RestrictedPreference;
|
||||
@@ -682,7 +682,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
CharSequence errString) {
|
||||
Log.e(TAG, String.format(
|
||||
"Can't remove fingerprint %d in group %d. Reason: %s",
|
||||
fp.getFingerId(), fp.getGroupId(), errString));
|
||||
fp.getBiometricId(), fp.getGroupId(), errString));
|
||||
// TODO: need to proceed with the removal of managed profile
|
||||
// fingerprints and finish() gracefully.
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.InstrumentedFragment;
|
||||
import com.android.settings.fingerprint.FingerprintUiHelper;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintUiHelper;
|
||||
|
||||
/**
|
||||
* Base fragment to be shared for PIN/Pattern/Password confirmation fragments.
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SetupEncryptionInterstitial;
|
||||
import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settings.fingerprint.SetupFingerprintEnrollFindSensor;
|
||||
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
|
||||
import com.android.settings.utils.SettingsDividerItemDecoration;
|
||||
import com.android.setupwizardlib.GlifPreferenceLayout;
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.dashboard.SummaryLoader;
|
||||
import com.android.settings.enterprise.EnterprisePrivacyPreferenceController;
|
||||
import com.android.settings.fingerprint.FingerprintProfileStatusPreferenceController;
|
||||
import com.android.settings.fingerprint.FingerprintStatusPreferenceController;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintProfileStatusPreferenceController;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintStatusPreferenceController;
|
||||
import com.android.settings.location.LocationPreferenceController;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.security.trustagent.ManageTrustAgentsPreferenceController;
|
||||
|
||||
@@ -27,7 +27,7 @@ import android.util.Log;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TimeoutListPreference;
|
||||
import com.android.settings.display.TimeoutListPreference;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.security.trustagent.TrustAgentManager;
|
||||
|
||||
@@ -102,11 +102,12 @@ public class WifiInfoPreferenceController extends AbstractPreferenceController
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
|
||||
final String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
|
||||
|
||||
if (TextUtils.isEmpty(macAddress)) {
|
||||
mWifiMacAddressPref.setSummary(R.string.status_unavailable);
|
||||
} else if (macRandomizationMode == 1
|
||||
if (macRandomizationMode == 1
|
||||
&& WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) {
|
||||
mWifiMacAddressPref.setSummary(R.string.wifi_status_mac_randomized);
|
||||
} else if (TextUtils.isEmpty(macAddress)
|
||||
|| WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) {
|
||||
mWifiMacAddressPref.setSummary(R.string.status_unavailable);
|
||||
} else {
|
||||
mWifiMacAddressPref.setSummary(macAddress);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ com.android.settings.accessibility.AccessibilitySettingsForSetupWizard
|
||||
com.android.settings.datausage.DataUsageList
|
||||
com.android.settings.vpn2.AppManagementFragment
|
||||
com.android.settings.vpn2.VpnSettings
|
||||
com.android.settings.fingerprint.FingerprintSettings$FingerprintSettingsFragment
|
||||
com.android.settings.biometrics.fingerprint.FingerprintSettings$FingerprintSettingsFragment
|
||||
com.android.settings.applications.ProcessStatsDetail
|
||||
com.android.settings.wifi.WifiInfo
|
||||
com.android.settings.applications.VrListenerSettings
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
@@ -23,8 +23,8 @@ import static org.mockito.Mockito.verify;
|
||||
import android.app.Dialog;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
|
||||
import com.android.settings.fingerprint.FingerprintSettings.FingerprintSettingsFragment;
|
||||
import com.android.settings.fingerprint.FingerprintSettings.FingerprintSettingsFragment.DeleteFingerprintDialog;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment.DeleteFingerprintDialog;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowFragment;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
@@ -15,7 +15,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -25,7 +25,7 @@ import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.fingerprint.FingerprintSettings.FingerprintPreference;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintPreference;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
||||
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.robolectric.RuntimeEnvironment.application;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.robolectric.RuntimeEnvironment.application;
|
||||
@@ -27,7 +27,7 @@ import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.fingerprint.SetupFingerprintEnrollIntroductionTest.ShadowStorageManagerWrapper;
|
||||
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroductionTest.ShadowStorageManagerWrapper;
|
||||
import com.android.settings.password.SetupChooseLockGeneric.SetupChooseLockGenericFragment;
|
||||
import com.android.settings.password.SetupSkipDialog;
|
||||
import com.android.settings.password.StorageManagerWrapper;
|
||||
@@ -61,7 +61,7 @@ public class PreferenceXmlParserUtilsTest {
|
||||
@Test
|
||||
public void testDataTitleValid_ReturnsPreferenceTitle() {
|
||||
XmlResourceParser parser = getChildByType(R.xml.display_settings,
|
||||
"com.android.settings.TimeoutListPreference");
|
||||
"com.android.settings.display.TimeoutListPreference");
|
||||
final AttributeSet attrs = Xml.asAttributeSet(parser);
|
||||
String title = PreferenceXmlParserUtils.getDataTitle(mContext, attrs);
|
||||
String expTitle = mContext.getString(R.string.screen_timeout);
|
||||
@@ -80,7 +80,7 @@ public class PreferenceXmlParserUtilsTest {
|
||||
@Test
|
||||
public void testDataKeyValid_ReturnsPreferenceKey() {
|
||||
XmlResourceParser parser = getChildByType(R.xml.display_settings,
|
||||
"com.android.settings.TimeoutListPreference");
|
||||
"com.android.settings.display.TimeoutListPreference");
|
||||
final AttributeSet attrs = Xml.asAttributeSet(parser);
|
||||
String key = PreferenceXmlParserUtils.getDataKey(mContext, attrs);
|
||||
String expKey = "screen_timeout";
|
||||
@@ -90,7 +90,7 @@ public class PreferenceXmlParserUtilsTest {
|
||||
@Test
|
||||
public void testDataSummaryValid_ReturnsPreferenceSummary() {
|
||||
XmlResourceParser parser = getChildByType(R.xml.display_settings,
|
||||
"com.android.settings.TimeoutListPreference");
|
||||
"com.android.settings.display.TimeoutListPreference");
|
||||
final AttributeSet attrs = Xml.asAttributeSet(parser);
|
||||
String summary = PreferenceXmlParserUtils.getDataSummary(mContext, attrs);
|
||||
String expSummary = mContext.getString(R.string.summary_placeholder);
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (C) 2018 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.display;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.robolectric.RuntimeEnvironment.application;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(shadows = ShadowUserManager.class)
|
||||
public class TimeoutListPreferenceTest {
|
||||
private static final CharSequence[] VALUES =
|
||||
{"15000", "30000", "60000", "120000", "300000", "600000"};
|
||||
private static final CharSequence[] ENTRIES = {"15s", "30s", "1m", "2m", "5m", "10m"};
|
||||
|
||||
@Mock
|
||||
private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin;
|
||||
|
||||
private TimeoutListPreference mPreference;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mPreference = new TimeoutListPreference(application, mock(AttributeSet.class));
|
||||
ReflectionHelpers.setField(mPreference, "mInitialValues", VALUES);
|
||||
ReflectionHelpers.setField(mPreference, "mInitialEntries", ENTRIES);
|
||||
ReflectionHelpers.setField(mPreference, "mEntries", ENTRIES);
|
||||
ReflectionHelpers.setField(mPreference, "mEntryValues", VALUES);
|
||||
ReflectionHelpers.setField(mPreference, "mAdmin", mEnforcedAdmin);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removeUnusableTimeouts_selectedValueRemoved_shouldSetValueToLargestAllowedValue() {
|
||||
mPreference.setValue("600000"); // set to 10 minutes
|
||||
mPreference.removeUnusableTimeouts(480000L, mEnforcedAdmin); // max allowed is 8 minutes
|
||||
|
||||
// should set to largest allowed value, which is 5 minute
|
||||
assertThat(mPreference.getValue()).isEqualTo("300000");
|
||||
}
|
||||
}
|
||||
@@ -18,9 +18,8 @@ package com.android.settings.display;
|
||||
|
||||
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.anyInt;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -31,11 +30,13 @@ import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.android.settings.TimeoutListPreference;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
|
||||
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -55,6 +56,7 @@ public class TimeoutPreferenceControllerTest {
|
||||
|
||||
private static final int TIMEOUT = 30;
|
||||
private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
|
||||
private static final String DEFAULT_TIMEOUT = "300000"; // 5 minutes
|
||||
|
||||
private Context mContext;
|
||||
@Mock
|
||||
@@ -69,9 +71,15 @@ public class TimeoutPreferenceControllerTest {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||
when(mPreference.getValue()).thenReturn(DEFAULT_TIMEOUT);
|
||||
mController = new TimeoutPreferenceController(mContext, KEY_SCREEN_TIMEOUT);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
ShadowRestrictedLockUtils.reset();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnPreferenceChange_SetTimeout_ReturnCorrectTimeout() {
|
||||
mController.onPreferenceChange(mPreference, Integer.toString(TIMEOUT));
|
||||
@@ -125,7 +133,28 @@ public class TimeoutPreferenceControllerTest {
|
||||
|
||||
verify(mPreference, times(2))
|
||||
.removeUnusableTimeouts(longCaptor.capture(), adminCaptor.capture());
|
||||
assertEquals(0, (long) longCaptor.getValue());
|
||||
assertTrue(adminCaptor.getValue() != null);
|
||||
assertThat((long) longCaptor.getValue()).isEqualTo(0);
|
||||
assertThat(adminCaptor.getValue()).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = ShadowRestrictedLockUtils.class)
|
||||
public void updateState_selectedTimeoutLargerThanAdminMax_shouldSetSummaryToUpdatedPrefValue() {
|
||||
final int profileUserId = UserHandle.myUserId();
|
||||
final long allowedTimeout = 480000L; // 8 minutes
|
||||
when(mUserManager.getProfiles(profileUserId)).thenReturn(Collections.emptyList());
|
||||
ShadowDevicePolicyManager.getShadow().setMaximumTimeToLock(profileUserId, allowedTimeout);
|
||||
ShadowRestrictedLockUtils.setMaximumTimeToLockIsSet(true);
|
||||
final CharSequence[] timeouts = {"15000", "30000", "60000", "120000", "300000", "600000"};
|
||||
final CharSequence[] summaries = {"15s", "30s", "1m", "2m", "5m", "10m"};
|
||||
// set current timeout to be 10 minutes, which is longer than the allowed 8 minutes
|
||||
Settings.System.putLong(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, 600000L);
|
||||
when(mPreference.getEntries()).thenReturn(summaries);
|
||||
when(mPreference.getEntryValues()).thenReturn(timeouts);
|
||||
when(mPreference.getValue()).thenReturn("300000");
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setSummary(mContext.getString(R.string.screen_timeout_summary, "5m"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.TimeoutListPreference;
|
||||
import com.android.settings.display.TimeoutListPreference;
|
||||
import com.android.settings.security.trustagent.TrustAgentManager;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
@@ -28,8 +28,8 @@ import android.content.res.Resources;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Settings;
|
||||
import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity;
|
||||
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintSuggestionActivity;
|
||||
import com.android.settings.notification.ZenSuggestionActivity;
|
||||
import com.android.settings.support.NewDeviceIntroSuggestionActivity;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
@@ -33,6 +33,7 @@ public class ShadowRestrictedLockUtils {
|
||||
private static boolean sIsRestricted;
|
||||
private static boolean sAdminSupportDetailsIntentLaunched;
|
||||
private static boolean sHasSystemFeature;
|
||||
private static boolean sMaximumTimeToLockIsSet;
|
||||
private static String[] sRestrictedPkgs;
|
||||
private static DevicePolicyManager sDevicePolicyManager;
|
||||
private static String[] sDisabledTypes;
|
||||
@@ -45,6 +46,7 @@ public class ShadowRestrictedLockUtils {
|
||||
sAdminSupportDetailsIntentLaunched = false;
|
||||
sKeyguardDisabledFeatures = 0;
|
||||
sDisabledTypes = new String[0];
|
||||
sMaximumTimeToLockIsSet = false;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
@@ -101,6 +103,11 @@ public class ShadowRestrictedLockUtils {
|
||||
return sIsRestricted ? new EnforcedAdmin() : null;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public static EnforcedAdmin checkIfMaximumTimeToLockIsSet(Context context) {
|
||||
return sMaximumTimeToLockIsSet ? new EnforcedAdmin() : null;
|
||||
}
|
||||
|
||||
public static boolean hasAdminSupportDetailsIntentLaunched() {
|
||||
return sAdminSupportDetailsIntentLaunched;
|
||||
}
|
||||
@@ -136,4 +143,9 @@ public class ShadowRestrictedLockUtils {
|
||||
public static void setKeyguardDisabledFeatures(int features) {
|
||||
sKeyguardDisabledFeatures = features;
|
||||
}
|
||||
|
||||
public static void setMaximumTimeToLockIsSet(boolean isSet) {
|
||||
sMaximumTimeToLockIsSet = isSet;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -79,6 +79,7 @@ public class WifiInfoPreferenceControllerTest {
|
||||
.thenReturn(mMacPreference)
|
||||
.thenReturn(mIpPreference);
|
||||
when(mWifiManager.getConnectionInfo()).thenReturn(mWifiInfo);
|
||||
when(mWifiManager.getCurrentNetwork()).thenReturn(null);
|
||||
mController = new WifiInfoPreferenceController(mContext, mLifecycle, mWifiManager);
|
||||
}
|
||||
|
||||
@@ -103,7 +104,6 @@ public class WifiInfoPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void onResume_shouldUpdateWifiInfo() {
|
||||
when(mWifiManager.getCurrentNetwork()).thenReturn(null);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS);
|
||||
|
||||
mController.displayPreference(mScreen);
|
||||
@@ -114,22 +114,98 @@ public class WifiInfoPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateMacAddress() {
|
||||
when(mWifiManager.getCurrentNetwork()).thenReturn(null);
|
||||
public void updateWifiInfo_nullWifiInfoWithMacRandomizationOff_setMacUnavailable() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiManager.getConnectionInfo()).thenReturn(null);
|
||||
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(R.string.status_unavailable);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_nullMacWithMacRandomizationOff_setMacUnavailable() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(null);
|
||||
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(R.string.status_unavailable);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_defaultMacWithMacRandomizationOff_setMacUnavailable() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(WifiInfo.DEFAULT_MAC_ADDRESS);
|
||||
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(R.string.status_unavailable);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_validMacWithMacRandomizationOff_setValidMac() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS);
|
||||
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(TEST_MAC_ADDRESS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_nullWifiInfoWithMacRandomizationOn_setMacUnavailable() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiManager.getConnectionInfo()).thenReturn(null);
|
||||
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(null);
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(R.string.status_unavailable);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_nullMacWithMacRandomizationOn_setMacUnavailable() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(null);
|
||||
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(R.string.status_unavailable);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_defaultMacWithMacRandomizationOn_setMacRandomized() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(WifiInfo.DEFAULT_MAC_ADDRESS);
|
||||
mController.updateWifiInfo();
|
||||
verify(mMacPreference).setSummary(R.string.wifi_status_mac_randomized);
|
||||
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS);
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(R.string.wifi_status_mac_randomized);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWifiInfo_validMacWithMacRandomizationOn_setValidMac() {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
|
||||
mController.displayPreference(mScreen);
|
||||
when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS);
|
||||
|
||||
mController.updateWifiInfo();
|
||||
|
||||
verify(mMacPreference).setSummary(TEST_MAC_ADDRESS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static android.support.test.InstrumentationRegistry.getTargetContext;
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.fingerprint;
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
Reference in New Issue
Block a user