OSDN Git Service

Suppress some search results
authorFan Zhang <zhfan@google.com>
Fri, 11 Aug 2017 01:15:37 +0000 (18:15 -0700)
committerFan Zhang <zhfan@google.com>
Wed, 16 Aug 2017 22:25:29 +0000 (22:25 +0000)
Fixes: 62137086
Test: reindex search
Test: robotests
Change-Id: I12e873edade80e4c0007d10352fb037b3230c643

src/com/android/settings/notification/ConfigureNotificationSettings.java
src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
tests/robotests/src/com/android/settings/notification/ConfigureNotificationSettingsTest.java [new file with mode: 0644]
tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java

index 2b1ecc4..2533466 100644 (file)
@@ -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<AbstractPreferenceController> getPreferenceControllers(Context context) {
+                public List<AbstractPreferenceController> getPreferenceControllers(
+                        Context context) {
                     return buildPreferenceControllers(context, null);
                 }
 
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    final List<String> 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;
+                }
             };
 }
index db46ef1..272d504 100644 (file)
@@ -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 (file)
index 0000000..8cf8f83
--- /dev/null
@@ -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<String> 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);
+    }
+}
index f85a874..271ffa8 100644 (file)
@@ -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;
+    }
 }