1e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds/*
2e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Copyright (C) 2016 The Android Open Source Project
3e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds *
4e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Licensed under the Apache License, Version 2.0 (the "License");
5e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * you may not use this file except in compliance with the License.
6e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * You may obtain a copy of the License at
7e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds *
8e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds *      http://www.apache.org/licenses/LICENSE-2.0
9e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds *
10e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Unless required by applicable law or agreed to in writing, software
11e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * distributed under the License is distributed on an "AS IS" BASIS,
12e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * See the License for the specific language governing permissions and
14e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * limitations under the License.
15e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds */
16e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldspackage android.service.notification;
17e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
18e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.annotation.SystemApi;
19e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.net.Uri;
20e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.os.Bundle;
21e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.os.Parcel;
22e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldsimport android.os.Parcelable;
23e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
24e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds/**
25e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * Ranking updates from the Ranker.
26e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds *
27e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds * @hide
28e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds */
29e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds@SystemApi
30e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynoldspublic final class Adjustment implements Parcelable {
31e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    private final String mPackage;
32e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    private final String mKey;
33e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    private final int mImportance;
34e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    private final CharSequence mExplanation;
35e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    private final Uri mReference;
36e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    private final Bundle mSignals;
37eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds    private final int mUser;
38e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
39e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public static final String GROUP_KEY_OVERRIDE_KEY = "group_key_override";
40e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public static final String NEEDS_AUTOGROUPING_KEY = "autogroup_needed";
41e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
42e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    /**
43e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * Create a notification adjustment.
44e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     *
45e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * @param pkg The package of the notification.
46e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * @param key The notification key.
47e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * @param importance The recommended importance of the notification.
48e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * @param signals A bundle of signals that should inform notification grouping and ordering.
49e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * @param explanation A human-readable justification for the adjustment.
50e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     * @param reference A reference to an external object that augments the
51e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     *                  explanation, such as a
52e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     *                  {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI},
53e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     *                  or null.
54e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds     */
55e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public Adjustment(String pkg, String key, int importance, Bundle signals,
56eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds            CharSequence explanation, Uri reference, int user) {
57e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mPackage = pkg;
58e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mKey = key;
59e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mImportance = importance;
60e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mSignals = signals;
61e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mExplanation = explanation;
62e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mReference = reference;
63eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds        mUser = user;
64e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
65e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
66e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    protected Adjustment(Parcel in) {
67e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        if (in.readInt() == 1) {
68e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            mPackage = in.readString();
69e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        } else {
70e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            mPackage = null;
71e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
72e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        if (in.readInt() == 1) {
73e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            mKey = in.readString();
74e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        } else {
75e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            mKey = null;
76e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
77e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mImportance = in.readInt();
78e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        if (in.readInt() == 1) {
79e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            mExplanation = in.readCharSequence();
80e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        } else {
81e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            mExplanation = null;
82e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
83e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mReference = in.readParcelable(Uri.class.getClassLoader());
84e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        mSignals = in.readBundle();
85eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds        mUser = in.readInt();
86e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
87e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
88e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public static final Creator<Adjustment> CREATOR = new Creator<Adjustment>() {
89e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        @Override
90e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        public Adjustment createFromParcel(Parcel in) {
91e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            return new Adjustment(in);
92e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
93e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
94e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        @Override
95e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        public Adjustment[] newArray(int size) {
96e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            return new Adjustment[size];
97e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
98e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    };
99e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
100e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public String getPackage() {
101e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return mPackage;
102e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
103e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
104e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public String getKey() {
105e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return mKey;
106e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
107e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
108e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public int getImportance() {
109e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return mImportance;
110e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
111e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
112e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public CharSequence getExplanation() {
113e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return mExplanation;
114e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
115e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
116e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public Uri getReference() {
117e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return mReference;
118e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
119e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
120e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public Bundle getSignals() {
121e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return mSignals;
122e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
123e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
124eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds    public int getUser() {
125eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds        return mUser;
126eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds    }
127eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds
128e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    @Override
129e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public int describeContents() {
130e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        return 0;
131e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
132e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds
133e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    @Override
134e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    public void writeToParcel(Parcel dest, int flags) {
135e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        if (mPackage != null) {
136e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeInt(1);
137e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeString(mPackage);
138e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        } else {
139e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeInt(0);
140e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
141e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        if (mKey != null) {
142e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeInt(1);
143e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeString(mKey);
144e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        } else {
145e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeInt(0);
146e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
147e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        dest.writeInt(mImportance);
148e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        if (mExplanation != null) {
149e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeInt(1);
150e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeCharSequence(mExplanation);
151e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        } else {
152e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds            dest.writeInt(0);
153e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        }
154e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        dest.writeParcelable(mReference, flags);
155e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds        dest.writeBundle(mSignals);
156eae43fbd1712a009c4a59760bf9588b3092e1e37Julia Reynolds        dest.writeInt(mUser);
157e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds    }
158e46bb37acf6d3cfb9974672ace93f5381f70ad99Julia Reynolds}
159