From fae319353942c50a7241b8517de154e4f6b01fdd Mon Sep 17 00:00:00 2001 From: joshmccloskey Date: Mon, 22 Jul 2019 17:10:55 -0700 Subject: [PATCH 1/2] Add extra check for accessibility flow. Bug: 138197084 Test: Verified other accessibility features like Live Transcribe does not bring the user to the accessibility flow. Test: Verified that the Sound Amplifier does not bring the user to the accessibility flow. Change-Id: I5131d74926c0b01c565da280c55afe0080855688 --- .../settings/biometrics/face/FaceEnrollEducation.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index 99d96dd6d06..011cc12ae7a 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -134,7 +134,10 @@ public class FaceEnrollEducation extends BiometricEnrollBase { final AccessibilityManager accessibilityManager = getApplicationContext().getSystemService( AccessibilityManager.class); if (accessibilityManager != null) { - accessibilityEnabled = accessibilityManager.isEnabled(); + // Add additional check for touch exploration. This prevents other accessibility + // features such as Live Transcribe from defaulting to the accessibility setup. + accessibilityEnabled = accessibilityManager.isEnabled() + && accessibilityManager.isTouchExplorationEnabled(); } mFooterBarMixin.setPrimaryButton(footerButton); final Context context = getApplicationContext(); From 637d419157a68c7e90398ec7a28b31bcc535a5b9 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Fri, 28 Jun 2019 18:17:14 +0800 Subject: [PATCH 2/2] Fix crash after uninstalling app updateState was invoked in loader callback. But the package was uninstalled at the callback time caused null pointer exception. Add null check to prevent null pointer access. Fixes: 136170218 Fixes: 133771724 Test: make RunSettingsRoboTests, manual Change-Id: I2715e77f6e32af42a4bce70c9f409b0311eb36c4 (cherry picked from commit 790a822526251236af196c3ae17f1990c75fb133) --- .../appinfo/AppStoragePreferenceController.java | 10 +++++++--- .../appinfo/AppStoragePreferenceControllerTest.java | 11 +++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java b/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java index d887634a540..b0d49390cd0 100644 --- a/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java @@ -31,6 +31,7 @@ import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.applications.AppStorageSettings; import com.android.settings.applications.FetchPackageStorageAsyncLoader; +import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; @@ -48,9 +49,12 @@ public class AppStoragePreferenceController extends AppInfoPreferenceControllerB @Override public void updateState(Preference preference) { - final boolean isExternal = - (mParent.getAppEntry().info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0; - preference.setSummary(getStorageSummary(mLastResult, isExternal)); + final ApplicationsState.AppEntry entry = mParent.getAppEntry(); + if (entry != null && entry.info != null) { + final boolean isExternal = + (entry.info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0; + preference.setSummary(getStorageSummary(mLastResult, isExternal)); + } } @Override diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java index 809d2cfefd1..065544b2f68 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java @@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -99,6 +100,16 @@ public class AppStoragePreferenceControllerTest { verify(preference).setSummary(any()); } + @Test + public void updateState_entryIsNull_shouldNotUpdatePreferenceSummary() { + when(mFragment.getAppEntry()).thenReturn(null); + Preference preference = mock(Preference.class); + + mController.updateState(preference); + + verify(preference, never()).setSummary(any()); + } + @Test public void getStorageSummary_shouldWorkForExternal() { final StorageStatsSource.AppStorageStats stats =