AppStateNotificationBridge.java revision 67cd6ab93a526fe65877743e458590f4e6f187ee
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