Remove search duplicates for Wifi and Bluetooth

Remove the master switch duplicates between the switch
and their targets. Only show the actual Wifi and Bluetooth
settings as search results.

Bug: 33701673
Test: make RunSettingsRoboTests
Change-Id: I226cc8db40a308bd9bcfacdd4fc6ae709fb809c5
This commit is contained in:
Matthew Fritze
2017-04-13 13:08:33 -07:00
parent 32d3d383cb
commit 2caaa7420d
8 changed files with 55 additions and 21 deletions

View File

@@ -96,9 +96,7 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
keys.add(NfcPreferenceController.KEY_TOGGLE_NFC); keys.add(NfcPreferenceController.KEY_TOGGLE_NFC);
keys.add(NfcPreferenceController.KEY_ANDROID_BEAM_SETTINGS); keys.add(NfcPreferenceController.KEY_ANDROID_BEAM_SETTINGS);
} }
if (!pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
keys.add(BluetoothMasterSwitchPreferenceController.KEY_TOGGLE_BLUETOOTH); keys.add(BluetoothMasterSwitchPreferenceController.KEY_TOGGLE_BLUETOOTH);
}
return keys; return keys;
} }
}; };

View File

@@ -75,6 +75,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
private static final String KEY_LIMIT_SUMMARY = "limit_summary"; private static final String KEY_LIMIT_SUMMARY = "limit_summary";
private static final String KEY_RESTRICT_BACKGROUND = "restrict_background"; private static final String KEY_RESTRICT_BACKGROUND = "restrict_background";
private static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions"; private static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions";
private static final String KEY_WIFI_USAGE_TITLE = "wifi_category";
private DataUsageController mDataUsageController; private DataUsageController mDataUsageController;
private DataUsageInfoController mDataInfoController; private DataUsageInfoController mDataInfoController;
@@ -491,6 +492,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
if (hasMobileData) { if (hasMobileData) {
keys.add(KEY_RESTRICT_BACKGROUND); keys.add(KEY_RESTRICT_BACKGROUND);
} }
keys.add(KEY_WIFI_USAGE_TITLE);
return keys; return keys;
} }

View File

@@ -142,5 +142,13 @@ public class NetworkDashboardFragment extends DashboardFragment implements
sir.xmlResId = R.xml.network_and_internet; sir.xmlResId = R.xml.network_and_internet;
return Arrays.asList(sir); return Arrays.asList(sir);
} }
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = new ArrayList<>();
// Remove master switch as a result
keys.add(WifiMasterSwitchPreferenceController.KEY_TOGGLE_WIFI);
return keys;
}
}; };
} }

View File

@@ -33,7 +33,7 @@ public class WifiMasterSwitchPreferenceController extends PreferenceController
implements SummaryUpdater.OnSummaryChangeListener, implements SummaryUpdater.OnSummaryChangeListener,
LifecycleObserver, OnResume, OnPause, OnStart, OnStop { LifecycleObserver, OnResume, OnPause, OnStart, OnStop {
private static final String KEY_TOGGLE_WIFI = "toggle_wifi"; public static final String KEY_TOGGLE_WIFI = "toggle_wifi";
private MasterSwitchPreference mWifiPreference; private MasterSwitchPreference mWifiPreference;
private WifiEnabler mWifiEnabler; private WifiEnabler mWifiEnabler;

View File

@@ -23,6 +23,7 @@ import com.android.settings.bluetooth.BluetoothMasterSwitchPreferenceController;
import com.android.settings.nfc.NfcPreferenceController; import com.android.settings.nfc.NfcPreferenceController;
import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.CategoryKey;
import org.junit.Before; import org.junit.Before;
@@ -30,13 +31,12 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.List; import java.util.List;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@@ -92,20 +92,15 @@ public class ConnectedDeviceDashboardFragmentTest {
} }
@Test @Test
public void testSearchIndexProvider_NoBluetooth_KeyAdded() { public void testNonIndexableKeys_existInXmlLayout() {
when(mManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(false); final Context context = RuntimeEnvironment.application;
final List<String> keys = mFragment.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); when(mManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(false);
final List<String> niks = ConnectedDeviceDashboardFragment.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(context);
final int xmlId = (new ConnectedDeviceDashboardFragment()).getPreferenceScreenResId();
assertThat(keys).isNotNull(); final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
assertThat(keys).contains(BluetoothMasterSwitchPreferenceController.KEY_TOGGLE_BLUETOOTH);
}
@Test assertThat(keys).containsAllIn(niks);
public void testSearchIndexProvider_Bluetooth_KeyNotAdded() {
when(mManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)).thenReturn(true);
final List<String> keys = mFragment.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
assertThat(keys).isNotNull();
assertThat(keys).doesNotContain(BluetoothMasterSwitchPreferenceController.KEY_TOGGLE_BLUETOOTH);
} }
} }

View File

@@ -25,6 +25,8 @@ import android.net.wifi.WifiManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.NetworkPolicyEditor;
import org.junit.Before; import org.junit.Before;
@@ -32,11 +34,13 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
@@ -143,4 +147,17 @@ public class DataUsageSummaryTest {
policy.metered = false; policy.metered = false;
assertThat(dataUsageSummary.isMetered(config)).isFalse(); assertThat(dataUsageSummary.isMetered(config)).isFalse();
} }
@Test
public void testNonIndexableKeys_existInXmlLayout() {
final Context context = RuntimeEnvironment.application;
final List<String> niks = DataUsageSummary.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(context);
final List<String> keys = new ArrayList<>();
keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_wifi));
keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage));
assertThat(keys).containsAllIn(niks);
}
} }

View File

@@ -15,16 +15,20 @@
*/ */
package com.android.settings.network; package com.android.settings.network;
import android.content.Context;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import android.view.Menu; import android.view.Menu;
import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.CategoryKey;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
@@ -74,4 +78,15 @@ public class NetworkDashboardFragmentTest {
verify(resetController).buildMenuItem(any(Menu.class)); verify(resetController).buildMenuItem(any(Menu.class));
} }
@Test
public void testNonIndexableKeys_existInXmlLayout() {
final Context context = RuntimeEnvironment.application;
final List<String> niks = NetworkDashboardFragment.SEARCH_INDEX_DATA_PROVIDER
.getNonIndexableKeys(context);
final int xmlId = (new NetworkDashboardFragment()).getPreferenceScreenResId();
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
assertThat(keys).containsAllIn(niks);
}
} }

View File

@@ -53,5 +53,4 @@ public class XmlTestUtils {
return keys; return keys;
} }
} }