diff --git a/res/layout/shared_data_empty_list_view.xml b/res/layout/shared_data_empty_list_view.xml
deleted file mode 100644
index 1bb338bdaf8..00000000000
--- a/res/layout/shared_data_empty_list_view.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f913b7abe64..6baea65c133 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3032,7 +3032,7 @@
Android version
- Android security patch level
+ Android security update
Model
@@ -7181,8 +7181,6 @@
-
-
diff --git a/src/com/android/settings/development/storage/BlobInfoListView.java b/src/com/android/settings/development/storage/BlobInfoListView.java
index 427e37fbc10..8e312a25579 100644
--- a/src/com/android/settings/development/storage/BlobInfoListView.java
+++ b/src/com/android/settings/development/storage/BlobInfoListView.java
@@ -16,6 +16,7 @@
package com.android.settings.development.storage;
+import android.app.ActionBar;
import android.app.ListActivity;
import android.app.blob.BlobInfo;
import android.app.blob.BlobStoreManager;
@@ -30,7 +31,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
-import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
@@ -41,7 +41,6 @@ import com.android.settings.R;
import java.io.IOException;
import java.util.List;
-// TODO: have this class extend DashboardFragment for consistency
public class BlobInfoListView extends ListActivity {
private static final String TAG = "BlobInfoListView";
@@ -60,6 +59,17 @@ public class BlobInfoListView extends ListActivity {
mAdapter = new BlobListAdapter(this);
setListAdapter(mAdapter);
+
+ final ActionBar actionBar = getActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onNavigateUp() {
+ finish();
+ return true;
}
@Override
@@ -91,14 +101,6 @@ public class BlobInfoListView extends ListActivity {
}
}
- private View getEmptyView() {
- final View emptyView = mInflater.inflate(R.layout.shared_data_empty_list_view,
- (ViewGroup) getListView().getRootView());
- final TextView emptyText = emptyView.findViewById(R.id.empty_view_text);
- emptyText.setText(R.string.shared_data_no_blobs_text);
- return emptyView;
- }
-
private void showDeleteBlobDialog(BlobInfo blob) {
final AlertDialog dialog = new AlertDialog.Builder(mContext)
.setMessage(R.string.shared_data_no_accessors_dialog_text)
@@ -139,7 +141,7 @@ public class BlobInfoListView extends ListActivity {
void updateList(List blobs) {
clear();
if (blobs.isEmpty()) {
- getListView().setEmptyView(getEmptyView());
+ finish();
} else {
addAll(blobs);
}
diff --git a/src/com/android/settings/development/storage/LeaseInfoListView.java b/src/com/android/settings/development/storage/LeaseInfoListView.java
index b9a30427397..ef9e5b813f2 100644
--- a/src/com/android/settings/development/storage/LeaseInfoListView.java
+++ b/src/com/android/settings/development/storage/LeaseInfoListView.java
@@ -16,6 +16,7 @@
package com.android.settings.development.storage;
+import android.app.ActionBar;
import android.app.ListActivity;
import android.app.blob.BlobInfo;
import android.app.blob.BlobStoreManager;
@@ -44,7 +45,6 @@ import com.android.settings.R;
import java.io.IOException;
import java.util.List;
-// TODO: have this class extend DashboardFragment for consistency
public class LeaseInfoListView extends ListActivity {
private static final String TAG = "LeaseInfoListView";
@@ -74,6 +74,17 @@ public class LeaseInfoListView extends ListActivity {
getListView().addHeaderView(getHeaderView());
getListView().addFooterView(getFooterView());
getListView().setClickable(false);
+
+ final ActionBar actionBar = getActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onNavigateUp() {
+ finish();
+ return true;
}
private LinearLayout getHeaderView() {
diff --git a/src/com/android/settings/development/storage/SharedDataPreferenceController.java b/src/com/android/settings/development/storage/SharedDataPreferenceController.java
index 1d5c3e40168..5d94dc81ee8 100644
--- a/src/com/android/settings/development/storage/SharedDataPreferenceController.java
+++ b/src/com/android/settings/development/storage/SharedDataPreferenceController.java
@@ -18,13 +18,20 @@ package com.android.settings.development.storage;
import android.app.blob.BlobStoreManager;
import android.content.Context;
+import android.os.UserHandle;
+import android.util.Log;
import androidx.preference.Preference;
+import com.android.settings.R;
+import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
-public class SharedDataPreferenceController extends DeveloperOptionsPreferenceController {
+import java.io.IOException;
+public class SharedDataPreferenceController extends DeveloperOptionsPreferenceController
+ implements PreferenceControllerMixin {
+ private static final String TAG = "SharedDataPrefCtrl";
private static final String SHARED_DATA = "shared_data";
private BlobStoreManager mBlobStoreManager;
@@ -39,14 +46,18 @@ public class SharedDataPreferenceController extends DeveloperOptionsPreferenceCo
return SHARED_DATA;
}
- @Override
- public boolean isAvailable() {
- return mBlobStoreManager != null;
- }
-
@Override
public void updateState(Preference preference) {
- preference.setEnabled(mBlobStoreManager != null);
- // TODO: update summary to indicate why this preference isn't available
+ try {
+ final boolean showPref = mBlobStoreManager != null
+ && !mBlobStoreManager.queryBlobsForUser(UserHandle.CURRENT).isEmpty();
+ preference.setEnabled(showPref);
+ preference.setSummary(showPref ? R.string.shared_data_summary
+ : R.string.shared_data_no_blobs_text);
+ } catch (IOException e) {
+ Log.e(TAG, "Unable to fetch blobs for current user: " + e.getMessage());
+ preference.setEnabled(false);
+ preference.setSummary(R.string.shared_data_no_blobs_text);
+ }
}
}
diff --git a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
index 728343e9134..bed14a81726 100644
--- a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
+++ b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
@@ -24,7 +24,6 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OV
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_GONE;
import static com.android.settings.widget.RadioButtonPreferenceWithExtraWidget.EXTRA_WIDGET_VISIBILITY_SETTING;
-import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
@@ -273,18 +272,10 @@ public class SystemNavigationGestureSettings extends RadioButtonPickerFragment i
}
private boolean isAnyServiceSupportAccessibilityButton() {
- final AccessibilityManager ams = (AccessibilityManager) getContext().getSystemService(
- Context.ACCESSIBILITY_SERVICE);
- final List services = ams.getEnabledAccessibilityServiceList(
- AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
-
- for (AccessibilityServiceInfo info : services) {
- if ((info.flags & AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON) != 0) {
- return true;
- }
- }
-
- return false;
+ final AccessibilityManager ams = getContext().getSystemService(AccessibilityManager.class);
+ final List targets = ams.getAccessibilityShortcutTargets(
+ AccessibilityManager.ACCESSIBILITY_BUTTON);
+ return !targets.isEmpty();
}
private boolean isNavBarMagnificationEnabled() {
diff --git a/src/com/android/settings/media/MediaOutputIndicatorSlice.java b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
index 79d446e0f57..f336f279295 100644
--- a/src/com/android/settings/media/MediaOutputIndicatorSlice.java
+++ b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
@@ -25,6 +25,7 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.media.session.MediaController;
import android.net.Uri;
+import android.util.Log;
import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice;
@@ -104,6 +105,10 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
@Override
public void onNotifyChange(Intent i) {
+ if (getWorker() == null) {
+ Log.d(TAG, "onNotifyChange: Worker is null");
+ return;
+ }
final MediaController mediaController = getWorker().getActiveLocalMediaController();
final Intent intent = new Intent()
.setPackage(Utils.SETTINGS_PACKAGE_NAME)
diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
index 023f89ec810..13324fcfeeb 100644
--- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
@@ -26,8 +26,6 @@ import android.telephony.TelephonyManager;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
-import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
-
/**
* Preference controller for "System Select"
*/
diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
index 626390a9bbb..2eda9d94598 100644
--- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java
@@ -176,7 +176,11 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon
private void dismissProgressBar() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
- mProgressDialog.dismiss();
+ try {
+ mProgressDialog.dismiss();
+ } catch (IllegalArgumentException e) {
+ // Ignore exception since the dialog will be gone anyway.
+ }
}
}
diff --git a/src/com/android/settings/panel/MediaOutputPanel.java b/src/com/android/settings/panel/MediaOutputPanel.java
index f528cea4f5a..56ed6fbe8ce 100644
--- a/src/com/android/settings/panel/MediaOutputPanel.java
+++ b/src/com/android/settings/panel/MediaOutputPanel.java
@@ -259,7 +259,9 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
@Override
public void onPlaybackStateChanged(PlaybackState state) {
- if (mCallback != null && state.getState() != PlaybackState.STATE_PLAYING) {
+ final int playState = state.getState();
+ if (mCallback != null && (playState == PlaybackState.STATE_STOPPED
+ || playState == PlaybackState.STATE_PAUSED)) {
mCallback.forceClose();
}
}
diff --git a/src/com/android/settings/widget/DisabledCheckBoxPreference.java b/src/com/android/settings/widget/DisabledCheckBoxPreference.java
index 15c17dc88dd..d2a00587989 100644
--- a/src/com/android/settings/widget/DisabledCheckBoxPreference.java
+++ b/src/com/android/settings/widget/DisabledCheckBoxPreference.java
@@ -18,6 +18,7 @@ package com.android.settings.widget;
import android.content.Context;
import android.content.res.TypedArray;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
@@ -95,6 +96,7 @@ public class DisabledCheckBoxPreference extends CheckBoxPreference {
if (title != null) {
title.setSingleLine(false);
title.setMaxLines(2);
+ title.setEllipsize(TextUtils.TruncateAt.END);
}
}
diff --git a/src/com/android/settings/wifi/WifiSettings2.java b/src/com/android/settings/wifi/WifiSettings2.java
index e791df83a29..30d5ad08da4 100644
--- a/src/com/android/settings/wifi/WifiSettings2.java
+++ b/src/com/android/settings/wifi/WifiSettings2.java
@@ -770,9 +770,9 @@ public class WifiSettings2 extends RestrictedSettingsFragment
pref.setOrder(index++);
pref.refresh();
- if (wifiEntry.canManageSubscription()) {
+ if (wifiEntry.getHelpUriString() != null) {
pref.setOnButtonClickListener(preference -> {
- openSubscriptionHelpPage();
+ openSubscriptionHelpPage(wifiEntry);
});
}
mWifiEntryPreferenceCategory.addPreference(pref);
@@ -1111,8 +1111,8 @@ public class WifiSettings2 extends RestrictedSettingsFragment
}
@VisibleForTesting
- void openSubscriptionHelpPage() {
- final Intent intent = getHelpIntent(getContext());
+ void openSubscriptionHelpPage(WifiEntry wifiEntry) {
+ final Intent intent = getHelpIntent(getContext(), wifiEntry.getHelpUriString());
if (intent != null) {
try {
startActivityForResult(intent, MANAGE_SUBSCRIPTION);
@@ -1123,10 +1123,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
}
@VisibleForTesting
- Intent getHelpIntent(Context context) {
- return HelpUtils.getHelpIntent(
- context,
- context.getString(R.string.help_url_manage_wifi_subscription),
- context.getClass().getName());
+ Intent getHelpIntent(Context context, String helpUrlString) {
+ return HelpUtils.getHelpIntent(context, helpUrlString, context.getClass().getName());
}
}
diff --git a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java
index 3b735fa7214..1d1c80193cf 100644
--- a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java
+++ b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2.java
@@ -17,6 +17,7 @@
package com.android.settings.wifi.savedaccesspoints2;
import android.content.Context;
+import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -83,14 +84,35 @@ public class SavedAccessPointsPreferenceController2 extends BasePreferenceContro
return false;
}
+ /**
+ * mPreferenceGroup is not in a RecyclerView. To keep TalkBack focus, this method should not
+ * mPreferenceGroup.removeAll() then mPreferenceGroup.addPreference for mWifiEntries.
+ */
private void updatePreference() {
- mPreferenceGroup.removeAll();
- for (WifiEntry wifiEntry : mWifiEntries) {
- final WifiEntryPreference preference = new WifiEntryPreference(mContext, wifiEntry);
- preference.setKey(wifiEntry.getKey());
- preference.setOnPreferenceClickListener(this);
+ // Remove the Preference of removed WifiEntry.
+ final List removedPreferenceKeys = new ArrayList<>();
+ final int preferenceCount = mPreferenceGroup.getPreferenceCount();
+ for (int i = 0; i < preferenceCount; i++) {
+ final String key = mPreferenceGroup.getPreference(i).getKey();
+ if (mWifiEntries.stream().filter(wifiEntry ->
+ TextUtils.equals(key, wifiEntry.getKey())).count() == 0) {
+ removedPreferenceKeys.add(key);
+ }
+ }
+ for (String removedPreferenceKey : removedPreferenceKeys) {
+ mPreferenceGroup.removePreference(
+ mPreferenceGroup.findPreference(removedPreferenceKey));
+ }
- mPreferenceGroup.addPreference(preference);
+ // Add the Preference of new added WifiEntry.
+ for (WifiEntry wifiEntry : mWifiEntries) {
+ if (mPreferenceGroup.findPreference(wifiEntry.getKey()) == null) {
+ final WifiEntryPreference preference = new WifiEntryPreference(mContext, wifiEntry);
+ preference.setKey(wifiEntry.getKey());
+ preference.setOnPreferenceClickListener(this);
+
+ mPreferenceGroup.addPreference(preference);
+ }
}
}
}
diff --git a/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java
index 86bb4a70883..f11fb399689 100644
--- a/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java
@@ -22,8 +22,11 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.blob.BlobInfo;
import android.app.blob.BlobStoreManager;
+import android.app.blob.LeaseInfo;
import android.content.Context;
+import android.os.UserHandle;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -38,6 +41,10 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.util.ReflectionHelpers;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
// TODO: add more detailed tests for the shared data screens
@RunWith(RobolectricTestRunner.class)
public class SharedDataPreferenceControllerTest {
@@ -63,8 +70,11 @@ public class SharedDataPreferenceControllerTest {
}
@Test
- public void updateState_BlobManagerIsNotNull_preferenceIsEnabled() {
+ public void updateState_BlobManagerIsNotNullAndBlobsExist_preferenceIsEnabled()
+ throws IOException {
ReflectionHelpers.setField(mController, "mBlobStoreManager", mBlobStoreManager);
+ when(mBlobStoreManager.queryBlobsForUser(UserHandle.CURRENT))
+ .thenReturn(generateBlobList());
mController.updateState(mPreference);
verify(mPreference).setEnabled(true);
@@ -72,11 +82,38 @@ public class SharedDataPreferenceControllerTest {
.isEqualTo(mContext.getString(R.string.shared_data_summary));
}
+ @Test
+ public void updateState_BlobManagerIsNotNullButNoBlobsExist_preferenceIsDisabled() {
+ ReflectionHelpers.setField(mController, "mBlobStoreManager", mBlobStoreManager);
+ mController.updateState(mPreference);
+
+ verify(mPreference).setEnabled(false);
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.shared_data_no_blobs_text));
+ }
+
@Test
public void updateState_BlobManagerIsNull_preferenceIsDisabled() {
ReflectionHelpers.setField(mController, "mBlobStoreManager", null);
mController.updateState(mPreference);
verify(mPreference).setEnabled(false);
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.shared_data_no_blobs_text));
+ }
+
+ private List generateBlobList() {
+ LeaseInfo one = new LeaseInfo("com.google.android.photos",
+ System.currentTimeMillis(), -1, "test description");
+ LeaseInfo two = new LeaseInfo("com.google.android.drive",
+ System.currentTimeMillis(), -1, "test description 2");
+
+ List accessors = new ArrayList<>();
+ accessors.add(one);
+ accessors.add(two);
+
+ final List tmp = new ArrayList<>();
+ tmp.add(new BlobInfo(10, System.currentTimeMillis(), "testing blob 1", accessors));
+ return tmp;
}
}
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java
index 8717b6f357e..55cc4cd57a3 100644
--- a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java
@@ -21,7 +21,9 @@ import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDIC
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -190,6 +192,14 @@ public class MediaOutputIndicatorSliceTest {
assertThat(metadata.isErrorSlice()).isTrue();
}
+ @Test
+ public void onNotifyChange_noWorker_doNothing() {
+ sMediaOutputIndicatorWorker = null;
+ mMediaOutputIndicatorSlice.onNotifyChange(new Intent());
+
+ verify(mContext, never()).startActivity(any());
+ }
+
@Test
public void onNotifyChange_withActiveLocalMedia_verifyIntentExtra() {
when(mMediaController.getSessionToken()).thenReturn(mToken);
diff --git a/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java b/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java
index 0f30c200bf1..e0b926b8a68 100644
--- a/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java
+++ b/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java
@@ -295,4 +295,19 @@ public class MediaOutputPanelTest {
verify(mCallback).forceClose();
}
+
+ @Test
+ public void onPlaybackStateChanged_stateFromPlayingToPaused_verifyCallForceClose() {
+ mPanel.onStart();
+ verify(mMediaController).registerCallback(mControllerCbs.capture());
+ final MediaController.Callback controllerCallbacks = mControllerCbs.getValue();
+ when(mPlaybackState.getState()).thenReturn(PlaybackState.STATE_PLAYING);
+ controllerCallbacks.onPlaybackStateChanged(mPlaybackState);
+ verify(mCallback, never()).forceClose();
+
+ when(mPlaybackState.getState()).thenReturn(PlaybackState.STATE_PAUSED);
+ controllerCallbacks.onPlaybackStateChanged(mPlaybackState);
+
+ verify(mCallback).forceClose();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java
index b259cc39b4f..b2a28db8dce 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java
@@ -74,6 +74,7 @@ import org.robolectric.shadows.ShadowToast;
public class WifiSettings2Test {
private static final int NUM_NETWORKS = 4;
+ private static final String FAKE_URI_STRING = "fakeuri";
@Mock
private PowerManager mPowerManager;
@@ -281,10 +282,12 @@ public class WifiSettings2Test {
@Test
public void openSubscriptionHelpPage_shouldCallStartActivityForResult() {
- doReturn(new Intent()).when(mWifiSettings2).getHelpIntent(mContext);
+ doReturn(new Intent()).when(mWifiSettings2).getHelpIntent(mContext, FAKE_URI_STRING);
doNothing().when(mWifiSettings2).startActivityForResult(any(Intent.class), anyInt());
+ final WifiEntry mockWifiEntry = mock(WifiEntry.class);
+ when(mockWifiEntry.getHelpUriString()).thenReturn(FAKE_URI_STRING);
- mWifiSettings2.openSubscriptionHelpPage();
+ mWifiSettings2.openSubscriptionHelpPage(mockWifiEntry);
verify(mWifiSettings2, times(1)).startActivityForResult(any(), anyInt());
}
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
index d7b79b1e5a9..207a2318c61 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
@@ -22,7 +22,6 @@ import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -43,9 +42,6 @@ import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowDisclaimerItemFactory;
import com.android.settings.testutils.shadow.ShadowFragment;
-import java.util.ArrayList;
-import java.util.List;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -53,9 +49,12 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowDisclaimerItemFactory.class, ShadowFragment.class})
diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java
index f50021ba33e..acc6543f8c3 100644
--- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsPreferenceController2Test.java
@@ -103,4 +103,20 @@ public class SavedAccessPointsPreferenceController2Test {
assertThat(prefs.size()).isEqualTo(1);
assertThat(prefs.get(0).getTitle()).isEqualTo(title);
}
+
+ @Test
+ public void displayPreference_noAccessPoint_shouldRemoveIt() {
+ final String title = "ssid_title";
+ final String key = "key";
+ final WifiEntry mockWifiEntry = mock(WifiEntry.class);
+ when(mockWifiEntry.getTitle()).thenReturn(title);
+ when(mockWifiEntry.getKey()).thenReturn(key);
+ final WifiEntryPreference preference = new WifiEntryPreference(mContext, mockWifiEntry);
+ preference.setKey(key);
+ mPreferenceCategory.addPreference(preference);
+
+ mController.displayPreference(mPreferenceScreen, new ArrayList<>());
+
+ assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(0);
+ }
}