summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2014-11-03 14:24:07 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-11-03 14:24:07 +0000
commite702d54594f8bd9472732c0ee35cd6503862633e (patch)
treecda3522247711276364b911e50e4ae9e3d958b64
parentfe4083510dc773911651456f150bf5432f81a6c0 (diff)
parent30ce2c541e4957b16cdbb3cce3a12494571d0254 (diff)
downloadBrowser-e702d54594f8bd9472732c0ee35cd6503862633e.tar.gz
Merge "Rewrite calls to Proxy.getPreferredHttpHost"
-rw-r--r--src/com/android/browser/AddBookmarkPage.java4
-rw-r--r--src/com/android/browser/DownloadTouchIcon.java80
-rw-r--r--src/com/android/browser/FetchUrlMimeType.java110
-rw-r--r--src/com/android/browser/Tab.java3
4 files changed, 77 insertions, 120 deletions
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index fdb34c48..6e82dbf0 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -770,7 +770,7 @@ public class AddBookmarkPage extends Activity
Bookmarks.addBookmark(AddBookmarkPage.this, false, url,
title, thumbnail, mCurrentFolder);
if (touchIconUrl != null) {
- new DownloadTouchIcon(mContext, cr, url).execute(mTouchIconUrl);
+ new DownloadTouchIcon(cr, url).execute(mTouchIconUrl);
}
mMessage.arg1 = 1;
} catch (IllegalStateException e) {
@@ -937,7 +937,7 @@ public class AddBookmarkPage extends Activity
Message msg = Message.obtain(mHandler,
TOUCH_ICON_DOWNLOADED);
msg.setData(bundle);
- DownloadTouchIcon icon = new DownloadTouchIcon(this, msg,
+ DownloadTouchIcon icon = new DownloadTouchIcon(msg,
mMap.getString(USER_AGENT));
icon.execute(mTouchIconUrl);
} else {
diff --git a/src/com/android/browser/DownloadTouchIcon.java b/src/com/android/browser/DownloadTouchIcon.java
index ba299b6d..2d12cc76 100644
--- a/src/com/android/browser/DownloadTouchIcon.java
+++ b/src/com/android/browser/DownloadTouchIcon.java
@@ -16,12 +16,9 @@
package com.android.browser;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.params.HttpClientParams;
-import org.apache.http.conn.params.ConnRouteParams;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -29,8 +26,6 @@ import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.net.Proxy;
-import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Message;
@@ -50,7 +45,6 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> {
private final String mUserAgent; // Sites may serve a different icon to different UAs
private Message mMessage;
- private final Context mContext;
/* package */ Tab mTab;
/**
@@ -58,9 +52,8 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> {
* the originalUrl so we take account of redirects. Used when the user
* bookmarks a page from outside the bookmarks activity.
*/
- public DownloadTouchIcon(Tab tab, Context ctx, ContentResolver cr, WebView view) {
+ public DownloadTouchIcon(Tab tab, ContentResolver cr, WebView view) {
mTab = tab;
- mContext = ctx.getApplicationContext();
mContentResolver = cr;
// Store these in case they change.
mOriginalUrl = view.getOriginalUrl();
@@ -75,9 +68,8 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> {
* TODO: Would be nice to set the user agent here so that there is no
* potential for the three different ctors here to return different icons.
*/
- public DownloadTouchIcon(Context ctx, ContentResolver cr, String url) {
+ public DownloadTouchIcon(ContentResolver cr, String url) {
mTab = null;
- mContext = ctx.getApplicationContext();
mContentResolver = cr;
mOriginalUrl = null;
mUrl = url;
@@ -89,9 +81,8 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> {
* the passed Message's data bundle with the key
* {@link BrowserContract.Bookmarks#TOUCH_ICON} and then send the message.
*/
- public DownloadTouchIcon(Context context, Message msg, String userAgent) {
+ public DownloadTouchIcon(Message msg, String userAgent) {
mMessage = msg;
- mContext = context.getApplicationContext();
mContentResolver = null;
mOriginalUrl = null;
mUrl = null;
@@ -107,48 +98,39 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> {
boolean inDatabase = mCursor != null && mCursor.getCount() > 0;
- String url = values[0];
-
if (inDatabase || mMessage != null) {
- AndroidHttpClient client = null;
- HttpGet request = null;
-
+ HttpURLConnection connection = null;
try {
- client = AndroidHttpClient.newInstance(mUserAgent);
- HttpHost httpHost = Proxy.getPreferredHttpHost(mContext, url);
- if (httpHost != null) {
- ConnRouteParams.setDefaultProxy(client.getParams(), httpHost);
+ URL url = new URL(values[0]);
+ connection = (HttpURLConnection) url.openConnection();
+ if (mUserAgent != null) {
+ connection.addRequestProperty("User-Agent", mUserAgent);
}
- request = new HttpGet(url);
-
- // Follow redirects
- HttpClientParams.setRedirecting(client.getParams(), true);
-
- HttpResponse response = client.execute(request);
- if (response.getStatusLine().getStatusCode() == 200) {
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- InputStream content = entity.getContent();
- if (content != null) {
- Bitmap icon = BitmapFactory.decodeStream(
- content, null, null);
- if (inDatabase) {
- storeIcon(icon);
- } else if (mMessage != null) {
- Bundle b = mMessage.getData();
- b.putParcelable(BrowserContract.Bookmarks.TOUCH_ICON, icon);
- }
+ if (connection.getResponseCode() == 200) {
+ InputStream content = connection.getInputStream();
+ Bitmap icon = null;
+ try {
+ icon = BitmapFactory.decodeStream(
+ content, null, null);
+ } finally {
+ try {
+ content.close();
+ } catch (IOException ignored) {
}
}
+
+ if (inDatabase) {
+ storeIcon(icon);
+ } else if (mMessage != null) {
+ Bundle b = mMessage.getData();
+ b.putParcelable(BrowserContract.Bookmarks.TOUCH_ICON, icon);
+ }
}
- } catch (Exception ex) {
- if (request != null) {
- request.abort();
- }
+ } catch (IOException ignored) {
} finally {
- if (client != null) {
- client.close();
+ if (connection != null) {
+ connection.disconnect();
}
}
}
diff --git a/src/com/android/browser/FetchUrlMimeType.java b/src/com/android/browser/FetchUrlMimeType.java
index 6556b380..4c64d009 100644
--- a/src/com/android/browser/FetchUrlMimeType.java
+++ b/src/com/android/browser/FetchUrlMimeType.java
@@ -16,16 +16,11 @@
package com.android.browser;
-import org.apache.http.Header;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpHead;
-import org.apache.http.conn.params.ConnRouteParams;
+import java.net.HttpURLConnection;
+import java.net.URL;
import android.app.DownloadManager;
import android.content.Context;
-import android.net.Proxy;
-import android.net.http.AndroidHttpClient;
import android.os.Environment;
import android.util.Log;
import android.webkit.MimeTypeMap;
@@ -64,80 +59,61 @@ class FetchUrlMimeType extends Thread {
@Override
public void run() {
- // User agent is likely to be null, though the AndroidHttpClient
- // seems ok with that.
- AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent);
- HttpHost httpHost;
+ String mimeType = null;
+ String contentDisposition = null;
+ HttpURLConnection connection = null;
try {
- httpHost = Proxy.getPreferredHttpHost(mContext, mUri);
- if (httpHost != null) {
- ConnRouteParams.setDefaultProxy(client.getParams(), httpHost);
+ URL url = new URL(mUri);
+ connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("HEAD");
+
+ if (mUserAgent != null) {
+ connection.addRequestProperty("User-Agent", mUserAgent);
}
- } catch (IllegalArgumentException ex) {
- Log.e(LOGTAG,"Download failed: " + ex);
- client.close();
- return;
- }
- HttpHead request = new HttpHead(mUri);
- if (mCookies != null && mCookies.length() > 0) {
- request.addHeader("Cookie", mCookies);
- }
+ if (mCookies != null && mCookies.length() > 0) {
+ connection.addRequestProperty("Cookie", mCookies);
+ }
- HttpResponse response;
- String mimeType = null;
- String contentDisposition = null;
- try {
- response = client.execute(request);
- // We could get a redirect here, but if we do lets let
- // the download manager take care of it, and thus trust that
- // the server sends the right mimetype
- if (response.getStatusLine().getStatusCode() == 200) {
- Header header = response.getFirstHeader("Content-Type");
- if (header != null) {
- mimeType = header.getValue();
+ if (connection.getResponseCode() == 200) {
+ mimeType = connection.getContentType();
+ if (mimeType != null) {
final int semicolonIndex = mimeType.indexOf(';');
if (semicolonIndex != -1) {
mimeType = mimeType.substring(0, semicolonIndex);
}
}
- Header contentDispositionHeader = response.getFirstHeader("Content-Disposition");
- if (contentDispositionHeader != null) {
- contentDisposition = contentDispositionHeader.getValue();
- }
+
+ contentDisposition = connection.getHeaderField("Content-Disposition");
}
- } catch (IllegalArgumentException ex) {
- if (request != null) {
- request.abort();
+ } catch (IOException ioe) {
+ Log.e(LOGTAG,"Download failed: " + ioe);
+ } finally {
+ if (connection != null) {
+ connection.disconnect();
}
- } catch (IOException ex) {
- if (request != null) {
- request.abort();
+ }
+
+ if (mimeType != null) {
+ if (mimeType.equalsIgnoreCase("text/plain") ||
+ mimeType.equalsIgnoreCase("application/octet-stream")) {
+ String newMimeType =
+ MimeTypeMap.getSingleton().getMimeTypeFromExtension(
+ MimeTypeMap.getFileExtensionFromUrl(mUri));
+ if (newMimeType != null) {
+ mimeType = newMimeType;
+ mRequest.setMimeType(newMimeType);
+ }
}
- } finally {
- client.close();
+ String filename = URLUtil.guessFileName(mUri, contentDisposition,
+ mimeType);
+ mRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);
}
- if (mimeType != null) {
- if (mimeType.equalsIgnoreCase("text/plain") ||
- mimeType.equalsIgnoreCase("application/octet-stream")) {
- String newMimeType =
- MimeTypeMap.getSingleton().getMimeTypeFromExtension(
- MimeTypeMap.getFileExtensionFromUrl(mUri));
- if (newMimeType != null) {
- mimeType = newMimeType;
- mRequest.setMimeType(newMimeType);
- }
- }
- String filename = URLUtil.guessFileName(mUri, contentDisposition,
- mimeType);
- mRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);
- }
-
- // Start the download
- DownloadManager manager = (DownloadManager) mContext.getSystemService(
- Context.DOWNLOAD_SERVICE);
- manager.enqueue(mRequest);
+ // Start the download
+ DownloadManager manager = (DownloadManager) mContext.getSystemService(
+ Context.DOWNLOAD_SERVICE);
+ manager.enqueue(mRequest);
}
}
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 5d564a1f..78bf70e4 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -795,8 +795,7 @@ class Tab implements PictureListener {
}
// Have only one async task at a time.
if (mTouchIconLoader == null) {
- mTouchIconLoader = new DownloadTouchIcon(Tab.this,
- mContext, cr, view);
+ mTouchIconLoader = new DownloadTouchIcon(Tab.this, cr, view);
mTouchIconLoader.execute(url);
}
}