From fb675151189fbf9383ada8a7e64cdfef52084013 Mon Sep 17 00:00:00 2001 From: Guojing Yuan Date: Mon, 18 Sep 2023 18:30:32 +0000 Subject: [PATCH 1/5] Revert "[CDM] Add Permissions Sync toggle" Revert submission 24708184-ps-toggle Reason for revert: Breaking some of the builds Reverted changes: /q/submissionid:24708184-ps-toggle Fix: 300876202 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:bd6cffd236588172c205ebb4b75b3de1995924ce) Merged-In: Ida4c3383404d5a3c2026d01f4b7cc27bb7003e63 Change-Id: Ida4c3383404d5a3c2026d01f4b7cc27bb7003e63 --- res/values/strings.xml | 5 - res/xml/bluetooth_device_details_fragment.xml | 3 - .../BluetoothDetailsDataSyncController.java | 145 ------------------ .../BluetoothDeviceDetailsFragment.java | 2 - ...luetoothDetailsDataSyncControllerTest.java | 121 --------------- 5 files changed, 276 deletions(-) delete mode 100644 src/com/android/settings/bluetooth/BluetoothDetailsDataSyncController.java delete mode 100644 tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncControllerTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index 672d21caeec..252e3d865b4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12034,11 +12034,6 @@ Audio changes as you move your head to sound more natural - - Sync permissions - - Give %1$s the same app permissions that you’ve allowed on %2$s - Audio Device Type diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml index 12ed8ebdd83..8f309a487be 100644 --- a/res/xml/bluetooth_device_details_fragment.xml +++ b/res/xml/bluetooth_device_details_fragment.xml @@ -92,9 +92,6 @@ settings:controller="com.android.settings.accessibility.LiveCaptionPreferenceController"/> - - Objects.equal(mCachedDevice.getAddress(), - a.getDeviceMacAddress().toString().toUpperCase())).max( - Comparator.comparingLong(AssociationInfo::getTimeApprovedMs)).ifPresent( - a -> mAssociationId = a.getId()); - } - - @Override - public boolean isAvailable() { - if (mAssociationId == DUMMY_ASSOCIATION_ID) { - return false; - } - return true; - } - - @Override - public boolean onPreferenceClick(Preference preference) { - SwitchPreference switchPreference = (SwitchPreference) preference; - String key = switchPreference.getKey(); - if (key.equals(KEY_PERM_SYNC)) { - if (switchPreference.isChecked()) { - mCompanionDeviceManager.enablePermissionsSync(mAssociationId); - } else { - mCompanionDeviceManager.disablePermissionsSync(mAssociationId); - } - } - return true; - } - - @Override - public String getPreferenceKey() { - return KEY_DATA_SYNC_GROUP; - } - - @Override - protected void init(PreferenceScreen screen) { - mPreferenceCategory = screen.findPreference(getPreferenceKey()); - refresh(); - } - - @Override - protected void refresh() { - SwitchPreference permSyncPref = mPreferenceCategory.findPreference(KEY_PERM_SYNC); - if (permSyncPref == null) { - permSyncPref = createPermSyncPreference(mPreferenceCategory.getContext()); - mPreferenceCategory.addPreference(permSyncPref); - } - - if (mAssociationId == DUMMY_ASSOCIATION_ID) { - permSyncPref.setVisible(false); - return; - } - - boolean visible = false; - boolean checked = false; - PermissionSyncRequest request = mCompanionDeviceManager.getPermissionSyncRequest( - mAssociationId); - if (request != null) { - visible = true; - if (request.isUserConsented()) { - checked = true; - } - } - permSyncPref.setVisible(visible); - permSyncPref.setChecked(checked); - } - - @VisibleForTesting - SwitchPreference createPermSyncPreference(Context context) { - SwitchPreference pref = new SwitchPreference(context); - pref.setKey(KEY_PERM_SYNC); - pref.setTitle(context.getString(R.string.bluetooth_details_permissions_sync_title)); - pref.setSummary(context.getString(R.string.bluetooth_details_permissions_sync_summary, - mCachedDevice.getName(), - Settings.Global.getString(context.getContentResolver(), "device_name"))); - pref.setOnPreferenceClickListener(this); - return pref; - } -} diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java index ae022aa6d88..c48494b25af 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java @@ -316,8 +316,6 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment lifecycle)); controllers.add(new BluetoothDetailsHearingDeviceControlsController(context, this, mCachedDevice, lifecycle)); - controllers.add(new BluetoothDetailsDataSyncController(context, this, - mCachedDevice, lifecycle)); } return controllers; } diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncControllerTest.java deleted file mode 100644 index dbede8e27ed..00000000000 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncControllerTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2023 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.bluetooth; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import android.companion.CompanionDeviceManager; -import android.companion.datatransfer.PermissionSyncRequest; - -import androidx.preference.PreferenceCategory; -import androidx.preference.SwitchPreference; - -import com.android.settingslib.core.lifecycle.Lifecycle; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -import java.util.Collections; - -@RunWith(RobolectricTestRunner.class) -public class BluetoothDetailsDataSyncControllerTest extends BluetoothDetailsControllerTestBase { - - private static final String MAC_ADDRESS = "AA:BB:CC:DD:EE:FF"; - private static final int DUMMY_ASSOCIATION_ID = -1; - private static final int ASSOCIATION_ID = 1; - private static final String KEY_PERM_SYNC = "perm_sync"; - - private BluetoothDetailsDataSyncController mController; - @Mock - private Lifecycle mLifecycle; - @Mock - private PreferenceCategory mPreferenceCategory; - @Mock - private CompanionDeviceManager mCompanionDeviceManager; - - private PermissionSyncRequest mPermissionSyncRequest; - private SwitchPreference mPermSyncPreference; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - - mContext = spy(RuntimeEnvironment.application); - when(mContext.getSystemService(CompanionDeviceManager.class)).thenReturn( - mCompanionDeviceManager); - when(mCachedDevice.getAddress()).thenReturn(MAC_ADDRESS); - when(mCompanionDeviceManager.getAllAssociations()).thenReturn(Collections.emptyList()); - mPermissionSyncRequest = new PermissionSyncRequest(ASSOCIATION_ID); - when(mCompanionDeviceManager.getPermissionSyncRequest(ASSOCIATION_ID)).thenReturn( - mPermissionSyncRequest); - - mController = new BluetoothDetailsDataSyncController(mContext, mFragment, - mCachedDevice, mLifecycle); - mController.mAssociationId = ASSOCIATION_ID; - mController.mPreferenceCategory = mPreferenceCategory; - - mPermSyncPreference = mController.createPermSyncPreference(mContext); - when(mPreferenceCategory.findPreference(KEY_PERM_SYNC)).thenReturn(mPermSyncPreference); - } - - @Test - public void isAvailable_noAssociations_returnsFalse() { - mController.mAssociationId = DUMMY_ASSOCIATION_ID; - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void isAvailable_hasAssociations_returnsTrue() { - assertThat(mController.isAvailable()).isTrue(); - } - - @Test - public void refresh_permSyncNull_preferenceVisibleFalse() { - mPermissionSyncRequest = null; - when(mCompanionDeviceManager.getPermissionSyncRequest(ASSOCIATION_ID)).thenReturn( - mPermissionSyncRequest); - mController.refresh(); - - assertThat(mPermSyncPreference.isVisible()).isFalse(); - } - - @Test - public void refresh_permSyncEnabled_preferenceCheckedTrue() { - mPermissionSyncRequest.setUserConsented(true); - mController.refresh(); - - assertThat(mPermSyncPreference.isVisible()).isTrue(); - assertThat(mPermSyncPreference.isChecked()).isTrue(); - } - - @Test - public void refresh_permSyncDisabled_preferenceCheckedFalse() { - mPermissionSyncRequest.setUserConsented(false); - mController.refresh(); - - assertThat(mPermSyncPreference.isVisible()).isTrue(); - assertThat(mPermSyncPreference.isChecked()).isFalse(); - } -} From 777fbef46c09d1045b95731560f731ff5e730c28 Mon Sep 17 00:00:00 2001 From: Guojing Yuan Date: Mon, 18 Sep 2023 18:44:10 +0000 Subject: [PATCH 2/5] [CDM Perm Sync] Fix a NPE for Perm Sync toggle Bug: 290063372 Test: manual test on the breaking build. (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:8c51d9c71da0212f7f14d9fd958e20a17061db28) Merged-In: I1f0a5c3840a4c97962fa9986d8f67ab0f652015f Change-Id: I1f0a5c3840a4c97962fa9986d8f67ab0f652015f --- .../settings/bluetooth/BluetoothDetailsDataSyncController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncController.java b/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncController.java index e74a0b4e6e2..0d74f3ce5ec 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsDataSyncController.java @@ -65,6 +65,7 @@ public class BluetoothDetailsDataSyncController extends BluetoothDetailsControll mCompanionDeviceManager = context.getSystemService(CompanionDeviceManager.class); mCompanionDeviceManager.getAllAssociations().stream().filter( + a -> a.getDeviceMacAddress() != null).filter( a -> Objects.equal(mCachedDevice.getAddress(), a.getDeviceMacAddress().toString().toUpperCase())).max( Comparator.comparingLong(AssociationInfo::getTimeApprovedMs)).ifPresent( From d8e0013c5c333d570106e7f816e73f1d5e3dc853 Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Thu, 21 Sep 2023 19:34:09 +0800 Subject: [PATCH 3/5] Fix JAVA_CRASH NullPointerException in BatteryUsageDataLoader. Bug: 301362376 Fix: 301362376 Test: manual (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:764337bd809a38c215800b30d84b843ad414537b) Merged-In: I75060fc3d1989522f58cae593b1c1f4063dbd6e5 Change-Id: I75060fc3d1989522f58cae593b1c1f4063dbd6e5 --- .../settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java index cc0067b9bbf..55ef9374aec 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java @@ -120,7 +120,7 @@ public final class BatteryUsageDataLoader { DatabaseUtils.sendBatteryUsageSlotData(context, ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap)); if (batteryDiffDataMap.values().stream().anyMatch(data -> - (!data.getAppDiffEntryList().isEmpty() + data != null && (!data.getAppDiffEntryList().isEmpty() || !data.getSystemDiffEntryList().isEmpty()))) { FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context) .detectSettingsAnomaly(context, /* displayDrain= */ 0); From 0eef0fd2b1da63990a990995039f234627fbef89 Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Thu, 21 Sep 2023 19:34:09 +0800 Subject: [PATCH 4/5] Fix JAVA_CRASH NullPointerException in BatteryUsageDataLoader. Bug: 301362376 Fix: 301362376 Test: manual (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:764337bd809a38c215800b30d84b843ad414537b) Merged-In: I75060fc3d1989522f58cae593b1c1f4063dbd6e5 Change-Id: I75060fc3d1989522f58cae593b1c1f4063dbd6e5 --- .../settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java index cc0067b9bbf..55ef9374aec 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java @@ -120,7 +120,7 @@ public final class BatteryUsageDataLoader { DatabaseUtils.sendBatteryUsageSlotData(context, ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap)); if (batteryDiffDataMap.values().stream().anyMatch(data -> - (!data.getAppDiffEntryList().isEmpty() + data != null && (!data.getAppDiffEntryList().isEmpty() || !data.getSystemDiffEntryList().isEmpty()))) { FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context) .detectSettingsAnomaly(context, /* displayDrain= */ 0); From 5c7a73a8fb1dc5653d50233e422437184ff5eddf Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Wed, 4 Oct 2023 17:00:44 +0000 Subject: [PATCH 5/5] =?UTF-8?q?Revert=20fixing=20the=20style=20of=20Choose?= =?UTF-8?q?=20screen=20lock=20wasn=E2=80=99t=20consistent=20in=20initial?= =?UTF-8?q?=20setup=20and=20deferred=20setup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: 301383804 Test: manually test with reproduciable steps in PO mode: 1. Set up offline and skip initial setup. 2. Navigate to home screen. 4. Connect to WiFi. 3. Sign in corp account during deferred setup. 5. Navigate to screen lock setup. 4. When landing on Choose screen lock, observe the behavior. (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:fdf80bd5c945f142e8529f104ca8b6d38d66d158) Merged-In: I5d9d1d30d280311875d8bd8604aed0fd0c08ab2c Change-Id: I5d9d1d30d280311875d8bd8604aed0fd0c08ab2c --- .../android/settings/password/SetNewPasswordActivity.java | 4 +++- .../android/settings/password/SetupChooseLockGeneric.java | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/password/SetNewPasswordActivity.java b/src/com/android/settings/password/SetNewPasswordActivity.java index e54ae7ae25b..fc664eccde1 100644 --- a/src/com/android/settings/password/SetNewPasswordActivity.java +++ b/src/com/android/settings/password/SetNewPasswordActivity.java @@ -121,7 +121,9 @@ public class SetNewPasswordActivity extends Activity implements SetNewPasswordCo @Override public void launchChooseLock(Bundle chooseLockFingerprintExtras) { - Intent intent = new Intent(this, SetupChooseLockGeneric.class); + final boolean isInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent()); + Intent intent = isInSetupWizard ? new Intent(this, SetupChooseLockGeneric.class) + : new Intent(this, ChooseLockGeneric.class); intent.setAction(mNewPasswordAction); intent.putExtras(chooseLockFingerprintExtras); if (mCallerAppName != null) { diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java index a3bef83d925..bc6c5129968 100644 --- a/src/com/android/settings/password/SetupChooseLockGeneric.java +++ b/src/com/android/settings/password/SetupChooseLockGeneric.java @@ -256,12 +256,6 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { return InternalSetupChooseLockGenericFragment.class; } - @Override - protected boolean isToolbarEnabled() { - // Hide the action bar from this page. - return false; - } - public static class InternalSetupChooseLockGenericFragment extends ChooseLockGenericFragment { @Override