1584b2b2bc17a4ccf42952b188722de1091c101beJason Monk/* 2584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * Copyright (C) 2015 The Android Open Source Project 3584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * 4584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 5584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * you may not use this file except in compliance with the License. 6584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * You may obtain a copy of the License at 7584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * 8584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * http://www.apache.org/licenses/LICENSE-2.0 9584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * 10584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * Unless required by applicable law or agreed to in writing, software 11584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * distributed under the License is distributed on an "AS IS" BASIS, 12584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * See the License for the specific language governing permissions and 14584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * limitations under the License. 15584b2b2bc17a4ccf42952b188722de1091c101beJason Monk */ 16584b2b2bc17a4ccf42952b188722de1091c101beJason Monkpackage com.android.settings.applications; 17584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 18584b2b2bc17a4ccf42952b188722de1091c101beJason Monkimport android.content.pm.PackageManager; 19584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 20584b2b2bc17a4ccf42952b188722de1091c101beJason Monkimport com.android.settings.notification.NotificationBackend; 21584b2b2bc17a4ccf42952b188722de1091c101beJason Monkimport com.android.settings.notification.NotificationBackend.AppRow; 2267cd6ab93a526fe65877743e458590f4e6f187eeTony Mantlerimport com.android.settingslib.applications.ApplicationsState; 2367cd6ab93a526fe65877743e458590f4e6f187eeTony Mantlerimport com.android.settingslib.applications.ApplicationsState.AppEntry; 2467cd6ab93a526fe65877743e458590f4e6f187eeTony Mantlerimport com.android.settingslib.applications.ApplicationsState.AppFilter; 25584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 26584b2b2bc17a4ccf42952b188722de1091c101beJason Monkimport java.util.ArrayList; 27584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 28584b2b2bc17a4ccf42952b188722de1091c101beJason Monk/** 29584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * Connects the info provided by ApplicationsState and the NotificationBackend. 30584b2b2bc17a4ccf42952b188722de1091c101beJason Monk * Also provides app filters that can use the notification data. 31584b2b2bc17a4ccf42952b188722de1091c101beJason Monk */ 32d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monkpublic class AppStateNotificationBridge extends AppStateBaseBridge { 33584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 34584b2b2bc17a4ccf42952b188722de1091c101beJason Monk private final NotificationBackend mNotifBackend; 35584b2b2bc17a4ccf42952b188722de1091c101beJason Monk private final PackageManager mPm; 36584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 37584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public AppStateNotificationBridge(PackageManager pm, ApplicationsState appState, 38d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk Callback callback, NotificationBackend notifBackend) { 39d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk super(appState, callback); 40584b2b2bc17a4ccf42952b188722de1091c101beJason Monk mPm = pm; 41584b2b2bc17a4ccf42952b188722de1091c101beJason Monk mNotifBackend = notifBackend; 42584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 43584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 44584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 45d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk protected void loadAllExtraInfo() { 46d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk ArrayList<AppEntry> apps = mAppSession.getAllApps(); 47d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk final int N = apps.size(); 48d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk for (int i = 0; i < N; i++) { 49d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk AppEntry app = apps.get(i); 50d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk app.extraInfo = mNotifBackend.loadAppRow(mPm, app.info); 51584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 52584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 53584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 54d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk @Override 55d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk protected void updateExtraInfo(AppEntry app, String pkg, int uid) { 56d8da51ccfecf16f2c06f788e6bcbc232d1f0cb32Jason Monk app.extraInfo = mNotifBackend.loadAppRow(mPm, app.info); 57584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 58584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 59584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public static final AppFilter FILTER_APP_NOTIFICATION_BLOCKED = new AppFilter() { 60584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 61584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public void init() { 62584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 63584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 64584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 65584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public boolean filterApp(AppEntry info) { 66584b2b2bc17a4ccf42952b188722de1091c101beJason Monk return info.extraInfo != null && ((AppRow) info.extraInfo).banned; 67584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 68584b2b2bc17a4ccf42952b188722de1091c101beJason Monk }; 69584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 70584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public static final AppFilter FILTER_APP_NOTIFICATION_PRIORITY = new AppFilter() { 71584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 72584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public void init() { 73584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 74584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 75584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 76584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public boolean filterApp(AppEntry info) { 77584b2b2bc17a4ccf42952b188722de1091c101beJason Monk return info.extraInfo != null && ((AppRow) info.extraInfo).priority; 78584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 79584b2b2bc17a4ccf42952b188722de1091c101beJason Monk }; 80584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 81584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public static final AppFilter FILTER_APP_NOTIFICATION_SENSITIVE = new AppFilter() { 82584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 83584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public void init() { 84584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 85584b2b2bc17a4ccf42952b188722de1091c101beJason Monk 86584b2b2bc17a4ccf42952b188722de1091c101beJason Monk @Override 87584b2b2bc17a4ccf42952b188722de1091c101beJason Monk public boolean filterApp(AppEntry info) { 88584b2b2bc17a4ccf42952b188722de1091c101beJason Monk return info.extraInfo != null && ((AppRow) info.extraInfo).sensitive; 89584b2b2bc17a4ccf42952b188722de1091c101beJason Monk } 90584b2b2bc17a4ccf42952b188722de1091c101beJason Monk }; 9125f9e326ab65e5298737721e959b22aea68148f1Jason Monk 9225f9e326ab65e5298737721e959b22aea68148f1Jason Monk public static final AppFilter FILTER_APP_NOTIFICATION_NO_PEEK = new AppFilter() { 9325f9e326ab65e5298737721e959b22aea68148f1Jason Monk @Override 9425f9e326ab65e5298737721e959b22aea68148f1Jason Monk public void init() { 9525f9e326ab65e5298737721e959b22aea68148f1Jason Monk } 9625f9e326ab65e5298737721e959b22aea68148f1Jason Monk 9725f9e326ab65e5298737721e959b22aea68148f1Jason Monk @Override 9825f9e326ab65e5298737721e959b22aea68148f1Jason Monk public boolean filterApp(AppEntry info) { 9925f9e326ab65e5298737721e959b22aea68148f1Jason Monk return info.extraInfo != null && !((AppRow) info.extraInfo).peekable; 10025f9e326ab65e5298737721e959b22aea68148f1Jason Monk } 10125f9e326ab65e5298737721e959b22aea68148f1Jason Monk }; 102584b2b2bc17a4ccf42952b188722de1091c101beJason Monk} 103