diff --git a/res/layout/locale_drag_cell.xml b/res/layout/locale_drag_cell.xml
index 47bf70a473e..7b932f39a02 100644
--- a/res/layout/locale_drag_cell.xml
+++ b/res/layout/locale_drag_cell.xml
@@ -56,17 +56,6 @@
android:layout_toStartOf="@+id/dragHandle"
android:layout_below="@id/label"/>
-
-
Languages
-
- Preferred language order
-
-
- System language
-
Remove
@@ -508,13 +502,13 @@
Preferred Language
- App languages
+ App Languages
Set the language for each app
- App language
+ App Language
Suggested languages
@@ -537,18 +531,6 @@
Only apps that support language selection are shown here.
-
- Your system, apps, and websites use the first supported language from your preferred languages.
-
-
- To select a language for each app, go to app language settings.
-
-
- Learn more about languages
-
-
- https://support.google.com/android?p=per_language_app_settings
-
- Remove selected language?
@@ -564,7 +546,7 @@
Keep at least one preferred language
- Not available as system language
+ May not be available in some apps
Move up
diff --git a/res/xml/languages.xml b/res/xml/languages.xml
deleted file mode 100644
index 0f455407645..00000000000
--- a/res/xml/languages.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java
index c70a56ab866..a9e89e914cb 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java
@@ -17,8 +17,10 @@ package com.android.settings.bluetooth;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.content.Intent;
+import android.provider.DeviceConfig;
import android.text.Editable;
import android.util.Log;
import android.widget.CompoundButton;
@@ -28,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.bluetooth.BluetoothPairingDialogFragment.BluetoothPairingDialogListener;
+import com.android.settings.core.SettingsUIDeviceConfig;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
@@ -54,7 +57,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
private static final int BLUETOOTH_PASSKEY_MAX_LENGTH = 6;
// Bluetooth dependencies for the connection we are trying to establish
- private LocalBluetoothManager mBluetoothManager;
+ LocalBluetoothManager mBluetoothManager;
private BluetoothDevice mDevice;
@VisibleForTesting
int mType;
@@ -66,6 +69,8 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
private LocalBluetoothProfile mPbapClientProfile;
private boolean mPbapAllowed;
private boolean mIsCoordinatedSetMember;
+ private boolean mIsLeAudio;
+ private boolean mIsLeContactSharingEnabled;
/**
* Creates an instance of a BluetoothPairingController.
@@ -92,10 +97,26 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
mPasskeyFormatted = formatKey(mPasskey);
+
final CachedBluetoothDevice cachedDevice =
mBluetoothManager.getCachedDeviceManager().findDevice(mDevice);
- mIsCoordinatedSetMember = cachedDevice != null
- ? cachedDevice.isCoordinatedSetMemberDevice() : false;
+
+ mIsCoordinatedSetMember = false;
+ mIsLeAudio = false;
+ mIsLeContactSharingEnabled = true;
+ if (cachedDevice != null) {
+ mIsCoordinatedSetMember = cachedDevice.isCoordinatedSetMemberDevice();
+
+ for (LocalBluetoothProfile profile : cachedDevice.getProfiles()) {
+ if (profile.getProfileId() == BluetoothProfile.LE_AUDIO) {
+ mIsLeAudio = true;
+ }
+ }
+
+ mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
+ SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, true);
+ Log.d(TAG, "BT_LE_AUDIO_CONTACT_SHARING_ENABLED is " + mIsLeContactSharingEnabled);
+ }
}
@Override
@@ -180,6 +201,30 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
return mPbapClientProfile != null && mPbapClientProfile.isProfileReady();
}
+ @VisibleForTesting
+ boolean isLeAudio() {
+ return mIsLeAudio;
+ }
+
+ @VisibleForTesting
+ boolean isLeContactSharingEnabled() {
+ return mIsLeContactSharingEnabled;
+ }
+
+ /**
+ * A method whether the device allows to show the le audio's contact sharing.
+ *
+ * @return A boolean whether the device allows to show the contact sharing.
+ */
+ public boolean isContactSharingVisible() {
+ boolean isContactSharingVisible = !isProfileReady();
+ // If device do not support the ContactSharing of LE audio device, hiding ContactSharing UI
+ if (isLeAudio() && !isLeContactSharingEnabled()) {
+ isContactSharingVisible = false;
+ }
+ return isContactSharingVisible;
+ }
+
/**
* A method for querying if the bluetooth device has access to contacts on the device.
*
@@ -447,4 +492,9 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
public boolean deviceEquals(BluetoothDevice device) {
return mDevice == device;
}
+
+ @VisibleForTesting
+ void mockPbapClientProfile(LocalBluetoothProfile mockPbapClientProfile) {
+ mPbapClientProfile = mockPbapClientProfile;
+ }
}
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
index 8dd00b389ed..bae2471dd9b 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -254,8 +254,8 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
mPairingController.getDeviceName()));
EditText pairingView = (EditText) view.findViewById(R.id.text);
- contactSharing.setVisibility(mPairingController.isProfileReady()
- ? View.GONE : View.VISIBLE);
+ contactSharing.setVisibility(
+ mPairingController.isContactSharingVisible() ? View.VISIBLE : View.GONE);
mPairingController.setContactSharingState();
contactSharing.setOnCheckedChangeListener(mPairingController);
contactSharing.setChecked(mPairingController.getContactSharingState());
@@ -346,7 +346,7 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
mPairingController.getDeviceName()));
contactSharing.setVisibility(
- mPairingController.isProfileReady() ? View.GONE : View.VISIBLE);
+ mPairingController.isContactSharingVisible() ? View.VISIBLE : View.GONE);
mPairingController.setContactSharingState();
contactSharing.setChecked(mPairingController.getContactSharingState());
contactSharing.setOnCheckedChangeListener(mPairingController);
@@ -363,5 +363,4 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
? View.VISIBLE : View.GONE);
return view;
}
-
}
diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index b3c2e3071af..ab9110d01ab 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -43,6 +43,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+
class LocaleDragAndDropAdapter
extends RecyclerView.Adapter {
@@ -153,10 +154,8 @@ class LocaleDragAndDropAdapter
final LocaleDragCell dragCell = holder.getLocaleDragCell();
final String label = feedItem.getFullNameNative();
final String description = feedItem.getFullNameInUiLanguage();
-
dragCell.setLabelAndDescription(label, description);
dragCell.setLocalized(feedItem.isTranslated());
- dragCell.setCurrentDefault(feedItem.getLocale().equals(Locale.getDefault()));
dragCell.setMiniLabel(mNumberFormatter.format(i + 1));
dragCell.setShowCheckbox(mRemoveMode);
dragCell.setShowMiniLabel(!mRemoveMode);
diff --git a/src/com/android/settings/localepicker/LocaleDragCell.java b/src/com/android/settings/localepicker/LocaleDragCell.java
index 2f4cfefefb1..ea86189b018 100644
--- a/src/com/android/settings/localepicker/LocaleDragCell.java
+++ b/src/com/android/settings/localepicker/LocaleDragCell.java
@@ -33,7 +33,6 @@ class LocaleDragCell extends RelativeLayout {
private CheckBox mCheckbox;
private TextView mMiniLabel;
private TextView mLocalized;
- private TextView mCurrentDefault;
private ImageView mDragHandle;
public LocaleDragCell(Context context, AttributeSet attrs) {
@@ -45,7 +44,6 @@ class LocaleDragCell extends RelativeLayout {
super.onFinishInflate();
mLabel = (TextView) findViewById(R.id.label);
mLocalized = (TextView) findViewById(R.id.l10nWarn);
- mCurrentDefault = (TextView) findViewById(R.id.default_locale);
mMiniLabel = (TextView) findViewById(R.id.miniLabel);
mCheckbox = (CheckBox) findViewById(R.id.checkbox);
mDragHandle = (ImageView) findViewById(R.id.dragHandle);
@@ -102,14 +100,6 @@ class LocaleDragCell extends RelativeLayout {
invalidate();
}
- /**
- * Indicate current locale is system default.
- */
- public void setCurrentDefault(boolean isCurrentDefault) {
- mCurrentDefault.setVisibility(isCurrentDefault ? VISIBLE : GONE);
- invalidate();
- }
-
public ImageView getDragHandle() {
return mDragHandle;
}
diff --git a/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java b/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java
deleted file mode 100644
index 05c740139cc..00000000000
--- a/src/com/android/settings/localepicker/LocaleHelperPreferenceController.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2022 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.localepicker;
-
-import android.content.Context;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.R;
-import com.android.settingslib.HelpUtils;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.FooterPreference;
-
-/**
- * A controller to update current locale information of application.
- */
-public class LocaleHelperPreferenceController extends AbstractPreferenceController {
- private static final String TAG = LocaleHelperPreferenceController.class.getSimpleName();
-
- private static final String KEY_FOOTER_LANGUAGE_PICKER = "footer_languages_picker";
-
- public LocaleHelperPreferenceController(Context context) {
- super(context);
- }
-
- @Override
- public boolean isAvailable() {
- return true;
- }
-
- @Override
- public String getPreferenceKey() {
- return KEY_FOOTER_LANGUAGE_PICKER;
- }
-
- @Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- FooterPreference footerPreference = screen.findPreference(getPreferenceKey());
- updateFooterPreference(footerPreference);
- }
-
- @VisibleForTesting
- void updateFooterPreference(FooterPreference footerPreference) {
- if (footerPreference != null) {
- footerPreference.setLearnMoreAction(v -> openLocaleLearnMoreLink());
- footerPreference.setLearnMoreText(mContext.getString(
- R.string.desc_locale_helper_footer_general));
- }
- }
-
- private void openLocaleLearnMoreLink() {
- mContext.startActivity(
- HelpUtils.getHelpIntent(
- mContext,
- mContext.getString(R.string.link_locale_picker_footer_learn_more),
- /*backupContext=*/""));
- }
-}
diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java
index 9db3468c9e1..eac2dd1df3c 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -36,7 +36,6 @@ import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
-import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.app.LocalePicker;
@@ -47,7 +46,6 @@ import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
-import com.android.settingslib.widget.LayoutPreference;
import java.util.ArrayList;
import java.util.List;
@@ -66,7 +64,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
private static final int REQUEST_LOCALE_PICKER = 0;
private static final String INDEX_KEY_ADD_LANGUAGE = "add_language";
- private static final String KEY_LANGUAGES_PICKER = "languages_picker";
private LocaleDragAndDropAdapter mAdapter;
private Menu mMenu;
@@ -75,9 +72,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
private boolean mShowingRemoveDialog;
private boolean mIsUiRestricted;
- private LayoutPreference mLocalePickerPreference;
- private LocaleHelperPreferenceController mLocaleHelperPreferenceController;
-
public LocaleListEditor() {
super(DISALLOW_CONFIG_LOCALE);
}
@@ -92,14 +86,6 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
- addPreferencesFromResource(R.xml.languages);
- final Activity activity = getActivity();
- activity.setTitle(R.string.language_picker_title);
- mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(activity);
- final PreferenceScreen screen = getPreferenceScreen();
- mLocalePickerPreference = screen.findPreference(KEY_LANGUAGES_PICKER);
- mLocaleHelperPreferenceController.displayPreference(screen);
-
LocaleStore.fillCache(this.getContext());
final List feedsList = getUserLocaleList();
mAdapter = new LocaleDragAndDropAdapter(this.getContext(), feedsList);
@@ -107,8 +93,11 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstState) {
- configureDragAndDrop(mLocalePickerPreference);
- return super.onCreateView(inflater, container, savedInstState);
+ final View result = super.onCreateView(inflater, container, savedInstState);
+ final View myLayout = inflater.inflate(R.layout.locale_order_list, (ViewGroup) result);
+
+ configureDragAndDrop(myLayout);
+ return result;
}
@Override
@@ -298,8 +287,8 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
return result;
}
- private void configureDragAndDrop(LayoutPreference layout) {
- final RecyclerView list = layout.findViewById(R.id.dragList);
+ private void configureDragAndDrop(View view) {
+ final RecyclerView list = view.findViewById(R.id.dragList);
final LocaleLinearLayoutManager llm = new LocaleLinearLayoutManager(getContext(), mAdapter);
llm.setAutoMeasureEnabled(true);
list.setLayoutManager(llm);
@@ -308,7 +297,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment {
mAdapter.setRecyclerView(list);
list.setAdapter(mAdapter);
- mAddLanguage = layout.findViewById(R.id.add_language);
+ mAddLanguage = view.findViewById(R.id.add_language);
mAddLanguage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index ec17dd371b1..1c480e05735 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -1324,6 +1324,12 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@VisibleForTesting
void launchConfigNewNetworkFragment(WifiEntry wifiEntry) {
+ if (mIsRestricted) {
+ Log.e(TAG, "Can't configure Wi-Fi because NetworkProviderSettings is restricted.");
+ EventLog.writeEvent(0x534e4554, "246301667", -1 /* UID */, "Fragment is restricted.");
+ return;
+ }
+
final Bundle bundle = new Bundle();
bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY,
wifiEntry.getKey());
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingControllerTest.java
index 88e15ebc13e..a7dc17da0e0 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingControllerTest.java
@@ -17,16 +17,28 @@ package com.android.settings.bluetooth;
import static android.bluetooth.BluetoothDevice.PAIRING_VARIANT_CONSENT;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.content.Intent;
import android.os.Parcel;
+import com.android.settings.core.SettingsUIDeviceConfig;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settings.testutils.shadow.ShadowDeviceConfig;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
import org.junit.Before;
import org.junit.Test;
@@ -36,16 +48,36 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+import java.util.List;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class})
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothUtils.class,
+ ShadowDeviceConfig.class})
public class BluetoothPairingControllerTest {
private final BluetoothClass mBluetoothClass =
createBtClass(BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE);
+
+ @Mock
+ private CachedBluetoothDeviceManager mCachedDeviceManager;
+ @Mock
+ private LocalBluetoothManager mLocalBluetoothManager;
+ @Mock
+ private LocalBluetoothProfileManager mLocalBluetoothProfileManager;
@Mock
private BluetoothDevice mBluetoothDevice;
+ @Mock
+ private CachedBluetoothDevice mCachedDevice;
+ @Mock
+ private LocalBluetoothProfile mLocalBluetoothProfile;
+ @Mock
+ private LocalBluetoothProfile mPbapLocalBluetoothProfile;
+
private Context mContext;
private BluetoothPairingController mBluetoothPairingController;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
private BluetoothClass createBtClass(int deviceClass) {
Parcel p = Parcel.obtain();
@@ -57,14 +89,32 @@ public class BluetoothPairingControllerTest {
return bluetoothClass;
}
+ private BluetoothPairingController createBluetoothPairingController() {
+ final Intent intent = new Intent();
+ intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mBluetoothDevice);
+ return new BluetoothPairingController(intent, mContext);
+ }
+
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- final Intent intent = new Intent();
- intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mBluetoothDevice);
- mBluetoothPairingController = new BluetoothPairingController(intent, mContext);
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+ mShadowBluetoothAdapter.setEnabled(true);
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
+ when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
+ when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager);
+ when(mCachedDeviceManager.findDevice(mBluetoothDevice)).thenReturn(mCachedDevice);
+ List localBluetoothProfiles = new ArrayList<>();
+ mockIsLeAudio(false);
+ localBluetoothProfiles.add(mLocalBluetoothProfile);
+ when(mCachedDevice.getProfiles()).thenReturn(localBluetoothProfiles);
+ when(mCachedDevice.getDevice()).thenReturn(mBluetoothDevice);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+ mBluetoothPairingController.mockPbapClientProfile(mPbapLocalBluetoothProfile);
}
@Test
@@ -108,4 +158,124 @@ public class BluetoothPairingControllerTest {
verify(mBluetoothDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
}
+
+ @Test
+ public void isLeAudio_noLeProfile_returnsFalse() {
+ mockIsLeAudio(false);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+
+ assertThat(mBluetoothPairingController.isLeAudio()).isFalse();
+ }
+
+ @Test
+ public void isLeAudio_isLeProfile_returnsTrue() {
+ mockIsLeAudio(true);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+
+ assertThat(mBluetoothPairingController.isLeAudio()).isTrue();
+ }
+
+ @Test
+ public void isLeContactSharingEnabled_configIsFalse_returnsFalse() {
+ mockIsLeContactSharingEnabled(false);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+
+ assertThat(mBluetoothPairingController.isLeContactSharingEnabled()).isFalse();
+ }
+
+ @Test
+ public void isLeContactSharingEnabled_configIsTrue_returnsTrue() {
+ mockIsLeContactSharingEnabled(true);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+
+ assertThat(mBluetoothPairingController.isLeContactSharingEnabled()).isTrue();
+ }
+
+ @Test
+ public void isContactSharingVisible_profileIsNotReady_returnsTrue() {
+ // isProfileReady=false, isLeAudio=false, isLeContactSharingEnabled=true
+ mockIsProfileReady(false);
+ mockIsLeAudio(false);
+ mockIsLeContactSharingEnabled(true);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+ mBluetoothPairingController.mockPbapClientProfile(mPbapLocalBluetoothProfile);
+
+ assertThat(mBluetoothPairingController.isContactSharingVisible()).isTrue();
+ }
+
+ @Test
+ public void isContactSharingVisible_profileIsReady_returnsFalse() {
+ // isProfileReady=true, isLeAudio=false, isLeContactSharingEnabled=true
+ mockIsProfileReady(true);
+ mockIsLeAudio(false);
+ mockIsLeContactSharingEnabled(true);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+ mBluetoothPairingController.mockPbapClientProfile(mPbapLocalBluetoothProfile);
+
+ assertThat(mBluetoothPairingController.isContactSharingVisible()).isFalse();
+ }
+
+ @Test
+ public void isContactSharingVisible_DeviceIsLeAudioAndProfileIsReady_returnsFalse() {
+ // isProfileReady=true, isLeAudio=true, isLeContactSharingEnabled=true
+ mockIsProfileReady(true);
+ mockIsLeAudio(true);
+ mockIsLeContactSharingEnabled(true);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+ mBluetoothPairingController.mockPbapClientProfile(mPbapLocalBluetoothProfile);
+
+ assertThat(mBluetoothPairingController.isContactSharingVisible()).isFalse();
+ }
+
+ @Test
+ public void isContactSharingVisible_DeviceIsLeAudioAndProfileIsNotReady_returnsTrue() {
+ // isProfileReady=false, isLeAudio=true, isLeContactSharingEnabled=true
+ mockIsProfileReady(false);
+ mockIsLeAudio(true);
+ mockIsLeContactSharingEnabled(true);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+ mBluetoothPairingController.mockPbapClientProfile(mPbapLocalBluetoothProfile);
+
+ assertThat(mBluetoothPairingController.isContactSharingVisible()).isTrue();
+ }
+
+ @Test
+ public void isContactSharingVisible_DeviceIsLeAndContactSharingIsNotEnabled_returnsFalse() {
+ // isProfileReady=false, isLeAudio=true, isLeContactSharingEnabled=false
+ mockIsProfileReady(false);
+ mockIsLeAudio(true);
+ mockIsLeContactSharingEnabled(false);
+
+ mBluetoothPairingController = createBluetoothPairingController();
+ mBluetoothPairingController.mockPbapClientProfile(mPbapLocalBluetoothProfile);
+
+ assertThat(mBluetoothPairingController.isContactSharingVisible()).isFalse();
+ }
+
+ private void mockIsProfileReady(boolean mockValue) {
+ when(mPbapLocalBluetoothProfile.isProfileReady()).thenReturn(mockValue);
+ }
+
+ private void mockIsLeAudio(boolean mockValue) {
+ int profileId = BluetoothProfile.HEADSET;
+ if (mockValue) {
+ profileId = BluetoothProfile.LE_AUDIO;
+ }
+ when(mLocalBluetoothProfile.getProfileId()).thenReturn(profileId);
+ }
+
+ private void mockIsLeContactSharingEnabled(boolean mockValue) {
+ android.provider.DeviceConfig.setProperty(
+ android.provider.DeviceConfig.NAMESPACE_SETTINGS_UI,
+ SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED,
+ /* value= */ mockValue ? "true" : "false", true);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
index a53e693976e..874ddf0d158 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
@@ -274,13 +274,12 @@ public class BluetoothPairingDialogTest {
}
@Test
- public void dialogShowsContactSharingCheckboxWhenBluetoothProfileNotReady() {
+ public void contactSharingCheckbox_conditionIsReady_showsUi() {
// set the dialog variant to confirmation/consent
when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
-
// set a fake device name and pretend the profile has not been set up for it
when(controller.getDeviceName()).thenReturn(FAKE_DEVICE_NAME);
- when(controller.isProfileReady()).thenReturn(false);
+ when(controller.isContactSharingVisible()).thenReturn(true);
// build the fragment
BluetoothPairingDialogFragment frag = makeFragment();
@@ -292,13 +291,12 @@ public class BluetoothPairingDialogTest {
}
@Test
- public void dialogHidesContactSharingCheckboxWhenBluetoothProfileIsReady() {
+ public void contactSharingCheckbox_conditionIsNotReady_doesNotShowUi() {
// set the dialog variant to confirmation/consent
when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
-
// set a fake device name and pretend the profile has been set up for it
when(controller.getDeviceName()).thenReturn(FAKE_DEVICE_NAME);
- when(controller.isProfileReady()).thenReturn(true);
+ when(controller.isContactSharingVisible()).thenReturn(false);
// build the fragment
BluetoothPairingDialogFragment frag = makeFragment();
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 1424d0eced1..5122def9843 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -751,6 +751,15 @@ public class NetworkProviderSettingsTest {
assertThat(keys).contains(NetworkProviderSettings.PREF_KEY_WIFI_TOGGLE);
}
+ @Test
+ public void launchConfigNewNetworkFragment_fragmentIsRestricted_ignoreWifiEntry() {
+ mNetworkProviderSettings.mIsRestricted = true;
+
+ mNetworkProviderSettings.launchConfigNewNetworkFragment(mWifiEntry);
+
+ verify(mWifiEntry, never()).getKey();
+ }
+
@Implements(PreferenceFragmentCompat.class)
public static class ShadowPreferenceFragmentCompat {
diff --git a/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java b/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java
deleted file mode 100644
index 31b8e794480..00000000000
--- a/tests/unit/src/com/android/settings/localepicker/LocaleHelperPreferenceControllerTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2022 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.localepicker;
-
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.os.Looper;
-
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.settingslib.widget.FooterPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-public class LocaleHelperPreferenceControllerTest {
- private Context mContext;
- private LocaleHelperPreferenceController mLocaleHelperPreferenceController;
-
- @Mock
- private FooterPreference mMockFooterPreference;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- if (Looper.myLooper() == null) {
- Looper.prepare();
- }
- mContext = ApplicationProvider.getApplicationContext();
- mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(mContext);
- }
-
- @Test
- public void updateFooterPreference_setFooterPreference_hasClickAction() {
- mLocaleHelperPreferenceController.updateFooterPreference(mMockFooterPreference);
- verify(mMockFooterPreference).setLearnMoreText(anyString());
- }
-}