Merge "Improve exception error messages to help diagnose app errors" into jb-mr2-dev
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index c41c35e..220b997 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -2383,7 +2383,7 @@
      * parameters.  The latter approach is preferable, especially when you can reuse the
      * URI:
      * <pre>
-     * Uri rawContactUri = RawContacts.URI.buildUpon()
+     * Uri rawContactUri = RawContacts.CONTENT_URI.buildUpon()
      *          .appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName)
      *          .appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType)
      *          .build();
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index b63ccab..bbf5ae9 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1639,7 +1639,7 @@
 
             if (mAttachInfo.mHardwareRenderer != null &&
                     mAttachInfo.mHardwareRenderer.isEnabled()) {
-                if (hwInitialized || windowShouldResize ||
+                if (hwInitialized ||
                         mWidth != mAttachInfo.mHardwareRenderer.getWidth() ||
                         mHeight != mAttachInfo.mHardwareRenderer.getHeight()) {
                     mAttachInfo.mHardwareRenderer.setup(mWidth, mHeight);
diff --git a/media/jni/android_media_MediaDrm.cpp b/media/jni/android_media_MediaDrm.cpp
index 3d7784d..7799ca4 100644
--- a/media/jni/android_media_MediaDrm.cpp
+++ b/media/jni/android_media_MediaDrm.cpp
@@ -87,12 +87,18 @@
 };
 
 struct EventTypes {
-    int kEventProvisionRequired;
-    int kEventKeyRequired;
-    int kEventKeyExpired;
-    int kEventVendorDefined;
+    jint kEventProvisionRequired;
+    jint kEventKeyRequired;
+    jint kEventKeyExpired;
+    jint kEventVendorDefined;
 } gEventTypes;
 
+struct KeyTypes {
+    jint kKeyTypeStreaming;
+    jint kKeyTypeOffline;
+    jint kKeyTypeRelease;
+} gKeyTypes;
+
 struct fields_t {
     jfieldID context;
     jmethodID post_event;
@@ -524,6 +530,13 @@
     GET_STATIC_FIELD_ID(field, clazz, "EVENT_VENDOR_DEFINED", "I");
     gEventTypes.kEventVendorDefined = env->GetStaticIntField(clazz, field);
 
+    GET_STATIC_FIELD_ID(field, clazz, "KEY_TYPE_STREAMING", "I");
+    gKeyTypes.kKeyTypeStreaming = env->GetStaticIntField(clazz, field);
+    GET_STATIC_FIELD_ID(field, clazz, "KEY_TYPE_OFFLINE", "I");
+    gKeyTypes.kKeyTypeOffline = env->GetStaticIntField(clazz, field);
+    GET_STATIC_FIELD_ID(field, clazz, "KEY_TYPE_RELEASE", "I");
+    gKeyTypes.kKeyTypeRelease = env->GetStaticIntField(clazz, field);
+
     FIND_CLASS(clazz, "android/media/MediaDrm$KeyRequest");
     GET_FIELD_ID(gFields.keyRequest.data, clazz, "mData", "[B");
     GET_FIELD_ID(gFields.keyRequest.defaultUrl, clazz, "mDefaultUrl", "Ljava/lang/String;");
@@ -671,7 +684,18 @@
         mimeType = JStringToString8(env, jmimeType);
     }
 
-    DrmPlugin::KeyType keyType = (DrmPlugin::KeyType)jkeyType;
+    DrmPlugin::KeyType keyType;
+    if (jkeyType == gKeyTypes.kKeyTypeStreaming) {
+        keyType = DrmPlugin::kKeyType_Streaming;
+    } else if (jkeyType == gKeyTypes.kKeyTypeOffline) {
+        keyType = DrmPlugin::kKeyType_Offline;
+    } else if (jkeyType == gKeyTypes.kKeyTypeRelease) {
+        keyType = DrmPlugin::kKeyType_Release;
+    } else {
+        jniThrowException(env, "java/lang/IllegalArgumentException",
+                          "invalid keyType");
+        return NULL;
+    }
 
     KeyedVector<String8, String8> optParams;
     if (joptParams != NULL) {