Snap for 7868516 from c8c3f5c9b4 to tm-release

Change-Id: Iabe7b5f97160dadca3912866692cee7959cb924b
This commit is contained in:
Android Build Coastguard Worker
2021-10-30 03:08:54 +00:00
8 changed files with 157 additions and 6 deletions

View File

@@ -17,6 +17,7 @@
<com.google.android.setupdesign.GlifLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/setup_wizard_layout"
style="?attr/fingerprint_layout_theme"
android:layout_width="match_parent"
@@ -40,5 +41,27 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/illustration_lottie"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:visibility="gone"
app:lottie_imageAssetsFolder="images"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/fingerprint_edu_lottie"/>
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/illustration_lottie_portrait"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:visibility="gone"
app:lottie_imageAssetsFolder="images"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/fingerprint_edu_lottie_portrait"/>
</LinearLayout>
</com.google.android.setupdesign.GlifLayout>

View File

View File

@@ -21,13 +21,14 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.view.OrientationEventListener;
import android.view.Surface;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.accessibility.AccessibilityManager;
import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieAnimationView;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollBase;
@@ -35,6 +36,7 @@ import com.android.settings.biometrics.BiometricEnrollSidecar;
import com.android.settings.biometrics.BiometricUtils;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.airbnb.lottie.LottieAnimationView;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
@@ -52,6 +54,10 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
private FingerprintEnrollSidecar mSidecar;
private boolean mNextClicked;
private boolean mCanAssumeUdfps;
private boolean mCanAssumeSidefps;
private OrientationEventListener mOrientationEventListener;
private int mPreviousRotation = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -61,6 +67,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
final List<FingerprintSensorPropertiesInternal> props =
fingerprintManager.getSensorPropertiesInternal();
mCanAssumeUdfps = props != null && props.size() == 1 && props.get(0).isAnyUdfpsType();
mCanAssumeSidefps = props != null && props.size() == 1 && props.get(0).isAnySidefpsType();
setContentView(getContentView());
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
mFooterBarMixin.setSecondaryButton(
@@ -72,6 +79,8 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
.build()
);
listenOrientationEvent();
if (mCanAssumeUdfps) {
setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title);
setDescriptionText(R.string.security_settings_udfps_enroll_find_sensor_message);
@@ -90,6 +99,28 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
lottieAnimationView.setAnimation(R.raw.udfps_edu_a11y_lottie);
}
} else if (mCanAssumeSidefps) {
setHeaderText(R.string.security_settings_fingerprint_enroll_find_sensor_title);
setDescriptionText(R.string.security_settings_fingerprint_enroll_find_sensor_message);
final LottieAnimationView lottieAnimationView = findViewById(R.id.illustration_lottie);
final LottieAnimationView lottieAnimationViewPortrait =
findViewById(R.id.illustration_lottie_portrait);
final int rotation = getApplicationContext().getDisplay().getRotation();
switch(rotation) {
case Surface.ROTATION_90:
lottieAnimationView.setVisibility(View.GONE);
lottieAnimationViewPortrait.setVisibility(View.VISIBLE);
break;
case Surface.ROTATION_270:
lottieAnimationView.setVisibility(View.GONE);
lottieAnimationViewPortrait.setVisibility(View.VISIBLE);
lottieAnimationViewPortrait.setRotation(180);
break;
default:
lottieAnimationView.setVisibility(View.VISIBLE);
lottieAnimationViewPortrait.setVisibility(View.GONE);
break;
}
} else {
setHeaderText(R.string.security_settings_fingerprint_enroll_find_sensor_title);
setDescriptionText(R.string.security_settings_fingerprint_enroll_find_sensor_message);
@@ -220,6 +251,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
@Override
protected void onDestroy() {
stopListenOrientationEvent();
super.onDestroy();
if (mAnimation != null) {
mAnimation.stopAnimation();
@@ -297,4 +329,37 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
public int getMetricsCategory() {
return SettingsEnums.FINGERPRINT_FIND_SENSOR;
}
private void listenOrientationEvent() {
if (!mCanAssumeSidefps) {
// Do nothing if the device doesn't support SideFPS.
return;
}
mOrientationEventListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int orientation) {
final int currentRotation = getDisplay().getRotation();
if ((mPreviousRotation == Surface.ROTATION_90
&& currentRotation == Surface.ROTATION_270) || (
mPreviousRotation == Surface.ROTATION_270
&& currentRotation == Surface.ROTATION_90)) {
mPreviousRotation = currentRotation;
recreate();
}
}
};
mOrientationEventListener.enable();
mPreviousRotation = getDisplay().getRotation();
}
private void stopListenOrientationEvent() {
if (!mCanAssumeSidefps) {
// Do nothing if the device doesn't support SideFPS.
return;
}
if (mOrientationEventListener != null) {
mOrientationEventListener.disable();
}
mOrientationEventListener = null;
}
}

View File

