summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSelim Gurun <sgurun@google.com>2012-08-29 13:08:13 -0700
committerSelim Gurun <sgurun@google.com>2012-08-29 13:08:13 -0700
commit0b3d66fc2275fb5270cb7166cc991be7dc9d8ff7 (patch)
tree5ddaa951b49481b6162174d50da036baeda15930
parentadb2b6554ff7670390a0acd5507dffe430a4cd0d (diff)
downloadpackages_apps_Browser-0b3d66fc2275fb5270cb7166cc991be7dc9d8ff7.zip
packages_apps_Browser-0b3d66fc2275fb5270cb7166cc991be7dc9d8ff7.tar.gz
packages_apps_Browser-0b3d66fc2275fb5270cb7166cc991be7dc9d8ff7.tar.bz2
Pass referer on download requests
Bug: 6662557 Change-Id: Ib7fdc4b3f1e0f7370631d8a222565faaee550bfb
-rw-r--r--src/com/android/browser/Controller.java9
-rw-r--r--src/com/android/browser/DownloadHandler.java10
-rw-r--r--src/com/android/browser/PreloadController.java2
-rw-r--r--src/com/android/browser/Tab.java16
-rw-r--r--src/com/android/browser/WebViewController.java2
5 files changed, 21 insertions, 18 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index eefeffe..385d494 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -512,7 +512,7 @@ public class Controller
case R.id.save_link_context_menu_id:
case R.id.download_context_menu_id:
DownloadHandler.onDownloadStartNoStream(
- mActivity, url, null, null, null,
+ mActivity, url, null, null, null, null,
view.isPrivateBrowsingEnabled());
break;
}
@@ -1032,10 +1032,11 @@ public class Controller
@Override
public void onDownloadStart(Tab tab, String url, String userAgent,
- String contentDisposition, String mimetype, long contentLength) {
+ String contentDisposition, String mimetype, String referer,
+ long contentLength) {
WebView w = tab.getWebView();
DownloadHandler.onDownloadStart(mActivity, url, userAgent,
- contentDisposition, mimetype, w.isPrivateBrowsingEnabled());
+ contentDisposition, mimetype, referer, w.isPrivateBrowsingEnabled());
if (w.copyBackForwardList().getSize() == 0) {
// This Tab was opened for the sole purpose of downloading a
// file. Remove it.
@@ -2174,7 +2175,7 @@ public class Controller
saveDataUri();
} else {
DownloadHandler.onDownloadStartNoStream(mActivity, mText, null,
- null, null, mPrivateBrowsing);
+ null, null, null, mPrivateBrowsing);
}
return true;
}
diff --git a/src/com/android/browser/DownloadHandler.java b/src/com/android/browser/DownloadHandler.java
index 5517e59..dee10ae 100644
--- a/src/com/android/browser/DownloadHandler.java
+++ b/src/com/android/browser/DownloadHandler.java
@@ -21,7 +21,6 @@ import android.app.AlertDialog;
import android.app.DownloadManager;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
-import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -53,11 +52,12 @@ public class DownloadHandler {
* @param userAgent User agent of the downloading application.
* @param contentDisposition Content-disposition http header, if present.
* @param mimetype The mimetype of the content reported by the server
+ * @param referer The referer associated with the downloaded url
* @param privateBrowsing If the request is coming from a private browsing tab.
*/
public static void onDownloadStart(Activity activity, String url,
String userAgent, String contentDisposition, String mimetype,
- boolean privateBrowsing) {
+ String referer, boolean privateBrowsing) {
// if we're dealing wih A/V content that's not explicitly marked
// for download, check if it's streamable.
if (contentDisposition == null
@@ -95,7 +95,7 @@ public class DownloadHandler {
}
}
onDownloadStartNoStream(activity, url, userAgent, contentDisposition,
- mimetype, privateBrowsing);
+ mimetype, referer, privateBrowsing);
}
// This is to work around the fact that java.net.URI throws Exceptions
@@ -136,11 +136,12 @@ public class DownloadHandler {
* @param userAgent User agent of the downloading application.
* @param contentDisposition Content-disposition http header, if present.
* @param mimetype The mimetype of the content reported by the server
+ * @param referer The referer associated with the downloaded url
* @param privateBrowsing If the request is coming from a private browsing tab.
*/
/*package */ static void onDownloadStartNoStream(Activity activity,
String url, String userAgent, String contentDisposition,
- String mimetype, boolean privateBrowsing) {
+ String mimetype, String referer, boolean privateBrowsing) {
String filename = URLUtil.guessFileName(url,
contentDisposition, mimetype);
@@ -204,6 +205,7 @@ public class DownloadHandler {
String cookies = CookieManager.getInstance().getCookie(url, privateBrowsing);
request.addRequestHeader("cookie", cookies);
request.addRequestHeader("User-Agent", userAgent);
+ request.addRequestHeader("Referer", referer);
request.setNotificationVisibility(
DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
if (mimetype == null) {
diff --git a/src/com/android/browser/PreloadController.java b/src/com/android/browser/PreloadController.java
index a7feaee..881f19e 100644
--- a/src/com/android/browser/PreloadController.java
+++ b/src/com/android/browser/PreloadController.java
@@ -153,7 +153,7 @@ public class PreloadController implements WebViewController {
@Override
public void onDownloadStart(Tab tab, String url, String useragent,
String contentDisposition, String mimeType,
- long contentLength) {
+ String referer, long contentLength) {
if (LOGD_ENABLED) Log.d(LOGTAG, "onDownloadStart()");
}
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 484357e..b5000c2 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -46,9 +46,9 @@ import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewStub;
+import android.webkit.BrowserDownloadListener;
import android.webkit.ClientCertRequestHandler;
import android.webkit.ConsoleMessage;
-import android.webkit.DownloadListener;
import android.webkit.GeolocationPermissions;
import android.webkit.HttpAuthHandler;
import android.webkit.SslErrorHandler;
@@ -172,7 +172,7 @@ class Tab implements PictureListener {
private ErrorConsoleView mErrorConsole;
// The listener that gets invoked when a download is started from the
// mMainView
- private final DownloadListener mDownloadListener;
+ private final BrowserDownloadListener mDownloadListener;
// Listener used to know when we move forward or back in the history list.
private final WebBackForwardListClient mWebBackForwardListClient;
private DataController mDataController;
@@ -1160,12 +1160,12 @@ class Tab implements PictureListener {
mInPageLoad = false;
mInForeground = false;
- mDownloadListener = new DownloadListener() {
+ mDownloadListener = new BrowserDownloadListener() {
public void onDownloadStart(String url, String userAgent,
- String contentDisposition, String mimetype,
+ String contentDisposition, String mimetype, String referer,
long contentLength) {
mWebViewController.onDownloadStart(Tab.this, url, userAgent, contentDisposition,
- mimetype, contentLength);
+ mimetype, referer, contentLength);
}
};
mWebBackForwardListClient = new WebBackForwardListClient() {
@@ -1354,12 +1354,12 @@ class Tab implements PictureListener {
mWebChromeClient));
// Set a different DownloadListener for the mSubView, since it will
// just need to dismiss the mSubView, rather than close the Tab
- mSubView.setDownloadListener(new DownloadListener() {
+ mSubView.setDownloadListener(new BrowserDownloadListener() {
public void onDownloadStart(String url, String userAgent,
- String contentDisposition, String mimetype,
+ String contentDisposition, String mimetype, String referer,
long contentLength) {
mWebViewController.onDownloadStart(Tab.this, url, userAgent,
- contentDisposition, mimetype, contentLength);
+ contentDisposition, mimetype, referer, contentLength);
if (mSubView.copyBackForwardList().getSize() == 0) {
// This subwindow was opened for the sole purpose of
// downloading a file. Remove it.
diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java
index fef6964..e814ff9 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -73,7 +73,7 @@ public interface WebViewController {
final String host, final String realm);
void onDownloadStart(Tab tab, String url, String useragent, String contentDisposition,
- String mimeType, long contentLength);
+ String mimeType, String referer, long contentLength);
void showCustomView(Tab tab, View view, int requestedOrientation,
WebChromeClient.CustomViewCallback callback);