diff options
author | Li Sun <sunli@codeaurora.org> | 2015-01-15 19:20:48 +0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-11-30 19:31:22 -0800 |
commit | 114b9c670dabacd2f5e3e7b3f2ae8033221b800c (patch) | |
tree | 856f814737db475895af5189dd95d82aee8f3e94 /media | |
parent | 68c40f32470d66e0f8973d33a4124a2181754fb0 (diff) | |
download | frameworks_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.java | 24 |
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) { |