From 83eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 10 Aug 2017 18:15:37 -0700 Subject: [PATCH] Suppress some search results Fixes: 62137086 Test: reindex search Test: robotests Change-Id: I12e873edade80e4c0007d10352fb037b3230c643 --- .../ConfigureNotificationSettings.java | 31 ++++++++-- ...LockScreenNotificationPreferenceController.java | 11 ++-- .../ConfigureNotificationSettingsTest.java | 66 ++++++++++++++++++++++ .../settings/testutils/shadow/ShadowUtils.java | 7 +++ 4 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/notification/ConfigureNotificationSettingsTest.java diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java index 2b1ecc456b..253346683c 100644 --- a/src/com/android/settings/notification/ConfigureNotificationSettings.java +++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java @@ -22,8 +22,8 @@ import android.content.Intent; import android.os.Bundle; import android.os.UserHandle; import android.provider.SearchIndexableResource; +import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; -import android.util.Log; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -44,7 +44,16 @@ import java.util.List; public class ConfigureNotificationSettings extends DashboardFragment { private static final String TAG = "ConfigNotiSettings"; - private static final String KEY_SWIPE_DOWN = "gesture_swipe_down_fingerprint_notifications"; + @VisibleForTesting + static final String KEY_LOCKSCREEN = "lock_screen_notifications"; + @VisibleForTesting + static final String KEY_LOCKSCREEN_WORK_PROFILE_HEADER = + "lock_screen_notifications_profile_header"; + @VisibleForTesting + static final String KEY_LOCKSCREEN_WORK_PROFILE = "lock_screen_notifications_profile"; + @VisibleForTesting + static final String KEY_SWIPE_DOWN = "gesture_swipe_down_fingerprint_notifications"; + private static final String KEY_NOTI_DEFAULT_RINGTONE = "notification_default_ringtone"; private RingtonePreference mRequestPreference; @@ -80,9 +89,9 @@ public class ConfigureNotificationSettings extends DashboardFragment { new PulseNotificationPreferenceController(context); final LockScreenNotificationPreferenceController lockScreenNotificationController = new LockScreenNotificationPreferenceController(context, - "lock_screen_notifications", - "lock_screen_notifications_profile_header", - "lock_screen_notifications_profile"); + KEY_LOCKSCREEN, + KEY_LOCKSCREEN_WORK_PROFILE_HEADER, + KEY_LOCKSCREEN_WORK_PROFILE); if (lifecycle != null) { lifecycle.addObserver(pulseController); lifecycle.addObserver(lockScreenNotificationController); @@ -156,9 +165,19 @@ public class ConfigureNotificationSettings extends DashboardFragment { } @Override - public List getPreferenceControllers(Context context) { + public List getPreferenceControllers( + Context context) { return buildPreferenceControllers(context, null); } + @Override + public List getNonIndexableKeys(Context context) { + final List keys = super.getNonIndexableKeys(context); + keys.add(KEY_SWIPE_DOWN); + keys.add(KEY_LOCKSCREEN); + keys.add(KEY_LOCKSCREEN_WORK_PROFILE); + keys.add(KEY_LOCKSCREEN_WORK_PROFILE_HEADER); + return keys; + } }; } diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java index db46ef1877..272d504d62 100644 --- a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java +++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java @@ -16,6 +16,9 @@ package com.android.settings.notification; +import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS; +import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS; + import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; @@ -41,9 +44,6 @@ import com.android.settingslib.core.lifecycle.events.OnResume; import java.util.ArrayList; -import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS; -import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS; - public class LockScreenNotificationPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause { @@ -79,11 +79,10 @@ public class LockScreenNotificationPreferenceController extends AbstractPreferen mProfileChallengeUserId = Utils.getManagedProfileId( UserManager.get(context), UserHandle.myUserId()); final LockPatternUtils utils = new LockPatternUtils(context); - final boolean isUnified = - !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId); mSecure = utils.isSecure(UserHandle.myUserId()); mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL) - && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure)); + && (utils.isSecure(mProfileChallengeUserId) + || (!utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId) && mSecure)); } @Override diff --git a/tests/robotests/src/com/android/settings/notification/ConfigureNotificationSettingsTest.java b/tests/robotests/src/com/android/settings/notification/ConfigureNotificationSettingsTest.java new file mode 100644 index 0000000000..8cf8f83853 --- /dev/null +++ b/tests/robotests/src/com/android/settings/notification/ConfigureNotificationSettingsTest.java @@ -0,0 +1,66 @@ +/* + * 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 static com.android.settings.notification.ConfigureNotificationSettings.KEY_LOCKSCREEN; +import static com.android.settings.notification.ConfigureNotificationSettings + .KEY_LOCKSCREEN_WORK_PROFILE; +import static com.android.settings.notification.ConfigureNotificationSettings + .KEY_LOCKSCREEN_WORK_PROFILE_HEADER; +import static com.android.settings.notification.ConfigureNotificationSettings.KEY_SWIPE_DOWN; +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; + +import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.ShadowLockPatternUtils; +import com.android.settings.testutils.shadow.ShadowUtils; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +import java.util.List; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class ConfigureNotificationSettingsTest { + + private Context mContext; + + @Before + public void setUp() { + mContext = RuntimeEnvironment.application; + } + + @Test + @Config(shadows = { + ShadowUtils.class, + ShadowLockPatternUtils.class + }) + public void getNonIndexableKeys_shouldContainLockScreenPrefs() { + final List keys = ConfigureNotificationSettings.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext); + + assertThat(keys).containsAllOf( + KEY_SWIPE_DOWN, KEY_LOCKSCREEN, KEY_LOCKSCREEN_WORK_PROFILE, + KEY_LOCKSCREEN_WORK_PROFILE_HEADER); + } +} diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java index f85a874579..271ffa8e8e 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java @@ -18,6 +18,8 @@ package com.android.settings.testutils.shadow; import android.content.ComponentName; import android.content.Context; +import android.os.UserHandle; +import android.os.UserManager; import com.android.settings.Utils; import com.android.settings.password.IFingerprintManager; @@ -87,4 +89,9 @@ public class ShadowUtils { public static ComponentName getDeviceOwnerComponent(Context context) { return sDeviceOwnerComponentName; } + + @Implementation + public static int getManagedProfileId(UserManager um, int parentUserId) { + return UserHandle.USER_NULL; + } } -- 2.11.0