127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/*
227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Copyright (C) 2010 The Android Open Source Project
327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License");
527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * you may not use this file except in compliance with the License.
627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * You may obtain a copy of the License at
727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *      http://www.apache.org/licenses/LICENSE-2.0
927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi *
1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Unless required by applicable law or agreed to in writing, software
1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS,
1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * See the License for the specific language governing permissions and
1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * limitations under the License.
1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */
1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#ifndef __DRM_INFO_EVENT_H__
1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#define __DRM_INFO_EVENT_H__
1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshinamespace android {
2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass String8;
2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/**
2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * This is an entity class which would be passed to caller in
2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * DrmManagerClient::OnInfoListener::onInfo(const DrmInfoEvent&).
2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */
2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiclass DrmInfoEvent {
2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
302272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    /**
312272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi     * The following constant values should be in sync with DrmInfoEvent.java
322272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi     */
3327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT, when registration has been
3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! already done by another account ID.
352272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT = 1;
3627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_REMOVE_RIGHTS, when the rights needs to be removed completely.
372272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_REMOVE_RIGHTS = 2;
3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_RIGHTS_INSTALLED, when the rights are downloaded and installed ok.
392272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_RIGHTS_INSTALLED = 3;
402272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    //! TYPE_WAIT_FOR_RIGHTS, rights object is on it's way to phone,
412272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    //! wait before calling checkRights again
422272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_WAIT_FOR_RIGHTS = 4;
432272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    //! TYPE_ACCOUNT_ALREADY_REGISTERED, when registration has been
442272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    //! already done for the given account.
452272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_ACCOUNT_ALREADY_REGISTERED = 5;
46505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    //! TYPE_RIGHTS_REMOVED, when the rights has been removed.
47505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    static const int TYPE_RIGHTS_REMOVED = 6;
482272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi
492272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    /**
502272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi     * The following constant values should be in sync with DrmErrorEvent.java
512272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi     */
5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_RIGHTS_NOT_INSTALLED, when something went wrong installing the rights
532272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_RIGHTS_NOT_INSTALLED = 2001;
5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_RIGHTS_RENEWAL_NOT_ALLOWED, when the server rejects renewal of rights
552272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_RIGHTS_RENEWAL_NOT_ALLOWED = 2002;
5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_NOT_SUPPORTED, when answer from server can not be handled by the native agent
572272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_NOT_SUPPORTED = 2003;
5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_OUT_OF_MEMORY, when memory allocation fail during renewal.
5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! Can in the future perhaps be used to trigger garbage collector
602272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_OUT_OF_MEMORY = 2004;
6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! TYPE_NO_INTERNET_CONNECTION, when the Internet connection is missing and no attempt
6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    //! can be made to renew rights
632272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    static const int TYPE_NO_INTERNET_CONNECTION = 2005;
64e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi    //! TYPE_PROCESS_DRM_INFO_FAILED, when failed to process DrmInfo.
65e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi    static const int TYPE_PROCESS_DRM_INFO_FAILED = 2006;
66505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    //! TYPE_REMOVE_ALL_RIGHTS_FAILED, when failed to remove all the rights objects
67505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    //! associated with all DRM schemes.
68505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    static const int TYPE_REMOVE_ALL_RIGHTS_FAILED = 2007;
69505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    //! TYPE_ACQUIRE_DRM_INFO_FAILED, when failed to acquire DrmInfo.
70505bd99ec8bed47c438ac3bb4641ce5f7ba972e7Gloria Wang    static const int TYPE_ACQUIRE_DRM_INFO_FAILED = 2008;
7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
7327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    /**
744585e8f0ff47580fdb81ed8652bde32db1770050Jeff Tinker     * Constructor for DrmInfoEvent
7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     *
7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * @param[in] uniqueId Unique session identifier
7727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * @param[in] infoType Type of information
7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * @param[in] message Message description
7927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     */
8079cbc13ede26d08ab6633a042843a9d154c3c166Gloria Wang    DrmInfoEvent(int uniqueId, int infoType, const String8 message);
8127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
8227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    /**
8327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * Destructor for DrmInfoEvent
8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     */
854585e8f0ff47580fdb81ed8652bde32db1770050Jeff Tinker    virtual ~DrmInfoEvent() {}
8627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshipublic:
8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    /**
8927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * Returns the Unique Id associated with this instance
9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     *
9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * @return Unique Id
9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     */
9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int getUniqueId() const;
9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    /**
9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * Returns the Type of information associated with this object
9727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     *
9827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * @return Type of information
9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     */
10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int getType() const;
10127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
10227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    /**
10327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * Returns the message description associated with this object
10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     *
10527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     * @return Message description
10627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi     */
10779cbc13ede26d08ab6633a042843a9d154c3c166Gloria Wang    const String8 getMessage() const;
10827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiprivate:
11027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int mUniqueId;
11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int mInfoType;
11279cbc13ede26d08ab6633a042843a9d154c3c166Gloria Wang    const String8 mMessage;
11327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi};
11427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi};
11627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#endif /* __DRM_INFO_EVENT_H__ */
11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
119