diff options
author | Karthikeyan Periasamy <kperiasa@codeaurora.org> | 2015-07-17 11:41:59 -0700 |
---|---|---|
committer | jrizzoli <joey@cyanogenmoditalia.it> | 2015-08-28 13:15:46 +0200 |
commit | bdc0733968690a268892d09008e382ae07eebb0f (patch) | |
tree | 8133ebbef20138f6a79d05ea52a06ade88ea0ae0 /src | |
parent | b2f6cce1a0d73c01136968b22d4c5c88ea44cf63 (diff) | |
download | android_packages_apps_Gello-bdc0733968690a268892d09008e382ae07eebb0f.tar.gz android_packages_apps_Gello-bdc0733968690a268892d09008e382ae07eebb0f.tar.bz2 android_packages_apps_Gello-bdc0733968690a268892d09008e382ae07eebb0f.zip |
Compress the breadpad crash raw data before uploading to server
Change-Id: I69df249ddd33939694becfdc8c6a48e0d3b6fc89
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/CrashLogExceptionHandler.java | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/com/android/browser/CrashLogExceptionHandler.java b/src/com/android/browser/CrashLogExceptionHandler.java index 367a4099..dc42d596 100644 --- a/src/com/android/browser/CrashLogExceptionHandler.java +++ b/src/com/android/browser/CrashLogExceptionHandler.java @@ -50,6 +50,9 @@ import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.entity.InputStreamEntity; import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.entity.AbstractHttpEntity; +import org.apache.http.entity.ByteArrayEntity; + import org.json.JSONArray; import org.json.JSONObject; @@ -62,11 +65,15 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.OutputStream; import java.lang.Integer; import java.lang.StringBuilder; import java.lang.System; import java.lang.Thread.UncaughtExceptionHandler; import java.util.Calendar; +import java.util.zip.GZIPOutputStream; public class CrashLogExceptionHandler implements Thread.UncaughtExceptionHandler { @@ -341,12 +348,32 @@ public class CrashLogExceptionHandler implements Thread.UncaughtExceptionHandler try { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(server); - InputStreamEntity isEntity = new InputStreamEntity( - new FileInputStream(report), -1); - // Send the report as a Binary - isEntity.setContentType("binary/octet-stream"); - isEntity.setChunked(false); - httpPost.setEntity(isEntity); + + // Compress the data + ByteArrayOutputStream arrayStream = new ByteArrayOutputStream(); + OutputStream gzipData = new GZIPOutputStream(arrayStream); + InputStream inputStream = new FileInputStream(report); + long length = report.length(); + byte[] data = new byte[(int)length]; + + // Read in the bytes + int offset = 0; + int numRead = 0; + while (offset < data.length + && (numRead=inputStream.read(data, offset, data.length-offset)) >= 0) { + offset += numRead; + } + gzipData.write(data); + gzipData.close(); + + AbstractHttpEntity entity = new ByteArrayEntity(arrayStream.toByteArray()); + + // Send the report as a compressed Binary + entity.setContentType("binary/octet-stream"); + entity.setContentEncoding("gzip"); + entity.setChunked(false); + httpPost.setEntity(entity); + HttpResponse response = httpClient.execute(httpPost); int status = response.getStatusLine().getStatusCode(); if (status == 200) |