@@ -19,12 +19,15 @@ import android.app.settings.SettingsEnums;
import android.content.Context;
import android.net.Uri;
import android.provider.DeviceConfig;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.SettingsUIDeviceConfig;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.password.PasswordUtils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.slices.SlicePreferenceController;
import com.android.settingslib.search.SearchIndexable;
@@ -33,6 +36,9 @@ import com.android.settingslib.search.SearchIndexable;
public class ConnectedDeviceDashboardFragment extends DashboardFragment {
private static final String TAG = "ConnectedDeviceFrag";
private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@VisibleForTesting
static final String KEY_CONNECTED_DEVICES = "connected_device_list";
@@ -64,12 +70,20 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
super.onAttach(context);
final boolean nearbyEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
SettingsUIDeviceConfig.BT_NEAR_BY_SUGGESTION_ENABLED, true);
String callingAppPackageName = PasswordUtils.getCallingAppPackageName(
getActivity().getActivityToken());
if (DEBUG) {
Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName);
}
use(AvailableMediaDeviceGroupController.class).init(this);
use(ConnectedDeviceGroupController.class).init(this);
use(PreviouslyConnectedDevicePreferenceController.class).init(this);
use(SlicePreferenceController.class).setSliceUri(nearbyEnabled
? Uri.parse(getString(R.string.config_nearby_devices_slice_uri))
: null);
use(DiscoverableFooterPreferenceController.class).setAlwaysDiscoverable(
TextUtils.equals(SETTINGS_PACKAGE_NAME, callingAppPackageName)
|| TextUtils.equals(SYSTEMUI_PACKAGE_NAME, callingAppPackageName));
}
/**

View File

@@ -52,6 +52,7 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
private BluetoothAdapter mBluetoothAdapter;
private AlwaysDiscoverable mAlwaysDiscoverable;
private FooterPreference mPreference;
private boolean mIsAlwaysDiscoverable;
public DiscoverableFooterPreferenceController(Context context, String key) {
super(context, key);
@@ -84,7 +85,9 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
}
mContext.registerReceiver(mBluetoothChangedReceiver,
new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
mAlwaysDiscoverable.start();
if (mIsAlwaysDiscoverable) {
mAlwaysDiscoverable.start();
}
updateFooterPreferenceTitle(mBluetoothAdapter.getState());
}
@@ -94,7 +97,19 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
return;
}
mContext.unregisterReceiver(mBluetoothChangedReceiver);
mAlwaysDiscoverable.stop();
if (mIsAlwaysDiscoverable) {
mAlwaysDiscoverable.stop();
}
}
/**
* Set whether the device can be discovered. By default the value will be {@code false}.
*
* @param isAlwaysDiscoverable {@code true} if the device can be discovered,
* otherwise {@code false}
*/
public void setAlwaysDiscoverable(boolean isAlwaysDiscoverable) {
mIsAlwaysDiscoverable = isAlwaysDiscoverable;
}
private void updateFooterPreferenceTitle(int bluetoothState) {

View File

@@ -60,6 +60,8 @@ import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
import com.android.settings.homepage.TopLevelSettings;
import com.android.settings.overlay.FeatureFactory;
@@ -170,7 +172,17 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
}
pref.setOnPreferenceClickListener(preference -> {
OnCancelListener listener = null;
if (fragment instanceof TopLevelSettings) {
if (fragment instanceof TopLevelSettings
&& ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) {
// Register the rule for injected apps.
ActivityEmbeddingRulesController.registerTwoPanePairRule(mContext,
new ComponentName(activity.getPackageName(),
com.android.settings.Settings.class.getName()),
new ComponentName(tile.getPackageName(),
tile.getComponentName()),
null, true, true);
// Highlight preference ui.
final TopLevelSettings topLevelSettings = (TopLevelSettings) fragment;
// Highlight the tile immediately whenever it's clicked
topLevelSettings.setHighlightPreferenceKey(key);

View File

@@ -18,6 +18,7 @@ package com.android.settings.connecteddevice;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -104,7 +105,8 @@ public class DiscoverableFooterPreferenceControllerTest {
}
@Test
public void onStart_shouldRegisterBluetoothChanged() {
public void onStart_setAlwaysDiscoverableAsTrue_shouldRegisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
mDiscoverableFooterPreferenceController.onStart();
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
@@ -112,7 +114,8 @@ public class DiscoverableFooterPreferenceControllerTest {
}
@Test
public void onStop_shouldUnregisterBluetoothChanged() {
public void onStop_setAlwaysDiscoverableAsTrue_shouldUnregisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
mDiscoverableFooterPreferenceController.onStart();
mDiscoverableFooterPreferenceController.onStop();
@@ -120,6 +123,25 @@ public class DiscoverableFooterPreferenceControllerTest {
verify(mAlwaysDiscoverable).stop();
}
@Test
public void onStart_setAlwaysDiscoverableAsFalse_shouldNotRegisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
mDiscoverableFooterPreferenceController.onStart();
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
verify(mAlwaysDiscoverable, never()).start();
}
@Test
public void onStop_setAlwaysDiscoverableAsFalse_shouldNotUnregisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
mDiscoverableFooterPreferenceController.onStart();
mDiscoverableFooterPreferenceController.onStop();
assertThat(getRegisteredBroadcastReceivers()).doesNotContain(mBluetoothChangedReceiver);
verify(mAlwaysDiscoverable, never()).stop();
}
@Test
public void onBluetoothStateChanged_bluetoothOn_updateTitle() {
BluetoothAdapter.getDefaultAdapter().setName(DEVICE_NAME);