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_ANDROID_BEAM_SETTINGS);
}
if (!pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
keys.add(BluetoothMasterSwitchPreferenceController.KEY_TOGGLE_BLUETOOTH);
}
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_RESTRICT_BACKGROUND = "restrict_background";
private static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions";
private static final String KEY_WIFI_USAGE_TITLE = "wifi_category";
private DataUsageController mDataUsageController;
private DataUsageInfoController mDataInfoController;
@@ -491,6 +492,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
if (hasMobileData) {
keys.add(KEY_RESTRICT_BACKGROUND);
}
keys.add(KEY_WIFI_USAGE_TITLE);
return keys;
}

View File

@@ -142,5 +142,13 @@ public class NetworkDashboardFragment extends DashboardFragment implements
sir.xmlResId = R.xml.network_and_internet;
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,
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 WifiEnabler mWifiEnabler;

View File

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

View File

@@ -25,6 +25,8 @@ import android.net.wifi.WifiManager;
import com.android.settings.R;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settingslib.NetworkPolicyEditor;
import org.junit.Before;
@@ -32,11 +34,13 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
@@ -143,4 +147,17 @@ public class DataUsageSummaryTest {
policy.metered = false;
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;
import android.content.Context;
import android.provider.SearchIndexableResource;
import android.view.Menu;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.testutils.XmlTestUtils;
import com.android.settingslib.drawer.CategoryKey;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers;
@@ -74,4 +78,15 @@ public class NetworkDashboardFragmentTest {
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;
}
}