aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2012-08-17 03:49:16 -0700
committerandroid code review <noreply-gerritcodereview@google.com>2012-08-17 03:49:18 -0700
commitb9d888ea54ab05c420263de584767d05ac9c6ac7 (patch)
tree5de0ae0f957d8f75c9deda71a2d94520d8ed269e
parent9d3a6713f14f04184ff8854b241b6c515ff8c0b8 (diff)
parent9542e750421542d4dea1f1d33c0f4349b3c48536 (diff)
downloadokhttp-b9d888ea54ab05c420263de584767d05ac9c6ac7.tar.gz
Merge "Fix usage DeflaterOutputStream constructor on android"
-rw-r--r--Android.mk1
-rw-r--r--android/main/java/libcore/util/Libcore.java20
-rw-r--r--src/main/java/libcore/net/spdy/SpdyWriter.java4
-rw-r--r--src/main/java/libcore/util/Libcore.java8
4 files changed, 32 insertions, 1 deletions
diff --git a/Android.mk b/Android.mk
index a24d43f..a942b67 100644
--- a/Android.mk
+++ b/Android.mk
@@ -26,6 +26,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src/main/java)
LOCAL_SRC_FILES := $(filter-out %/Libcore.java, $(LOCAL_SRC_FILES))
LOCAL_SRC_FILES += $(call all-java-files-under, android/main/java)
+LOCAL_SDK_VERSION := 16
LOCAL_JARJAR_RULES := ${LOCAL_PATH}/jarjar-rules.txt
include $(BUILD_JAVA_LIBRARY)
diff --git a/android/main/java/libcore/util/Libcore.java b/android/main/java/libcore/util/Libcore.java
index e617b81..cd32c17 100644
--- a/android/main/java/libcore/util/Libcore.java
+++ b/android/main/java/libcore/util/Libcore.java
@@ -19,6 +19,8 @@ package libcore.util;
import javax.net.ssl.SSLSocket;
import java.io.File;
import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.Socket;
@@ -27,6 +29,8 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.ByteOrder;
+import java.util.zip.Deflater;
+import java.util.zip.DeflaterOutputStream;
/**
* APIs for interacting with Android's core library. The main purpose of this
@@ -47,6 +51,7 @@ public final class Libcore {
private static final Method setHostname;
private static final Method setNpnProtocols;
private static final Method getNpnSelectedProtocol;
+ private static final Constructor<DeflaterOutputStream> deflaterOutputStreamConstructor;
static {
try {
@@ -59,6 +64,8 @@ public final class Libcore {
setHostname = openSslSocketClass.getMethod("setHostname", String.class);
setNpnProtocols = openSslSocketClass.getMethod("setNpnProtocols", byte[].class);
getNpnSelectedProtocol = openSslSocketClass.getMethod("getNpnSelectedProtocol");
+ deflaterOutputStreamConstructor = DeflaterOutputStream.class.getConstructor(
+ new Class[] { OutputStream.class, Deflater.class, boolean.class });
} catch (ClassNotFoundException cnfe) {
throw new RuntimeException(cnfe);
} catch (NoSuchMethodException nsme) {
@@ -66,6 +73,19 @@ public final class Libcore {
}
}
+ public static DeflaterOutputStream newDeflaterOutputStream(
+ OutputStream os, Deflater deflater, boolean syncFlush) {
+ try {
+ return deflaterOutputStreamConstructor.newInstance(os, deflater, syncFlush);
+ } catch (InstantiationException e) {
+ throw new RuntimeException("Unknown DeflaterOutputStream implementation.");
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Unknown DeflaterOutputStream implementation.");
+ } catch (InvocationTargetException e) {
+ throw new RuntimeException("Unknown DeflaterOutputStream implementation.");
+ }
+ }
+
public static void makeTlsTolerant(SSLSocket socket, String socketHost, boolean tlsTolerant) {
if (!tlsTolerant) {
socket.setEnabledProtocols(new String[] {"SSLv3"});
diff --git a/src/main/java/libcore/net/spdy/SpdyWriter.java b/src/main/java/libcore/net/spdy/SpdyWriter.java
index 5bc4644..28490ac 100644
--- a/src/main/java/libcore/net/spdy/SpdyWriter.java
+++ b/src/main/java/libcore/net/spdy/SpdyWriter.java
@@ -24,6 +24,8 @@ import java.util.List;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
+import static libcore.util.Libcore.newDeflaterOutputStream;
+
/**
* Write version 2 SPDY frames.
*/
@@ -46,7 +48,7 @@ final class SpdyWriter {
deflater.setDictionary(SpdyReader.DICTIONARY);
nameValueBlockBuffer = new ByteArrayOutputStream();
nameValueBlockOut = new DataOutputStream(
- new DeflaterOutputStream(nameValueBlockBuffer, deflater, true));
+ newDeflaterOutputStream(nameValueBlockBuffer, deflater, true));
}
public void synStream() throws IOException {
diff --git a/src/main/java/libcore/util/Libcore.java b/src/main/java/libcore/util/Libcore.java
index 0d7db0d..4798004 100644
--- a/src/main/java/libcore/util/Libcore.java
+++ b/src/main/java/libcore/util/Libcore.java
@@ -18,6 +18,7 @@ package libcore.util;
import java.io.File;
import java.io.IOException;
+import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -29,6 +30,8 @@ import java.net.URL;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.List;
+import java.util.zip.Deflater;
+import java.util.zip.DeflaterOutputStream;
import javax.net.ssl.SSLSocket;
import org.eclipse.jetty.npn.NextProtoNego;
@@ -72,6 +75,11 @@ public final class Libcore {
}
}
+ public static DeflaterOutputStream newDeflaterOutputStream(
+ OutputStream os, Deflater deflater, boolean syncFlush) {
+ return new DeflaterOutputStream(os, deflater, syncFlush);
+ }
+
public static void makeTlsTolerant(SSLSocket socket, String socketHost, boolean tlsTolerant) {
if (!tlsTolerant) {
socket.setEnabledProtocols(new String[] {"SSLv3"});