summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLi Sun <sunli@codeaurora.org>2015-01-15 19:20:48 +0800
committerSteve Kondik <steve@cyngn.com>2015-11-30 19:31:22 -0800
commit114b9c670dabacd2f5e3e7b3f2ae8033221b800c (patch)
tree856f814737db475895af5189dd95d82aee8f3e94 /media
parent68c40f32470d66e0f8973d33a4124a2181754fb0 (diff)
downloadframeworks_base-114b9c670dabacd2f5e3e7b3f2ae8033221b800c.zip
frameworks_base-114b9c670dabacd2f5e3e7b3f2ae8033221b800c.tar.gz
frameworks_base-114b9c670dabacd2f5e3e7b3f2ae8033221b800c.tar.bz2
MediaHTTPConnection: support Cookie update
- The server side would keep the Cookie in the response header. The client should update it in the http connection session. - disable the functionality as it's server specific. enable it by "adb shell setprop persist.media.cookie.cust true" Change-Id: Ibde2dbb228856200ea1ecbfa391f8480b5595ae9
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/MediaHTTPConnection.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index a0ccc74..59eaeef 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -19,6 +19,7 @@ package android.media;
import android.net.NetworkUtils;
import android.os.IBinder;
import android.os.StrictMode;
+import android.os.SystemProperties;
import android.util.Log;
import java.io.BufferedInputStream;
@@ -34,6 +35,7 @@ import java.net.NoRouteToHostException;
import java.net.ProtocolException;
import java.net.UnknownServiceException;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.net.InetSocketAddress;
@@ -59,6 +61,8 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
private HttpURLConnection mConnection = null;
private long mTotalSize = -1;
private InputStream mInputStream = null;
+ private List<String> mCookies = null;
+ private boolean mIsCookieUpdated = false;
private boolean mAllowCrossDomainRedirect = true;
private boolean mAllowCrossProtocolRedirect = true;
@@ -117,6 +121,8 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
mProxyPort = Integer.parseInt(val.substring(colonPos + 1));
Log.d(TAG, "sta-proxy-ip " + mProxyIP + " port " + mProxyPort);
}
+ } else if ("Cookie".equalsIgnoreCase(key) && mIsCookieUpdated) {
+ Log.d(TAG, "filterOutInternalHeaders: Cookie");
} else {
return false;
}
@@ -222,6 +228,14 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
}
}
+ if (mIsCookieUpdated) {
+ if (VERBOSE)
+ Log.d(TAG, "add Cookie in the request");
+ for (String cookie : mCookies) {
+ mConnection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
+ }
+ }
+
if (offset > 0) {
mConnection.setRequestProperty(
"Range", "bytes=" + offset + "-");
@@ -308,6 +322,16 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
throw new IOException();
} else {
mTotalSize = mConnection.getContentLength();
+ if (mConnection.getHeaderFields().containsKey("Set-Cookie")) {
+ mIsCookieUpdated = SystemProperties.getBoolean(
+ "persist.media.cookie.cust", false);
+ mCookies = mConnection.getHeaderFields().get("Set-Cookie");
+ if (VERBOSE) {
+ for (String cookie : mCookies) {
+ Log.d(TAG, "get Cookie" + cookie);
+ }
+ }
+ }
}
if (offset > 0 && response != HttpURLConnection.HTTP_PARTIAL) {