1/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.drm;
18
19/**
20 * Defines constants that are used by the DRM framework.
21 *
22 */
23public class DrmStore {
24    /**
25     * Interface definition for the columns that represent DRM constraints.
26     * {@link android.drm.DrmManagerClient#getConstraints DrmManagerClient.getConstraints()}
27     * can be called by an application to find out the contraints on the
28     * {@link android.drm.DrmStore.Action actions} that can be performed
29     * on right-protected content. The constants defined in this interface
30     * represent three most common types of constraints: count-based,
31     * date-based, and duration-based. Two or more constraints can be used
32     * at the same time to represent more sophisticated constraints.
33     * In addition, user-defined constraint,
34     * {@link #EXTENDED_METADATA extended metadata}, can be
35     * used if these three types of constraints are not sufficient.
36     */
37    public interface ConstraintsColumns {
38        /**
39         * This is a count-based constraint. It represents the maximum
40         * repeat count that can be performed on an
41         * {@link android.drm.DrmStore.Action action}.
42         * <p>
43         * Type: INTEGER
44         */
45        public static final String MAX_REPEAT_COUNT = "max_repeat_count";
46
47        /**
48         * This is a count-based constraint. It represents the remaining
49         * repeat count that can be performed on an
50         * {@link android.drm.DrmStore.Action action}.
51         * <p>
52         * Type: INTEGER
53         */
54        public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count";
55
56        /**
57         * This is a date-based constraint. It represents the time before which
58         * an {@link android.drm.DrmStore.Action action} can be performed on
59         * the rights-protected content.
60         * <p>
61         * Type: TEXT
62         */
63        public static final String LICENSE_START_TIME = "license_start_time";
64
65        /**
66         * This is a date-based constaint. It represents the time after which
67         * an {@link android.drm.DrmStore.Action action} can not be performed on
68         * the rights-protected content.
69         * <p>
70         * Type: TEXT
71         */
72        public static final String LICENSE_EXPIRY_TIME = "license_expiry_time";
73
74        /**
75         * This is a duration-based constaint. It represents the available time left
76         * before the license expires.
77         * <p>
78         * Type: TEXT
79         */
80        public static final String LICENSE_AVAILABLE_TIME = "license_available_time";
81
82        /**
83         * This is a user-defined constraint. It represents the additional constraint
84         * using extended metadata.
85         * <p>
86         * Type: TEXT
87         */
88        public static final String EXTENDED_METADATA = "extended_metadata";
89    }
90
91    /**
92     * Defines DRM object types.
93     */
94    public static class DrmObjectType {
95        /**
96         * An unknown object type.
97         */
98        public static final int UNKNOWN = 0x00;
99        /**
100         * A rights-protected file object type.
101         */
102        public static final int CONTENT = 0x01;
103        /**
104         * A rights information object type.
105         */
106        public static final int RIGHTS_OBJECT = 0x02;
107        /**
108         * A trigger information object type.
109         */
110        public static final int TRIGGER_OBJECT = 0x03;
111
112        /**
113         * @deprecated This class should have been an interface instead.
114         * The default constuctor should have not been exposed.
115         */
116        public DrmObjectType() {}
117    }
118
119    /**
120     * Defines playback states for content.
121     */
122    public static class Playback {
123        /**
124         * Playback started.
125         */
126        public static final int START = 0x00;
127        /**
128         * Playback stopped.
129         */
130        public static final int STOP = 0x01;
131        /**
132         * Playback paused.
133         */
134        public static final int PAUSE = 0x02;
135        /**
136         * Playback resumed.
137         */
138        public static final int RESUME = 0x03;
139
140        /* package */ static boolean isValid(int playbackStatus) {
141            boolean isValid = false;
142
143            switch (playbackStatus) {
144                case START:
145                case STOP:
146                case PAUSE:
147                case RESUME:
148                    isValid = true;
149            }
150            return isValid;
151        }
152
153        /**
154         * @deprecated This class should have been an interface instead.
155         * The default constuctor should have not been exposed.
156         */
157        public Playback() {}
158    }
159
160    /**
161     * Defines actions that can be performed on rights-protected content.
162     */
163    public static class Action {
164        /**
165         * The default action.
166         */
167        public static final int DEFAULT = 0x00;
168        /**
169         * The rights-protected content can be played.
170         */
171        public static final int PLAY = 0x01;
172        /**
173         * The rights-protected content can be set as a ringtone.
174         */
175        public static final int RINGTONE = 0x02;
176        /**
177         * The rights-protected content can be transferred.
178         */
179        public static final int TRANSFER = 0x03;
180        /**
181         * The rights-protected content can be set as output.
182         */
183        public static final int OUTPUT = 0x04;
184        /**
185         * The rights-protected content can be previewed.
186         */
187        public static final int PREVIEW = 0x05;
188        /**
189         * The rights-protected content can be executed.
190         */
191        public static final int EXECUTE = 0x06;
192        /**
193         * The rights-protected content can be displayed.
194         */
195        public static final int DISPLAY = 0x07;
196
197        /* package */ static boolean isValid(int action) {
198            boolean isValid = false;
199
200            switch (action) {
201                case DEFAULT:
202                case PLAY:
203                case RINGTONE:
204                case TRANSFER:
205                case OUTPUT:
206                case PREVIEW:
207                case EXECUTE:
208                case DISPLAY:
209                    isValid = true;
210            }
211            return isValid;
212        }
213
214        /**
215         * @deprecated This class should have been an interface instead.
216         * The default constuctor should have not been exposed.
217         */
218        public Action() {}
219    }
220
221    /**
222     * Defines status notifications for digital rights.
223     */
224    public static class RightsStatus {
225        /**
226         * The digital rights are valid.
227         */
228        public static final int RIGHTS_VALID = 0x00;
229        /**
230         * The digital rights are invalid.
231         */
232        public static final int RIGHTS_INVALID = 0x01;
233        /**
234         * The digital rights have expired.
235         */
236        public static final int RIGHTS_EXPIRED = 0x02;
237        /**
238         * The digital rights have not been acquired for the rights-protected content.
239         */
240        public static final int RIGHTS_NOT_ACQUIRED = 0x03;
241
242        /**
243         * @deprecated This class should have been an interface instead.
244         * The default constuctor should have not been exposed.
245         */
246        public RightsStatus() {}
247    }
248
249    /**
250     * @deprecated This class should have been an interface instead.
251     * The default constuctor should have not been exposed.
252     */
253    public DrmStore() {}
254}
255
256