From 0e1393ae8cac712bb56b51061a18885dae074038 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 7 Jun 2018 16:45:23 +0000 Subject: [PATCH 1/9] Delete obsolete activity alias for dev settings This activity alias is here since android 4.x for backward compatibility. We no longer need it, and keeping it will cause security issue. Change-Id: Ib7817fd7cf8c8e66ca50534a0387cdc5773f837b Merged-In: I3f985e7fe14bd290db73b8c46dd817591df02015 Fixes: 92497653 Test: manual --- AndroidManifest.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 25216db214f..796b4ddcfbf 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1932,15 +1932,6 @@ android:value="com.android.settings.print.PrintJobSettingsFragment" /> - - - - - From d2ba8871b9321a76f57f4a2726a54fb7c13a4564 Mon Sep 17 00:00:00 2001 From: Jong Wook Kim Date: Fri, 15 Jun 2018 13:02:12 -0700 Subject: [PATCH 2/9] Display "Unavailable" when received default MAC Display "Unavailable" instead of "02:00:00:00:00:00" when the current MAC address is "02:00:00:00:00:00" which indicates that we couldn't get the actual device MAC address. Bug: 110043449 Test: unittest (make RunSettingsRoboTests ROBOTEST_FILTER=WifiInfoPreferenceControllerTest) Change-Id: Iac9f81d144fd4c93ac12adaa80e1a55b19a6e186 --- .../wifi/WifiInfoPreferenceController.java | 7 +- .../WifiInfoPreferenceControllerTest.java | 90 +++++++++++++++++-- 2 files changed, 87 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/wifi/WifiInfoPreferenceController.java b/src/com/android/settings/wifi/WifiInfoPreferenceController.java index 445d6a4c983..d15c5086213 100644 --- a/src/com/android/settings/wifi/WifiInfoPreferenceController.java +++ b/src/com/android/settings/wifi/WifiInfoPreferenceController.java @@ -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); } diff --git a/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java index 3a8ced58bd3..d2e8cb8d5e7 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiInfoPreferenceControllerTest.java @@ -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); } } From 30692040be415ecadd804749c78f6b7cd8574df0 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Fri, 22 Jun 2018 14:38:25 -0700 Subject: [PATCH 3/9] Set default display timeout if current value is disabled by admin. - The display timeout dialog will only show values that are allowed by the admin. If the current display time out is greater than the max timeout set by admin, it becomes an invalid selection. In this case, instead of not selecting anything, set the default to the last available item. - move TimeoutListPreference into display package. Change-Id: I6c88f72ff2b0afe8605800074fd4626bbb16bee0 Fixes: 110104437 Test: make RunSettingsRoboTests --- res/xml/display_settings.xml | 2 +- res/xml/screen_lock_settings.xml | 2 +- .../{ => display}/TimeoutListPreference.java | 15 ++-- .../display/TimeoutPreferenceController.java | 12 ++-- .../LockAfterTimeoutPreferenceController.java | 2 +- .../core/PreferenceXmlParserUtilsTest.java | 6 +- .../display/TimeoutListPreferenceTest.java | 69 +++++++++++++++++++ .../TimeoutPreferenceControllerTest.java | 41 +++++++++-- ...kAfterTimeoutPreferenceControllerTest.java | 2 +- .../shadow/ShadowRestrictedLockUtils.java | 12 ++++ 10 files changed, 139 insertions(+), 24 deletions(-) rename src/com/android/settings/{ => display}/TimeoutListPreference.java (88%) create mode 100644 tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 87d422fd6f7..3d9f66652f5 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -57,7 +57,7 @@ - - Date: Tue, 19 Jun 2018 21:34:44 -0700 Subject: [PATCH 4/9] Update Fingerprint references in Settings Bug: 110387294 Test: builds Change-Id: Iac9647949b7e51229cc0bb391ee83a641e0bfcdc --- .../fingerprint/FingerprintRemoveSidecar.java | 2 +- .../fingerprint/FingerprintSettings.java | 26 +++++++++---------- .../settings/password/ChooseLockGeneric.java | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java b/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java index ce679b66488..381b8ebd150 100644 --- a/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java +++ b/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java @@ -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() { diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java index 880ca629f2e..0bd926d46cd 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -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(); diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java index 1dc8baadcee..b5fb8e9f9ad 100644 --- a/src/com/android/settings/password/ChooseLockGeneric.java +++ b/src/com/android/settings/password/ChooseLockGeneric.java @@ -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. } From 871e55fc54a0095f3ea5f848a7b9f9e4ee6c8d01 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Mon, 25 Jun 2018 16:50:52 -0700 Subject: [PATCH 5/9] Move Fingerprint settings to biometrics/fingerprint Bug: 110589286 Test: make -j56 RunSettingsRoboTests Test: adb shell am start -a android.settings.FINGERPRINT_ENROLL still works Test: adb shell am start -a android.settings.FINGERPRINT_SETUP still works Change-Id: If33b557137cae7b57e4a0e906ee95032bc589436 --- AndroidManifest.xml | 22 +++++++++---------- ...fingerprint_enroll_find_sensor_graphic.xml | 2 +- .../{fingerprint => biometrics}/OWNERS | 1 + .../FingerprintAuthenticateSidecar.java | 2 +- .../fingerprint/FingerprintEnrollBase.java | 2 +- .../FingerprintEnrollEnrolling.java | 2 +- .../FingerprintEnrollFindSensor.java | 4 ++-- .../fingerprint/FingerprintEnrollFinish.java | 2 +- .../FingerprintEnrollIntroduction.java | 2 +- .../fingerprint/FingerprintEnrollSidecar.java | 2 +- .../FingerprintEnrollSuggestionActivity.java | 2 +- .../FingerprintFindSensorAnimation.java | 2 +- ...FingerprintLocationAnimationVideoView.java | 2 +- .../FingerprintLocationAnimationView.java | 2 +- ...rintProfileStatusPreferenceController.java | 2 +- .../fingerprint/FingerprintRemoveSidecar.java | 2 +- .../fingerprint/FingerprintSettings.java | 2 +- ...FingerprintStatusPreferenceController.java | 2 +- .../FingerprintSuggestionActivity.java | 2 +- .../fingerprint/FingerprintUiHelper.java | 2 +- .../SetupFingerprintEnrollEnrolling.java | 2 +- .../SetupFingerprintEnrollFindSensor.java | 2 +- .../SetupFingerprintEnrollFinish.java | 2 +- .../SetupFingerprintEnrollIntroduction.java | 2 +- .../SuggestionFeatureProviderImpl.java | 4 ++-- .../settings/password/ChooseLockGeneric.java | 4 ++-- .../ConfirmDeviceCredentialBaseFragment.java | 2 +- .../password/SetupChooseLockGeneric.java | 2 +- .../settings/security/SecuritySettings.java | 4 ++-- .../grandfather_not_implementing_indexable | 2 +- .../DeleteFingerprintDialogTest.java | 6 ++--- .../FingerprintEnrollEnrollingTest.java | 2 +- .../FingerprintEnrollFindSensorTest.java | 2 +- ...ngerprintEnrollSuggestionActivityTest.java | 2 +- ...erprintLocationAnimationVideoViewTest.java | 2 +- .../FingerprintPreferenceTest.java | 4 ++-- ...ProfileStatusPreferenceControllerTest.java | 2 +- ...erprintStatusPreferenceControllerTest.java | 2 +- .../FingerprintSuggestionActivityTest.java | 2 +- .../SetupFingerprintEnrollFindSensorTest.java | 2 +- ...etupFingerprintEnrollIntroductionTest.java | 4 ++-- .../suggestions/SettingsSuggestionsTest.java | 4 ++-- .../FingerprintEnrollFinishTest.java | 2 +- .../FingerprintEnrollIntroductionTest.java | 2 +- 44 files changed, 63 insertions(+), 62 deletions(-) rename src/com/android/settings/{fingerprint => biometrics}/OWNERS (53%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintAuthenticateSidecar.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollBase.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollEnrolling.java (99%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollFindSensor.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollFinish.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollIntroduction.java (99%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollSidecar.java (99%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollSuggestionActivity.java (95%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintFindSensorAnimation.java (95%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintLocationAnimationVideoView.java (99%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintLocationAnimationView.java (99%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintProfileStatusPreferenceController.java (96%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintRemoveSidecar.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintSettings.java (99%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintStatusPreferenceController.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintSuggestionActivity.java (97%) rename src/com/android/settings/{ => biometrics}/fingerprint/FingerprintUiHelper.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/SetupFingerprintEnrollEnrolling.java (95%) rename src/com/android/settings/{ => biometrics}/fingerprint/SetupFingerprintEnrollFindSensor.java (98%) rename src/com/android/settings/{ => biometrics}/fingerprint/SetupFingerprintEnrollFinish.java (97%) rename src/com/android/settings/{ => biometrics}/fingerprint/SetupFingerprintEnrollIntroduction.java (99%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/DeleteFingerprintDialogTest.java (88%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollEnrollingTest.java (98%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollFindSensorTest.java (99%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollSuggestionActivityTest.java (98%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintLocationAnimationVideoViewTest.java (97%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintPreferenceTest.java (94%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java (98%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintStatusPreferenceControllerTest.java (98%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintSuggestionActivityTest.java (98%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/SetupFingerprintEnrollFindSensorTest.java (98%) rename tests/robotests/src/com/android/settings/{ => biometrics}/fingerprint/SetupFingerprintEnrollIntroductionTest.java (98%) rename tests/unit/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollFinishTest.java (98%) rename tests/unit/src/com/android/settings/{ => biometrics}/fingerprint/FingerprintEnrollIntroductionTest.java (98%) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7bbffc7813b..50ab8bb764a 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1590,11 +1590,11 @@ android:windowSoftInputMode="stateHidden|adjustResize" android:theme="@style/GlifTheme.Light"/> - - - - - + + + + @@ -1603,10 +1603,10 @@ - - - - + + + @@ -1616,7 +1616,7 @@ - - diff --git a/res/layout/fingerprint_enroll_find_sensor_graphic.xml b/res/layout/fingerprint_enroll_find_sensor_graphic.xml index 1c6ab80adf8..069045783e3 100644 --- a/res/layout/fingerprint_enroll_find_sensor_graphic.xml +++ b/res/layout/fingerprint_enroll_find_sensor_graphic.xml @@ -28,7 +28,7 @@ android:src="@drawable/fingerprint_sensor_location" android:scaleType="centerInside"/> - diff --git a/src/com/android/settings/fingerprint/OWNERS b/src/com/android/settings/biometrics/OWNERS similarity index 53% rename from src/com/android/settings/fingerprint/OWNERS rename to src/com/android/settings/biometrics/OWNERS index 937b3030fd6..6332a46482d 100644 --- a/src/com/android/settings/fingerprint/OWNERS +++ b/src/com/android/settings/biometrics/OWNERS @@ -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 \ No newline at end of file diff --git a/src/com/android/settings/fingerprint/FingerprintAuthenticateSidecar.java b/src/com/android/settings/biometrics/fingerprint/FingerprintAuthenticateSidecar.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintAuthenticateSidecar.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintAuthenticateSidecar.java index 1fa59a2fb60..0b92326e8cb 100644 --- a/src/com/android/settings/fingerprint/FingerprintAuthenticateSidecar.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintAuthenticateSidecar.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollBase.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintEnrollBase.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollBase.java index 5a148d33432..a65ee8ca21f 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollBase.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java similarity index 99% rename from src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index b87e61f8481..2b7a20b8da9 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index e5729828cf1..bc01458284e 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintEnrollFinish.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java index 4bd438c7978..8b175ec7d31 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java similarity index 99% rename from src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java index dd831219ad5..dfcdace76f4 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java similarity index 99% rename from src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java index 7f7cb673241..af56310ccf0 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivity.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivity.java similarity index 95% rename from src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivity.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivity.java index 4a4d08d353e..fb2c668e33f 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivity.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivity.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import android.content.Context; diff --git a/src/com/android/settings/fingerprint/FingerprintFindSensorAnimation.java b/src/com/android/settings/biometrics/fingerprint/FingerprintFindSensorAnimation.java similarity index 95% rename from src/com/android/settings/fingerprint/FingerprintFindSensorAnimation.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintFindSensorAnimation.java index 07ab99d17ca..8ce507e834c 100644 --- a/src/com/android/settings/fingerprint/FingerprintFindSensorAnimation.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintFindSensorAnimation.java @@ -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 diff --git a/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoView.java b/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoView.java similarity index 99% rename from src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoView.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoView.java index b988ab7763e..c79ed49a2b1 100644 --- a/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoView.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoView.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintLocationAnimationView.java b/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationView.java similarity index 99% rename from src/com/android/settings/fingerprint/FingerprintLocationAnimationView.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationView.java index 0812f2d1475..99d4ff902f3 100644 --- a/src/com/android/settings/fingerprint/FingerprintLocationAnimationView.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationView.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceController.java similarity index 96% rename from src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceController.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceController.java index 68d2ade4dbf..23873f9cb2b 100644 --- a/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceController.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java b/src/com/android/settings/biometrics/fingerprint/FingerprintRemoveSidecar.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintRemoveSidecar.java index 381b8ebd150..25cd2f52e8f 100644 --- a/src/com/android/settings/fingerprint/FingerprintRemoveSidecar.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintRemoveSidecar.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java similarity index 99% rename from src/com/android/settings/fingerprint/FingerprintSettings.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 0bd926d46cd..60e09d20dad 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import android.app.Activity; diff --git a/src/com/android/settings/fingerprint/FingerprintStatusPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintStatusPreferenceController.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java index 2839ee68a2f..e13e8ac6a98 100644 --- a/src/com/android/settings/fingerprint/FingerprintStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceController.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintSuggestionActivity.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivity.java similarity index 97% rename from src/com/android/settings/fingerprint/FingerprintSuggestionActivity.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivity.java index fa6aeb42210..f5fe92b7bcd 100644 --- a/src/com/android/settings/fingerprint/FingerprintSuggestionActivity.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivity.java @@ -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; diff --git a/src/com/android/settings/fingerprint/FingerprintUiHelper.java b/src/com/android/settings/biometrics/fingerprint/FingerprintUiHelper.java similarity index 98% rename from src/com/android/settings/fingerprint/FingerprintUiHelper.java rename to src/com/android/settings/biometrics/fingerprint/FingerprintUiHelper.java index 4a67ecd5c0b..012f80262a6 100644 --- a/src/com/android/settings/fingerprint/FingerprintUiHelper.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintUiHelper.java @@ -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; diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollEnrolling.java similarity index 95% rename from src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java rename to src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollEnrolling.java index fbbf033aa3f..c2c4930a5e3 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollEnrolling.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings.fingerprint; +package com.android.settings.biometrics.fingerprint; import android.content.Intent; diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java similarity index 98% rename from src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java rename to src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java index 3a4c3f73cc8..d3acbeac293 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java @@ -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; diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinish.java similarity index 97% rename from src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java rename to src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinish.java index e81203fb7a6..c73417b83e9 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java +++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinish.java @@ -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; diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java similarity index 99% rename from src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java rename to src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java index 5656a27d540..c7c0bb46b50 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroduction.java @@ -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; diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java index f71a6bc963d..1d58ed5ad1a 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java @@ -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; diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java index b5fb8e9f9ad..68678dc427f 100644 --- a/src/com/android/settings/password/ChooseLockGeneric.java +++ b/src/com/android/settings/password/ChooseLockGeneric.java @@ -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; diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java index 3f2675029d0..74207cd5631 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java @@ -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. diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java index 4258d76b624..0540bbff11e 100644 --- a/src/com/android/settings/password/SetupChooseLockGeneric.java +++ b/src/com/android/settings/password/SetupChooseLockGeneric.java @@ -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; diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java index b5906184d14..30ac4025c83 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -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; diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable index 393fe61c490..45474e7096b 100644 --- a/tests/robotests/assets/grandfather_not_implementing_indexable +++ b/tests/robotests/assets/grandfather_not_implementing_indexable @@ -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 diff --git a/tests/robotests/src/com/android/settings/fingerprint/DeleteFingerprintDialogTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/DeleteFingerprintDialogTest.java similarity index 88% rename from tests/robotests/src/com/android/settings/fingerprint/DeleteFingerprintDialogTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/DeleteFingerprintDialogTest.java index d306d068d30..27729cf5728 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/DeleteFingerprintDialogTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/DeleteFingerprintDialogTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollEnrollingTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 8c8113be4cd..bee208fb71b 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java similarity index 99% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java index 1fe09310e76..338b3c002cb 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivityTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivityTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivityTest.java index 74d4b28a1b7..888b061022f 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintEnrollSuggestionActivityTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSuggestionActivityTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoViewTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoViewTest.java similarity index 97% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoViewTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoViewTest.java index 24eb1ad671c..e8b27a8446f 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintLocationAnimationVideoViewTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintLocationAnimationVideoViewTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintPreferenceTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintPreferenceTest.java similarity index 94% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintPreferenceTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintPreferenceTest.java index f8984ab93d3..8c90cb7b2ce 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintPreferenceTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java index 583428e6c0f..fe3f5b06df6 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintProfileStatusPreferenceControllerTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintStatusPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java index e01ed3cf005..7fe114b6222 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintStatusPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/FingerprintSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/FingerprintSuggestionActivityTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java index ee47f2a036c..310674e3bc7 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/FingerprintSuggestionActivityTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensorTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java index 85d7ad8212a..38127ef22e2 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensorTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java similarity index 98% rename from tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java rename to tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java index 9e62511d6b2..bbdb443d2f8 100644 --- a/tests/robotests/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroductionTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java b/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java index a6acf2773eb..38d9ce5ba71 100644 --- a/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java +++ b/tests/robotests/src/com/android/settings/suggestions/SettingsSuggestionsTest.java @@ -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; diff --git a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollFinishTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java similarity index 98% rename from tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollFinishTest.java rename to tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java index b09d1bf116e..da25ac04999 100644 --- a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollFinishTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinishTest.java @@ -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; diff --git a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollIntroductionTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java similarity index 98% rename from tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollIntroductionTest.java rename to tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java index 235ba1e43f0..e937b7f85e6 100644 --- a/tests/unit/src/com/android/settings/fingerprint/FingerprintEnrollIntroductionTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroductionTest.java @@ -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; From 3515bc72594137050dd8c8d13f7b19df1cc76cec Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Tue, 19 Jun 2018 17:25:31 +0800 Subject: [PATCH 6/9] First commit of dynamic home page feature - Add SettingsHomepageActivity - Add feature flag - Use com.google.android.material_material library Change-Id: I325be249f739d3b03dc2f0d722319f5771e2313b --- Android.mk | 1 + AndroidManifest.xml | 9 +- res/drawable/ic_list_24dp.xml | 24 +++ res/layout/search_bar.xml | 50 ++++++ res/layout/settings_homepage.xml | 77 +++++++++ res/layout/settings_main_dashboard.xml | 33 +--- res/values/colors.xml | 4 + res/values/dimens.xml | 8 + res/values/themes.xml | 5 + .../settings/SettingsHomepageActivity.java | 61 +++++++ .../android/settings/core/FeatureFlags.java | 1 + .../settings/homepage/HomepageFragment.java | 150 ++++++++++++++++++ 12 files changed, 392 insertions(+), 31 deletions(-) create mode 100644 res/drawable/ic_list_24dp.xml create mode 100644 res/layout/search_bar.xml create mode 100644 res/layout/settings_homepage.xml create mode 100644 src/com/android/settings/SettingsHomepageActivity.java create mode 100644 src/com/android/settings/homepage/HomepageFragment.java diff --git a/Android.mk b/Android.mk index 96b5befd056..a573378faea 100644 --- a/Android.mk +++ b/Android.mk @@ -32,6 +32,7 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \ androidx.preference_preference \ androidx.recyclerview_recyclerview \ androidx.legacy_legacy-preference-v14 \ + com.google.android.material_material \ LOCAL_JAVA_LIBRARIES := \ bouncycastle \ diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 3b6d4f8cd6f..19c8e5eb6a5 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -123,12 +123,19 @@ android:value="true" /> + + + + android:targetActivity=".SettingsHomepageActivity"> diff --git a/res/drawable/ic_list_24dp.xml b/res/drawable/ic_list_24dp.xml new file mode 100644 index 00000000000..03f4af0ba5d --- /dev/null +++ b/res/drawable/ic_list_24dp.xml @@ -0,0 +1,24 @@ + + + + + diff --git a/res/layout/search_bar.xml b/res/layout/search_bar.xml new file mode 100644 index 00000000000..9f8b6307214 --- /dev/null +++ b/res/layout/search_bar.xml @@ -0,0 +1,50 @@ + + + + + + + + + \ No newline at end of file diff --git a/res/layout/settings_homepage.xml b/res/layout/settings_homepage.xml new file mode 100644 index 00000000000..b944cebdd65 --- /dev/null +++ b/res/layout/settings_homepage.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/settings_main_dashboard.xml b/res/layout/settings_main_dashboard.xml index b14f73e147e..39940925e2b 100644 --- a/res/layout/settings_main_dashboard.xml +++ b/res/layout/settings_main_dashboard.xml @@ -23,36 +23,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - - - - - - - + + + #fdd835 #f44336 + + #F1F3F4 + #F8F9FA + diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 30d1e6c36e5..981893d1562 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -128,6 +128,8 @@ 48dp 2dp 16dp + 2dp + 64dp 16dp @@ -328,4 +330,10 @@ 18sp 14sp + + 90dp + 56dp + 34dp + 68dp + diff --git a/res/values/themes.xml b/res/values/themes.xml index 8c3864967e4..4d911563bfe 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -367,4 +367,9 @@ true + + diff --git a/src/com/android/settings/SettingsHomepageActivity.java b/src/com/android/settings/SettingsHomepageActivity.java new file mode 100644 index 00000000000..7eda621ea43 --- /dev/null +++ b/src/com/android/settings/SettingsHomepageActivity.java @@ -0,0 +1,61 @@ +/* + * 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; + +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentManager; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.util.FeatureFlagUtils; + +import com.android.settings.core.FeatureFlags; +import com.android.settings.homepage.HomepageFragment; +import com.android.settingslib.drawer.SettingsDrawerActivity; + +public class SettingsHomepageActivity extends SettingsDrawerActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (!isDynamicHomepageEnabled(this)) { + final Intent settings = new Intent(); + settings.setAction("android.settings.SETTINGS"); + startActivity(settings); + finish(); + } + setContentView(R.layout.settings_homepage); + switchToFragment(this, R.id.main_content, HomepageFragment.class.getName()); + } + + public static boolean isDynamicHomepageEnabled(Context context) { + return FeatureFlagUtils.isEnabled(context, FeatureFlags.DYNAMIC_HOMEPAGE); + } + + /** + * Switch to a specific Fragment + */ + public static void switchToFragment(Activity activity, int id, String fragmentName) { + final Fragment f = Fragment.instantiate(activity, fragmentName, null /* args */); + + FragmentManager manager = activity.getFragmentManager(); + manager.beginTransaction().replace(id, f).commitAllowingStateLoss(); + manager.executePendingTransactions(); + } +} \ No newline at end of file diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java index 006bd70b5c4..08e4de54be5 100644 --- a/src/com/android/settings/core/FeatureFlags.java +++ b/src/com/android/settings/core/FeatureFlags.java @@ -23,4 +23,5 @@ public class FeatureFlags { public static final String BATTERY_DISPLAY_APP_LIST = "settings_battery_display_app_list"; public static final String BLUETOOTH_WHILE_DRIVING = "settings_bluetooth_while_driving"; public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; + public static final String DYNAMIC_HOMEPAGE = "settings_dynamic_homepage"; } diff --git a/src/com/android/settings/homepage/HomepageFragment.java b/src/com/android/settings/homepage/HomepageFragment.java new file mode 100644 index 00000000000..3b0ca2b647f --- /dev/null +++ b/src/com/android/settings/homepage/HomepageFragment.java @@ -0,0 +1,150 @@ +/* + * 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.homepage; + + +import android.app.ActionBar; +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toolbar; + +import androidx.annotation.NonNull; + +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.R; +import com.android.settings.SettingsHomepageActivity; +import com.android.settings.Utils; +import com.android.settings.core.InstrumentedFragment; +import com.android.settings.dashboard.DashboardSummary; +import com.android.settings.overlay.FeatureFactory; +import com.android.settings.search.SearchFeatureProvider; + +import com.google.android.material.bottomappbar.BottomAppBar; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.floatingactionbutton.FloatingActionButton; + +public class HomepageFragment extends InstrumentedFragment { + + private static final String TAG = "HomepageFragment"; + + private FloatingActionButton mSearchButton; + private BottomSheetBehavior mBottomSheetBehavior; + private boolean mBottomFragmentLoaded = false; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + final View rootView = inflater.inflate(R.layout.dashboard, container, false); + return rootView; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setupBottomBar(); + setupSearchBar(); + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.SETTINGS_HOMEPAGE; + } + + private void setupBottomBar() { + final Activity activity = getActivity(); + mSearchButton = (FloatingActionButton) activity.findViewById(R.id.search_fab); + + mSearchButton.setOnClickListener(v -> { + final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT; + intent.setPackage(FeatureFactory.getFactory(activity) + .getSearchFeatureProvider().getSettingsIntelligencePkgName()); + startActivityForResult(intent, 0 /* requestCode */); + }); + mBottomSheetBehavior = BottomSheetBehavior.from(activity.findViewById(R.id.bottom_sheet)); + final BottomAppBar bottomBar = (BottomAppBar) activity.findViewById(R.id.bar); + bottomBar.setOnClickListener(v -> { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + }); + + final int screenWidthpx = getResources().getDisplayMetrics().widthPixels; + final View searchbar = activity.findViewById(R.id.search_bar_container); + final View bottombar = activity.findViewById(R.id.bar); + + + mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + if (!mBottomFragmentLoaded) { + SettingsHomepageActivity.switchToFragment(getActivity(), + R.id.bottom_sheet_fragment, DashboardSummary.class.getName()); + mBottomFragmentLoaded = true; + } + if (newState == BottomSheetBehavior.STATE_EXPANDED) { + bottombar.setVisibility(View.INVISIBLE); + searchbar.setVisibility(View.VISIBLE); + mSearchButton.setVisibility(View.GONE); + } else if (newState == BottomSheetBehavior.STATE_COLLAPSED) { + bottombar.setVisibility(View.VISIBLE); + searchbar.setVisibility(View.INVISIBLE); + mSearchButton.setVisibility(View.VISIBLE); + } else if (newState == BottomSheetBehavior.STATE_SETTLING) { + bottombar.setVisibility(View.VISIBLE); + searchbar.setVisibility(View.VISIBLE); + mSearchButton.setVisibility(View.VISIBLE); + } + } + + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { + bottombar.setAlpha(1 - slideOffset); + mSearchButton.setAlpha(1 - slideOffset); + searchbar.setAlpha(slideOffset); + searchbar.setPadding((int) (screenWidthpx * (1 - slideOffset)), 0, 0, 0); + } + }); + } + + //TODO(110767984), copied from settingsActivity. We have to merge them + private void setupSearchBar() { + final Activity activity = getActivity(); + final Toolbar toolbar = activity.findViewById(R.id.search_action_bar); + FeatureFactory.getFactory(activity).getSearchFeatureProvider() + .initSearchToolbar(activity, toolbar); + activity.setActionBar(toolbar); + + // Please forgive me for what I am about to do. + // + // Need to make the navigation icon non-clickable so that the entire card is clickable + // and goes to the search UI. Also set the background to null so there's no ripple. + final View navView = toolbar.getNavigationView(); + navView.setClickable(false); + navView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); + navView.setBackground(null); + + final ActionBar actionBar = activity.getActionBar(); + if (actionBar != null) { + boolean deviceProvisioned = Utils.isDeviceProvisioned(activity); + actionBar.setDisplayHomeAsUpEnabled(deviceProvisioned); + actionBar.setHomeButtonEnabled(deviceProvisioned); + actionBar.setDisplayShowTitleEnabled(false); + } + } +} From d97fba5f0f61c6fc69a92a94b79e3aae677a62aa Mon Sep 17 00:00:00 2001 From: tmfang Date: Thu, 14 Jun 2018 14:48:35 +0800 Subject: [PATCH 7/9] Fork SettingsDrawerActivity in Settings. Settings app uses fragment classes from android framework, which is deprecated as of P. We need to switch to use fragment and associated classes to androidx. Because Settings didn't support drawer feature since Android O, we rename SettingsDrawerActivity to SettingsBaseActivity. Before we migrate to fragment of androix, we need to let SettingsBaseActivity extend FragmentActivity. Test: make RunSettingsRoboTests Bug: 110259478 Change-Id: Ifbf53f75f042da1618da16cf7837b70d298a9a14 --- res/layout/settings_base_layout.xml | 35 +++ .../android/settings/SettingsActivity.java | 7 +- .../settings/backup/BackupSettingsHelper.java | 1 - .../settings/core/SettingsBaseActivity.java | 211 ++++++++++++++++++ .../settings/dashboard/DashboardFragment.java | 12 +- .../settings/dashboard/DashboardSummary.java | 8 +- 6 files changed, 260 insertions(+), 14 deletions(-) create mode 100644 res/layout/settings_base_layout.xml create mode 100644 src/com/android/settings/core/SettingsBaseActivity.java diff --git a/res/layout/settings_base_layout.xml b/res/layout/settings_base_layout.xml new file mode 100644 index 00000000000..7216d7660aa --- /dev/null +++ b/res/layout/settings_base_layout.xml @@ -0,0 +1,35 @@ + + + + + + diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 3794d0eb6a5..711cb215d6d 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -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() { diff --git a/src/com/android/settings/backup/BackupSettingsHelper.java b/src/com/android/settings/backup/BackupSettingsHelper.java index 53406fef756..33832169290 100644 --- a/src/com/android/settings/backup/BackupSettingsHelper.java +++ b/src/com/android/settings/backup/BackupSettingsHelper.java @@ -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); } diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java new file mode 100644 index 00000000000..2cce467291b --- /dev/null +++ b/src/com/android/settings/core/SettingsBaseActivity.java @@ -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 sTileBlacklist = new ArraySet<>(); + + private final PackageReceiver mPackageReceiver = new PackageReceiver(); + private final List 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 { + + 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(); + } + } +} diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index ecf905eff00..67ffb76b9f1 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -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; } diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 0bb4ce2898c..1b9b75f7139 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -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()) { From 37dd4f1c71963a6853dcff480c34cc3a0fc0f010 Mon Sep 17 00:00:00 2001 From: hughchen Date: Thu, 28 Jun 2018 17:25:40 +0800 Subject: [PATCH 8/9] Add log and turn on debug flag Add log and turn on debug flag Bug: 80161203 Test: make -j42 RunSettingsRoboTests Change-Id: Ibd57f91b83c487ee71adb9e3de7ecfc5ea66bbef --- .../bluetooth/AvailableMediaBluetoothDeviceUpdater.java | 2 +- .../android/settings/bluetooth/BluetoothDeviceUpdater.java | 6 ++++++ .../settings/bluetooth/ConnectedBluetoothDeviceUpdater.java | 2 +- .../settings/bluetooth/SavedBluetoothDeviceUpdater.java | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java index d6549445702..44ef4be3dce 100644 --- a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java @@ -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; diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java index 485f691610f..be7ff255178 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java @@ -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(); } } diff --git a/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java index ec906a67179..500fb067622 100644 --- a/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdater.java @@ -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; diff --git a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java index 2b52672f783..c9fa0566462 100644 --- a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java @@ -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(); } From 457f6ef14055d238ec6bd140d4e050f40507d59e Mon Sep 17 00:00:00 2001 From: Lei Yu Date: Fri, 29 Jun 2018 00:18:14 +0000 Subject: [PATCH 9/9] Revert "First commit of dynamic home page feature" This reverts commit 3515bc72594137050dd8c8d13f7b19df1cc76cec. Reason for revert: CLs in this topic break color check in repohook. Bug: 110960820 Change-Id: I5934b6baf65515ebbc4e4660ed99747dd581f526 --- Android.mk | 1 - AndroidManifest.xml | 9 +- res/drawable/ic_list_24dp.xml | 24 --- res/layout/search_bar.xml | 50 ------ res/layout/settings_homepage.xml | 77 --------- res/layout/settings_main_dashboard.xml | 33 +++- res/values/colors.xml | 4 - res/values/dimens.xml | 8 - res/values/themes.xml | 5 - .../settings/SettingsHomepageActivity.java | 61 ------- .../android/settings/core/FeatureFlags.java | 1 - .../settings/homepage/HomepageFragment.java | 150 ------------------ 12 files changed, 31 insertions(+), 392 deletions(-) delete mode 100644 res/drawable/ic_list_24dp.xml delete mode 100644 res/layout/search_bar.xml delete mode 100644 res/layout/settings_homepage.xml delete mode 100644 src/com/android/settings/SettingsHomepageActivity.java delete mode 100644 src/com/android/settings/homepage/HomepageFragment.java diff --git a/Android.mk b/Android.mk index a573378faea..96b5befd056 100644 --- a/Android.mk +++ b/Android.mk @@ -32,7 +32,6 @@ LOCAL_STATIC_ANDROID_LIBRARIES := \ androidx.preference_preference \ androidx.recyclerview_recyclerview \ androidx.legacy_legacy-preference-v14 \ - com.google.android.material_material \ LOCAL_JAVA_LIBRARIES := \ bouncycastle \ diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 19c8e5eb6a5..3b6d4f8cd6f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -123,19 +123,12 @@ android:value="true" /> - - - + android:targetActivity="Settings"> diff --git a/res/drawable/ic_list_24dp.xml b/res/drawable/ic_list_24dp.xml deleted file mode 100644 index 03f4af0ba5d..00000000000 --- a/res/drawable/ic_list_24dp.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/res/layout/search_bar.xml b/res/layout/search_bar.xml deleted file mode 100644 index 9f8b6307214..00000000000 --- a/res/layout/search_bar.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/res/layout/settings_homepage.xml b/res/layout/settings_homepage.xml deleted file mode 100644 index b944cebdd65..00000000000 --- a/res/layout/settings_homepage.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/settings_main_dashboard.xml b/res/layout/settings_main_dashboard.xml index 39940925e2b..b14f73e147e 100644 --- a/res/layout/settings_main_dashboard.xml +++ b/res/layout/settings_main_dashboard.xml @@ -23,9 +23,36 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - - - + + + + + + + #fdd835 #f44336 - - #F1F3F4 - #F8F9FA - diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 981893d1562..30d1e6c36e5 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -128,8 +128,6 @@ 48dp 2dp 16dp - 2dp - 64dp 16dp @@ -330,10 +328,4 @@ 18sp 14sp - - 90dp - 56dp - 34dp - 68dp - diff --git a/res/values/themes.xml b/res/values/themes.xml index 4d911563bfe..8c3864967e4 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -367,9 +367,4 @@ true - - diff --git a/src/com/android/settings/SettingsHomepageActivity.java b/src/com/android/settings/SettingsHomepageActivity.java deleted file mode 100644 index 7eda621ea43..00000000000 --- a/src/com/android/settings/SettingsHomepageActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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; - -import android.app.Activity; -import android.app.Fragment; -import android.app.FragmentManager; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.util.FeatureFlagUtils; - -import com.android.settings.core.FeatureFlags; -import com.android.settings.homepage.HomepageFragment; -import com.android.settingslib.drawer.SettingsDrawerActivity; - -public class SettingsHomepageActivity extends SettingsDrawerActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (!isDynamicHomepageEnabled(this)) { - final Intent settings = new Intent(); - settings.setAction("android.settings.SETTINGS"); - startActivity(settings); - finish(); - } - setContentView(R.layout.settings_homepage); - switchToFragment(this, R.id.main_content, HomepageFragment.class.getName()); - } - - public static boolean isDynamicHomepageEnabled(Context context) { - return FeatureFlagUtils.isEnabled(context, FeatureFlags.DYNAMIC_HOMEPAGE); - } - - /** - * Switch to a specific Fragment - */ - public static void switchToFragment(Activity activity, int id, String fragmentName) { - final Fragment f = Fragment.instantiate(activity, fragmentName, null /* args */); - - FragmentManager manager = activity.getFragmentManager(); - manager.beginTransaction().replace(id, f).commitAllowingStateLoss(); - manager.executePendingTransactions(); - } -} \ No newline at end of file diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java index 08e4de54be5..006bd70b5c4 100644 --- a/src/com/android/settings/core/FeatureFlags.java +++ b/src/com/android/settings/core/FeatureFlags.java @@ -23,5 +23,4 @@ public class FeatureFlags { public static final String BATTERY_DISPLAY_APP_LIST = "settings_battery_display_app_list"; public static final String BLUETOOTH_WHILE_DRIVING = "settings_bluetooth_while_driving"; public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; - public static final String DYNAMIC_HOMEPAGE = "settings_dynamic_homepage"; } diff --git a/src/com/android/settings/homepage/HomepageFragment.java b/src/com/android/settings/homepage/HomepageFragment.java deleted file mode 100644 index 3b0ca2b647f..00000000000 --- a/src/com/android/settings/homepage/HomepageFragment.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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.homepage; - - -import android.app.ActionBar; -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Toolbar; - -import androidx.annotation.NonNull; - -import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.R; -import com.android.settings.SettingsHomepageActivity; -import com.android.settings.Utils; -import com.android.settings.core.InstrumentedFragment; -import com.android.settings.dashboard.DashboardSummary; -import com.android.settings.overlay.FeatureFactory; -import com.android.settings.search.SearchFeatureProvider; - -import com.google.android.material.bottomappbar.BottomAppBar; -import com.google.android.material.bottomsheet.BottomSheetBehavior; -import com.google.android.material.floatingactionbutton.FloatingActionButton; - -public class HomepageFragment extends InstrumentedFragment { - - private static final String TAG = "HomepageFragment"; - - private FloatingActionButton mSearchButton; - private BottomSheetBehavior mBottomSheetBehavior; - private boolean mBottomFragmentLoaded = false; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - final View rootView = inflater.inflate(R.layout.dashboard, container, false); - return rootView; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setupBottomBar(); - setupSearchBar(); - } - - @Override - public int getMetricsCategory() { - return MetricsEvent.SETTINGS_HOMEPAGE; - } - - private void setupBottomBar() { - final Activity activity = getActivity(); - mSearchButton = (FloatingActionButton) activity.findViewById(R.id.search_fab); - - mSearchButton.setOnClickListener(v -> { - final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT; - intent.setPackage(FeatureFactory.getFactory(activity) - .getSearchFeatureProvider().getSettingsIntelligencePkgName()); - startActivityForResult(intent, 0 /* requestCode */); - }); - mBottomSheetBehavior = BottomSheetBehavior.from(activity.findViewById(R.id.bottom_sheet)); - final BottomAppBar bottomBar = (BottomAppBar) activity.findViewById(R.id.bar); - bottomBar.setOnClickListener(v -> { - mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); - }); - - final int screenWidthpx = getResources().getDisplayMetrics().widthPixels; - final View searchbar = activity.findViewById(R.id.search_bar_container); - final View bottombar = activity.findViewById(R.id.bar); - - - mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - if (!mBottomFragmentLoaded) { - SettingsHomepageActivity.switchToFragment(getActivity(), - R.id.bottom_sheet_fragment, DashboardSummary.class.getName()); - mBottomFragmentLoaded = true; - } - if (newState == BottomSheetBehavior.STATE_EXPANDED) { - bottombar.setVisibility(View.INVISIBLE); - searchbar.setVisibility(View.VISIBLE); - mSearchButton.setVisibility(View.GONE); - } else if (newState == BottomSheetBehavior.STATE_COLLAPSED) { - bottombar.setVisibility(View.VISIBLE); - searchbar.setVisibility(View.INVISIBLE); - mSearchButton.setVisibility(View.VISIBLE); - } else if (newState == BottomSheetBehavior.STATE_SETTLING) { - bottombar.setVisibility(View.VISIBLE); - searchbar.setVisibility(View.VISIBLE); - mSearchButton.setVisibility(View.VISIBLE); - } - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - bottombar.setAlpha(1 - slideOffset); - mSearchButton.setAlpha(1 - slideOffset); - searchbar.setAlpha(slideOffset); - searchbar.setPadding((int) (screenWidthpx * (1 - slideOffset)), 0, 0, 0); - } - }); - } - - //TODO(110767984), copied from settingsActivity. We have to merge them - private void setupSearchBar() { - final Activity activity = getActivity(); - final Toolbar toolbar = activity.findViewById(R.id.search_action_bar); - FeatureFactory.getFactory(activity).getSearchFeatureProvider() - .initSearchToolbar(activity, toolbar); - activity.setActionBar(toolbar); - - // Please forgive me for what I am about to do. - // - // Need to make the navigation icon non-clickable so that the entire card is clickable - // and goes to the search UI. Also set the background to null so there's no ripple. - final View navView = toolbar.getNavigationView(); - navView.setClickable(false); - navView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); - navView.setBackground(null); - - final ActionBar actionBar = activity.getActionBar(); - if (actionBar != null) { - boolean deviceProvisioned = Utils.isDeviceProvisioned(activity); - actionBar.setDisplayHomeAsUpEnabled(deviceProvisioned); - actionBar.setHomeButtonEnabled(deviceProvisioned); - actionBar.setDisplayShowTitleEnabled(false); - } - } -}