am 9940c8b6: am def35f7a: Merge "Fix for 4089881. - Add one more parameter in the interface of DrmEvent and its subclasses DrmInfoEvent and DrmErrorEvent - Send back DrmInfo in the response of async processDrmInfo calls" into honeycomb-mr1
* commit '9940c8b6c8ab1711c9ee77cb9288888879b0b310':
Fix for 4089881. - Add one more parameter in the interface of DrmEvent and its subclasses DrmInfoEvent and DrmErrorEvent - Send back DrmInfo in the response of async processDrmInfo calls
diff --git a/api/12.xml b/api/12.xml
index a65d9c1..37a81fc 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 923a784..8c5d4fc 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"
@@ -267075,7 +267145,7 @@
deprecated="not deprecated"
visibility="public"
>
-<parameter name="t" type="T">
+<parameter name="arg0" type="T">
</parameter>
</method>
</interface>
diff --git a/drm/java/android/drm/DrmErrorEvent.java b/drm/java/android/drm/DrmErrorEvent.java
index 90adb47f..7cc9a87 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 @@
* 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 f7bc5cd..eba458b 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 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 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 72f37ea..190199a 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 @@
* 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 aa56159..f7479b5 100644
--- a/drm/java/android/drm/DrmManagerClient.java
+++ b/drm/java/android/drm/DrmManagerClient.java
@@ -81,10 +81,8 @@
*
* @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 @@
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 @@
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);