summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorManikanta Sivapala <msivap@codeaurora.org>2014-09-25 21:24:50 +0530
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:27:05 -0600
commit4224b21cdd859619ed0532270c32f65b9ea54fe9 (patch)
tree97b1edf0e56629ed8ad0875a516985110827f25e /media
parentc11d44b71a3fc473f9c47fb39d0930f946986400 (diff)
downloadframeworks_base-4224b21cdd859619ed0532270c32f65b9ea54fe9.zip
frameworks_base-4224b21cdd859619ed0532270c32f65b9ea54fe9.tar.gz
frameworks_base-4224b21cdd859619ed0532270c32f65b9ea54fe9.tar.bz2
video: Hook to open http proxy connection
Added hook to open http proxy connection. Application can set proxy details in http headers with following key:val pair use-proxy : IP:Port MediaHTTP parsers header and set proxy details over underlying http stack. Hook helps to set proxy details from native mediaserver and pass information to MediaHTTP module Change-Id: Id83f35d493541fa601318c78861c31a7d331d8c8
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/MediaHTTPConnection.java31
1 files changed, 28 insertions, 3 deletions
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index d6bf421..a0ccc74 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -36,6 +36,11 @@ import java.net.UnknownServiceException;
import java.util.HashMap;
import java.util.Map;
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.net.Socket;
+import java.net.SocketAddress;
+
import static android.media.MediaPlayer.MEDIA_ERROR_UNSUPPORTED;
/** @hide */
@@ -48,6 +53,8 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
private long mCurrentOffset = -1;
private URL mURL = null;
+ private int mProxyPort = 0;
+ private String mProxyIP;
private Map<String, String> mHeaders = null;
private HttpURLConnection mConnection = null;
private long mTotalSize = -1;
@@ -97,10 +104,19 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
/* returns true iff header is internal */
private boolean filterOutInternalHeaders(String key, String val) {
+ Log.d(TAG, "filterOutInternalHeaders: key=" + key + ", val=" + val);
if ("android-allow-cross-domain-redirect".equalsIgnoreCase(key)) {
mAllowCrossDomainRedirect = parseBoolean(val);
// cross-protocol redirects are also controlled by this flag
mAllowCrossProtocolRedirect = mAllowCrossDomainRedirect;
+ } else if ("use-proxy".equalsIgnoreCase(key)) {
+ Log.d(TAG, "filterOutInternalHeaders use-proxy " + val);
+ int colonPos = val.indexOf(":");
+ if (colonPos > 0) {
+ mProxyIP = new String((val.substring(0, colonPos)).trim());
+ mProxyPort = Integer.parseInt(val.substring(colonPos + 1));
+ Log.d(TAG, "sta-proxy-ip " + mProxyIP + " port " + mProxyPort);
+ }
} else {
return false;
}
@@ -180,10 +196,19 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
boolean noProxy = isLocalHost(url);
while (true) {
- if (noProxy) {
- mConnection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY);
+
+ Log.d(TAG, "proxy " + mProxyIP +" port "+ mProxyPort);
+ if (mProxyPort > 0) {
+ SocketAddress socketAddr = new InetSocketAddress(mProxyIP, mProxyPort);
+ java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, socketAddr);
+ mConnection = (HttpURLConnection) url.openConnection(proxy);
+ Log.d(TAG, "connection initialized with proxy");
} else {
- mConnection = (HttpURLConnection)url.openConnection();
+ if (noProxy) {
+ mConnection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY);
+ } else {
+ mConnection = (HttpURLConnection)url.openConnection();
+ }
}
mConnection.setConnectTimeout(CONNECT_TIMEOUT_MS);