1f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang/*
28c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * Copyright (C) 2015 The Android Open Source Project
38c0a4238655990094fe444ac8f7b182963497030Julia Reynolds *
48c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * Licensed under the Apache License, Version 2.0 (the "License");
58c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * you may not use this file except in compliance with the License.
68c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * You may obtain a copy of the License at
78c0a4238655990094fe444ac8f7b182963497030Julia Reynolds *
88c0a4238655990094fe444ac8f7b182963497030Julia Reynolds *      http://www.apache.org/licenses/LICENSE-2.0
98c0a4238655990094fe444ac8f7b182963497030Julia Reynolds *
108c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * Unless required by applicable law or agreed to in writing, software
118c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * distributed under the License is distributed on an "AS IS" BASIS,
128c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * See the License for the specific language governing permissions and
148c0a4238655990094fe444ac8f7b182963497030Julia Reynolds * limitations under the License.
158c0a4238655990094fe444ac8f7b182963497030Julia Reynolds */
168c0a4238655990094fe444ac8f7b182963497030Julia Reynolds
178c0a4238655990094fe444ac8f7b182963497030Julia Reynoldspackage com.android.settings.notification;
188c0a4238655990094fe444ac8f7b182963497030Julia Reynolds
19929bc614de166b5922815fffa9f0ee7ee02ed131Doris Lingimport android.app.Activity;
2002af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynoldsimport android.app.Application;
2102af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynoldsimport android.app.Fragment;
228c0a4238655990094fe444ac8f7b182963497030Julia Reynoldsimport android.content.Context;
234fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlasimport android.content.Intent;
244fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlasimport android.os.Bundle;
254fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlasimport android.os.UserHandle;
26a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhangimport android.provider.SearchIndexableResource;
2783eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhangimport android.support.annotation.VisibleForTesting;
284fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlasimport android.support.v7.preference.Preference;
29f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynoldsimport android.text.TextUtils;
30f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang
31265d3c2a0c36251bf8a9f571d7239b6dd404d942Tamas Berghammerimport com.android.internal.logging.nano.MetricsProto.MetricsEvent;
32661043571c21c39a0bf96bd7842ca62d9675c372Sudheer Shankaimport com.android.settings.R;
334fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlasimport com.android.settings.RingtonePreference;
34f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhangimport com.android.settings.dashboard.DashboardFragment;
35f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynoldsimport com.android.settings.dashboard.SummaryLoader;
365b6478a34950d648f10e04f40c30293a99c5fa29Fan Zhangimport com.android.settings.gestures.SwipeToNotificationPreferenceController;
37a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhangimport com.android.settings.search.BaseSearchIndexProvider;
38a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhangimport com.android.settings.search.Indexable;
391d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settingslib.core.AbstractPreferenceController;
40777ed2535a7fd6f618a0d12f381af99252283574Juan Langimport com.android.settingslib.core.lifecycle.Lifecycle;
41661043571c21c39a0bf96bd7842ca62d9675c372Sudheer Shanka
428c0a4238655990094fe444ac8f7b182963497030Julia Reynoldsimport java.util.ArrayList;
43a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhangimport java.util.Arrays;
44f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhangimport java.util.List;
454bb4886fce74c9e70505dd15425849591727fabbSudheer Shanka
46f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhangpublic class ConfigureNotificationSettings extends DashboardFragment {
478c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    private static final String TAG = "ConfigNotiSettings";
488c0a4238655990094fe444ac8f7b182963497030Julia Reynolds
4983eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    @VisibleForTesting
5083eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    static final String KEY_LOCKSCREEN = "lock_screen_notifications";
5183eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    @VisibleForTesting
5283eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    static final String KEY_LOCKSCREEN_WORK_PROFILE_HEADER =
5383eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang            "lock_screen_notifications_profile_header";
5483eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    @VisibleForTesting
5583eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    static final String KEY_LOCKSCREEN_WORK_PROFILE = "lock_screen_notifications_profile";
5683eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    @VisibleForTesting
5783eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang    static final String KEY_SWIPE_DOWN = "gesture_swipe_down_fingerprint_notifications";
5883eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang
594fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    private static final String KEY_NOTI_DEFAULT_RINGTONE = "notification_default_ringtone";
60c35d9b613e2fac6ecc74a067ebb0fa043c8f85e6Julia Reynolds    private static final String KEY_ZEN_MODE = "zen_mode_notifications";
614fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas
624fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    private RingtonePreference mRequestPreference;
634fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    private static final int REQUEST_CODE = 200;
644fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    private static final String SELECTED_PREFERENCE_KEY = "selected_preference";
65742467ec9f384983f37d9a0e4e9775c27451816bMatthew Fritze
668c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    @Override
676507613ebcd22e4691c2af92a5c161bd327db336Fan Zhang    public int getMetricsCategory() {
683e19fc5600f739e7f172fb9331cfc0f4a884d4ceJason Monk        return MetricsEvent.CONFIGURE_NOTIFICATION;
698c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    }
708c0a4238655990094fe444ac8f7b182963497030Julia Reynolds
718c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    @Override
72f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang    protected String getLogTag() {
73f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang        return TAG;
748c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    }
758c0a4238655990094fe444ac8f7b182963497030Julia Reynolds
768c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    @Override
77f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang    protected int getPreferenceScreenResId() {
78f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang        return R.xml.configure_notification_settings;
798c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    }
808c0a4238655990094fe444ac8f7b182963497030Julia Reynolds
81f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang    @Override
82f7843adabd4e8e1cc84a52721daabefa3a1410fdFan Zhang    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
8302af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        final Activity activity = getActivity();
8402af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        final Application app;
8502af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        if (activity != null) {
8602af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds            app = activity.getApplication();
8702af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        } else {
8802af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds            app = null;
8902af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        }
9002af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        return buildPreferenceControllers(context, getLifecycle(), app, this);
91a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang    }
92a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang
931d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler    private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
9402af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds            Lifecycle lifecycle, Application app, Fragment host) {
951d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler        final List<AbstractPreferenceController> controllers = new ArrayList<>();
96f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang        final PulseNotificationPreferenceController pulseController =
97f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang                new PulseNotificationPreferenceController(context);
98a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang        final LockScreenNotificationPreferenceController lockScreenNotificationController =
9933c493777b36db3d677b051c839047a90ddc2044Fan Zhang                new LockScreenNotificationPreferenceController(context,
10083eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                        KEY_LOCKSCREEN,
10183eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                        KEY_LOCKSCREEN_WORK_PROFILE_HEADER,
10283eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                        KEY_LOCKSCREEN_WORK_PROFILE);
103a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang        if (lifecycle != null) {
104a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang            lifecycle.addObserver(pulseController);
105a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang            lifecycle.addObserver(lockScreenNotificationController);
106a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang        }
10702af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds        controllers.add(new RecentNotifyingAppsPreferenceController(
10802af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds                context, new NotificationBackend(), app, host));
109f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang        controllers.add(pulseController);
110a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang        controllers.add(lockScreenNotificationController);
1114fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        controllers.add(new NotificationRingtonePreferenceController(context) {
1124fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            @Override
1134fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            public String getPreferenceKey() {
1144fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas                return KEY_NOTI_DEFAULT_RINGTONE;
1154fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            }
1164fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas
1174fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        });
118c35d9b613e2fac6ecc74a067ebb0fa043c8f85e6Julia Reynolds        controllers.add(new ZenModePreferenceController(context, lifecycle, KEY_ZEN_MODE));
119f83ce92aaff7148019ae0863e8e60dcddd1d82b5Fan Zhang        return controllers;
1208c0a4238655990094fe444ac8f7b182963497030Julia Reynolds    }
121a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang
1224fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    @Override
1234fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    public boolean onPreferenceTreeClick(Preference preference) {
1244fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        if (preference instanceof RingtonePreference) {
1254fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            mRequestPreference = (RingtonePreference) preference;
1264fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent());
1274fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            startActivityForResultAsUser(
1284fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas                    mRequestPreference.getIntent(),
1294fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas                    REQUEST_CODE,
1304fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas                    null,
1314fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas                    UserHandle.of(mRequestPreference.getUserId()));
1324fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            return true;
1334fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        }
1344fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        return super.onPreferenceTreeClick(preference);
1354fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    }
1364fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas
1374fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    @Override
1384fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    public void onActivityResult(int requestCode, int resultCode, Intent data) {
1394fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        if (mRequestPreference != null) {
1404fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            mRequestPreference.onActivityResult(requestCode, resultCode, data);
1414fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            mRequestPreference = null;
1424fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        }
1434fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    }
1444fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas
1454fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    @Override
1464fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    public void onSaveInstanceState(Bundle outState) {
1474fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        super.onSaveInstanceState(outState);
1484fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        if (mRequestPreference != null) {
1494fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas            outState.putString(SELECTED_PREFERENCE_KEY, mRequestPreference.getKey());
1504fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas        }
1514fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas    }
1524fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas
153a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang    /**
154f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds     * For summary
155f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds     */
156f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds    static class SummaryProvider implements SummaryLoader.SummaryProvider {
157f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds
158f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        private final Context mContext;
159f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        private final SummaryLoader mSummaryLoader;
160f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        private NotificationBackend mBackend;
161f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds
162f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
163f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            mContext = context;
164f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            mSummaryLoader = summaryLoader;
165f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            mBackend = new NotificationBackend();
166f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        }
167f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds
168f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        @VisibleForTesting
169f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        protected void setBackend(NotificationBackend backend) {
170f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            mBackend = backend;
171f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        }
172f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds
173f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        @Override
174f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        public void setListening(boolean listening) {
175f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            if (!listening) {
176f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                return;
177f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            }
178f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            int blockedAppCount = mBackend.getBlockedAppCount();
179f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            if (blockedAppCount == 0) {
180f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                mSummaryLoader.setSummary(this,
181f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                        mContext.getText(R.string.app_notification_listing_summary_zero));
182f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            } else {
183f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                mSummaryLoader.setSummary(this,
184f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                        mContext.getResources().getQuantityString(
185f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                                R.plurals.app_notification_listing_summary_others,
186f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                                blockedAppCount, blockedAppCount));
187f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            }
188f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds        }
189f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds    }
190f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds
191f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY =
192f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            new SummaryLoader.SummaryProviderFactory() {
193f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                @Override
194f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
195f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                        SummaryLoader summaryLoader) {
196f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                    return new ConfigureNotificationSettings.SummaryProvider(
197f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                            activity, summaryLoader);
198f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds                }
199f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds            };
200f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds
201f5d1f165eb65d6e09985d78afc7c25c9f46bca25Julia Reynolds    /**
202a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang     * For Search.
203a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang     */
204a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
205a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang            new BaseSearchIndexProvider() {
206a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                @Override
207a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                public List<SearchIndexableResource> getXmlResourcesToIndex(
208a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                        Context context, boolean enabled) {
209a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                    final SearchIndexableResource sir = new SearchIndexableResource(context);
210a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                    sir.xmlResId = R.xml.configure_notification_settings;
211a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                    return Arrays.asList(sir);
212a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                }
213a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang
214a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                @Override
215aed8994f6f50a6bc0adfaa92b499ebde3a8f2a76Fan Zhang                public List<AbstractPreferenceController> createPreferenceControllers(
21683eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                        Context context) {
21702af3659e00fa4583a88b6756e8dc26fcbfb8765Julia Reynolds                    return buildPreferenceControllers(context, null, null, null);
218a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang                }
2194fe455de578683f079b1d51a1f880651b1bb2ecaAlison Cichowlas
22083eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                @Override
22183eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                public List<String> getNonIndexableKeys(Context context) {
22283eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                    final List<String> keys = super.getNonIndexableKeys(context);
22383eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                    keys.add(KEY_SWIPE_DOWN);
22483eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                    keys.add(KEY_LOCKSCREEN);
22583eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                    keys.add(KEY_LOCKSCREEN_WORK_PROFILE);
22683eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                    keys.add(KEY_LOCKSCREEN_WORK_PROFILE_HEADER);
227c35d9b613e2fac6ecc74a067ebb0fa043c8f85e6Julia Reynolds                    keys.add(KEY_ZEN_MODE);
22883eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                    return keys;
22983eaff5e4aed866a7ffd5a33ebd2e0b2efaaa681Fan Zhang                }
230a25bc6983e14d9bd1175791b28e1086b539b11b7Fan Zhang            };
2318c0a4238655990094fe444ac8f7b182963497030Julia Reynolds}
232