diff options
-rw-r--r-- | api/12.xml | 2 | ||||
-rw-r--r-- | api/current.xml | 74 | ||||
-rw-r--r-- | drm/java/android/drm/DrmErrorEvent.java | 18 | ||||
-rw-r--r-- | drm/java/android/drm/DrmEvent.java | 37 | ||||
-rw-r--r-- | drm/java/android/drm/DrmInfoEvent.java | 18 | ||||
-rw-r--r-- | drm/java/android/drm/DrmManagerClient.java | 17 |
6 files changed, 153 insertions, 13 deletions
diff --git a/api/12.xml b/api/12.xml index 7835c7f9e4a3..3785c974cb4c 100644 --- a/api/12.xml +++ b/api/12.xml @@ -73375,8 +73375,6 @@ </parameter> <parameter name="event" type="android.drm.DrmEvent"> </parameter> -<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>"> -</parameter> </method> </interface> <interface name="DrmManagerClient.OnInfoListener" diff --git a/api/current.xml b/api/current.xml index bec534d53ef5..4150f16202d3 100644 --- a/api/current.xml +++ b/api/current.xml @@ -72665,6 +72665,22 @@ <parameter name="message" type="java.lang.String"> </parameter> </constructor> +<constructor name="DrmErrorEvent" + type="android.drm.DrmErrorEvent" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="uniqueId" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="message" type="java.lang.String"> +</parameter> +<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>"> +</parameter> +</constructor> <field name="TYPE_ACQUIRE_DRM_INFO_FAILED" type="int" transient="false" @@ -72775,7 +72791,36 @@ </parameter> <parameter name="message" type="java.lang.String"> </parameter> +<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>"> +</parameter> +</constructor> +<constructor name="DrmEvent" + type="android.drm.DrmEvent" + static="false" + final="false" + deprecated="not deprecated" + visibility="protected" +> +<parameter name="uniqueId" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="message" type="java.lang.String"> +</parameter> </constructor> +<method name="getAttribute" + return="java.lang.Object" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="key" type="java.lang.String"> +</parameter> +</method> <method name="getMessage" return="java.lang.String" abstract="false" @@ -72809,6 +72854,17 @@ visibility="public" > </method> +<field name="DRM_INFO_OBJECT" + type="java.lang.String" + transient="false" + volatile="false" + value=""drm_info_object"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="DRM_INFO_STATUS_OBJECT" type="java.lang.String" transient="false" @@ -72985,6 +73041,22 @@ <parameter name="message" type="java.lang.String"> </parameter> </constructor> +<constructor name="DrmInfoEvent" + type="android.drm.DrmInfoEvent" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="uniqueId" type="int"> +</parameter> +<parameter name="type" type="int"> +</parameter> +<parameter name="message" type="java.lang.String"> +</parameter> +<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>"> +</parameter> +</constructor> <field name="TYPE_ACCOUNT_ALREADY_REGISTERED" type="int" transient="false" @@ -73767,8 +73839,6 @@ </parameter> <parameter name="event" type="android.drm.DrmEvent"> </parameter> -<parameter name="attributes" type="java.util.HashMap<java.lang.String, java.lang.Object>"> -</parameter> </method> </interface> <interface name="DrmManagerClient.OnInfoListener" diff --git a/drm/java/android/drm/DrmErrorEvent.java b/drm/java/android/drm/DrmErrorEvent.java index 90adb47fe53e..7cc9a876df82 100644 --- a/drm/java/android/drm/DrmErrorEvent.java +++ b/drm/java/android/drm/DrmErrorEvent.java @@ -16,6 +16,8 @@ package android.drm; +import java.util.HashMap; + /** * This is an entity class which would be passed to caller in * {@link DrmManagerClient.OnErrorListener#onError(DrmManagerClient, DrmErrorEvent)} @@ -62,11 +64,25 @@ public class DrmErrorEvent extends DrmEvent { * constructor to create DrmErrorEvent object with given parameters * * @param uniqueId Unique session identifier - * @param type Type of information + * @param type Type of the event. It could be one of the types defined above * @param message Message description */ public DrmErrorEvent(int uniqueId, int type, String message) { super(uniqueId, type, message); } + + /** + * constructor to create DrmErrorEvent object with given parameters + * + * @param uniqueId Unique session identifier + * @param type Type of the event. It could be one of the types defined above + * @param message Message description + * @param attributes Attributes for extensible information. Could be any + * information provided by the plugin + */ + public DrmErrorEvent(int uniqueId, int type, String message, + HashMap<String, Object> attributes) { + super(uniqueId, type, message, attributes); + } } diff --git a/drm/java/android/drm/DrmEvent.java b/drm/java/android/drm/DrmEvent.java index f7bc5cd11884..eba458bf5525 100644 --- a/drm/java/android/drm/DrmEvent.java +++ b/drm/java/android/drm/DrmEvent.java @@ -16,6 +16,8 @@ package android.drm; +import java.util.HashMap; + /** * This is the base class which would be used to notify the caller * about any event occurred in DRM framework. @@ -33,11 +35,36 @@ public class DrmEvent { public static final int TYPE_DRM_INFO_PROCESSED = 1002; public static final String DRM_INFO_STATUS_OBJECT = "drm_info_status_object"; + public static final String DRM_INFO_OBJECT = "drm_info_object"; private final int mUniqueId; private final int mType; private String mMessage = ""; + private HashMap<String, Object> mAttributes = new HashMap<String, Object>(); + + /** + * constructor for DrmEvent class + * + * @param uniqueId Unique session identifier + * @param type Type of information + * @param message Message description + * @param attributes Attributes for extensible information + */ + protected DrmEvent(int uniqueId, int type, String message, + HashMap<String, Object> attributes) { + mUniqueId = uniqueId; + mType = type; + + if (null != message) { + mMessage = message; + } + + if (null != attributes) { + mAttributes = attributes; + } + } + /** * constructor for DrmEvent class * @@ -80,5 +107,15 @@ public class DrmEvent { public String getMessage() { return mMessage; } + + /** + * Returns the attribute corresponding to the specified key + * + * @return one of the attributes or null if no mapping for + * the key is found + */ + public Object getAttribute(String key) { + return mAttributes.get(key); + } } diff --git a/drm/java/android/drm/DrmInfoEvent.java b/drm/java/android/drm/DrmInfoEvent.java index 72f37eaf90c5..190199a4a42c 100644 --- a/drm/java/android/drm/DrmInfoEvent.java +++ b/drm/java/android/drm/DrmInfoEvent.java @@ -16,6 +16,8 @@ package android.drm; +import java.util.HashMap; + /** * This is an entity class which would be passed to caller in * {@link DrmManagerClient.OnInfoListener#onInfo(DrmManagerClient, DrmInfoEvent)} @@ -54,11 +56,25 @@ public class DrmInfoEvent extends DrmEvent { * constructor to create DrmInfoEvent object with given parameters * * @param uniqueId Unique session identifier - * @param type Type of information + * @param type Type of the event. It could be one of the types defined above * @param message Message description */ public DrmInfoEvent(int uniqueId, int type, String message) { super(uniqueId, type, message); } + + /** + * constructor to create DrmInfoEvent object with given parameters + * + * @param uniqueId Unique session identifier + * @param type Type of the event. It could be one of the types defined above + * @param message Message description + * @param attributes Attributes for extensible information. Could be any + * information provided by the plugin + */ + public DrmInfoEvent(int uniqueId, int type, String message, + HashMap<String, Object> attributes) { + super(uniqueId, type, message, attributes); + } } diff --git a/drm/java/android/drm/DrmManagerClient.java b/drm/java/android/drm/DrmManagerClient.java index aa56159d54c8..f7479b5c46fe 100644 --- a/drm/java/android/drm/DrmManagerClient.java +++ b/drm/java/android/drm/DrmManagerClient.java @@ -81,10 +81,8 @@ public class DrmManagerClient { * * @param client DrmManagerClient instance * @param event instance which wraps type and message - * @param attributes resultant values in key and value pair. */ - public void onEvent(DrmManagerClient client, DrmEvent event, - HashMap<String, Object> attributes); + public void onEvent(DrmManagerClient client, DrmEvent event); } /** @@ -128,12 +126,17 @@ public class DrmManagerClient { case ACTION_PROCESS_DRM_INFO: { final DrmInfo drmInfo = (DrmInfo) msg.obj; DrmInfoStatus status = _processDrmInfo(mUniqueId, drmInfo); + + attributes.put(DrmEvent.DRM_INFO_STATUS_OBJECT, status); + attributes.put(DrmEvent.DRM_INFO_OBJECT, drmInfo); + if (null != status && DrmInfoStatus.STATUS_OK == status.statusCode) { - attributes.put(DrmEvent.DRM_INFO_STATUS_OBJECT, status); - event = new DrmEvent(mUniqueId, getEventType(status.infoType), null); + event = new DrmEvent(mUniqueId, + getEventType(status.infoType), null, attributes); } else { int infoType = (null != status) ? status.infoType : drmInfo.getInfoType(); - error = new DrmErrorEvent(mUniqueId, getErrorType(infoType), null); + error = new DrmErrorEvent(mUniqueId, + getErrorType(infoType), null, attributes); } break; } @@ -151,7 +154,7 @@ public class DrmManagerClient { return; } if (null != mOnEventListener && null != event) { - mOnEventListener.onEvent(DrmManagerClient.this, event, attributes); + mOnEventListener.onEvent(DrmManagerClient.this, event); } if (null != mOnErrorListener && null != error) { mOnErrorListener.onError(DrmManagerClient.this, error); |