diff --git a/res/xml/zen_mode_visual_interruptions_settings.xml b/res/xml/zen_mode_visual_interruptions_settings.xml index 012dd954a9f..64c79ec6765 100644 --- a/res/xml/zen_mode_visual_interruptions_settings.xml +++ b/res/xml/zen_mode_visual_interruptions_settings.xml @@ -16,7 +16,8 @@ + android:title="@string/zen_mode_visual_interruptions_settings_title" + android:key="zen_mode_visual_interruptions_screen"> controllers = new ArrayList<>(); controllers.add(new ZenModePreferenceController(context)); controllers.add(new EmergencyBroadcastPreferenceController( - context, "cell_broadcast_settings")); + context, KEY_CELL_BROADCAST_SETTINGS)); controllers.add(new VibrateWhenRingPreferenceController(context)); // === Volumes === @@ -236,6 +237,16 @@ public class SoundSettings extends DashboardFragment { return buildPreferenceControllers(context, null /* fragment */, null /* callback */, null /* lifecycle */); } + + @Override + public List getNonIndexableKeys(Context context) { + List keys = super.getNonIndexableKeys(context); + // Duplicate results + keys.add((new ZenModePreferenceController(context)).getPreferenceKey()); + keys.add(ZenModeSettings.KEY_VISUAL_SETTINGS); + keys.add(KEY_CELL_BROADCAST_SETTINGS); + return keys; + } }; // === Work Sound Settings === diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java index bbcaa9c5dfc..854857ada45 100644 --- a/src/com/android/settings/notification/ZenModeSettings.java +++ b/src/com/android/settings/notification/ZenModeSettings.java @@ -53,8 +53,10 @@ import java.util.Map; import java.util.Map.Entry; public class ZenModeSettings extends ZenModeSettingsBase { + + public static final String KEY_VISUAL_SETTINGS = "visual_interruptions_settings"; + private static final String KEY_PRIORITY_SETTINGS = "priority_settings"; - private static final String KEY_VISUAL_SETTINGS = "visual_interruptions_settings"; private static final String KEY_AUTOMATIC_RULES = "automatic_rules"; static final ManagedServiceSettings.Config CONFIG = getConditionProviderConfig(); diff --git a/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java b/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java new file mode 100644 index 00000000000..547117b37a9 --- /dev/null +++ b/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2017 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.notification; + +import android.content.Context; + +import android.media.AudioManager; +import android.os.UserManager; +import com.android.settings.R; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.testutils.XmlTestUtils; +import com.android.settings.testutils.shadow.ShadowAudioHelper; +import com.android.settings.testutils.shadow.ShadowUserManager; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +import java.util.List; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class SoundSettingsTest { + + @Test + @Config( shadows = { + ShadowUserManager.class, + ShadowAudioHelper.class, + }) + public void testNonIndexableKeys_existInXmlLayout() { + final Context context = spy(RuntimeEnvironment.application); + AudioManager audioManager = mock(AudioManager.class); + doReturn(audioManager).when(context).getSystemService(Context.AUDIO_SERVICE); + + UserManager userManager = mock(UserManager.class); + when(userManager.isAdminUser()).thenReturn(false); + doReturn(userManager).when(context).getSystemService(Context.USER_SERVICE); + + final List niks = SoundSettings.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(context); + final int xmlId = (new SoundSettings()).getPreferenceScreenResId(); + final List keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId); + keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, + R.xml.zen_mode_settings)); + // Add keys with hidden resources + keys.add("alarm_volume"); + keys.add("ring_volume"); + keys.add("notification_volume"); + + assertThat(keys).containsAllIn(niks); + } +} \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioHelper.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioHelper.java new file mode 100644 index 00000000000..886f94157ea --- /dev/null +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioHelper.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2017 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.testutils.shadow; + +import android.os.UserHandle; +import android.os.UserManager; +import com.android.settings.notification.AudioHelper; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; + +@Implements(AudioHelper.class) +public class ShadowAudioHelper { + + @Implementation + public boolean isSingleVolume() { + return true; + } + + @Implementation + public int getManagedProfileId(UserManager um) { + return UserHandle.USER_CURRENT; + } +}