Merge "Provide referer to browser on download request." into jb-mr1-dev

This commit is contained in:
Selim Gurun
2012-08-29 15:39:10 -07:00
committed by Android (Google) Code Review
3 changed files with 70 additions and 5 deletions

View File

@@ -0,0 +1,57 @@
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.webkit;
/**
* An abstract download listener that allows passing extra information as
* part of onDownloadStart callback.
* @hide
*/
public abstract class BrowserDownloadListener implements DownloadListener {
/**
* Notify the host application that a file should be downloaded
* @param url The full url to the content that should be downloaded
* @param userAgent the user agent to be used for the download.
* @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 this url
* @param contentLength The file size reported by the server
*/
public abstract void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, String referer,
long contentLength);
/**
* Notify the host application that a file should be downloaded
* @param url The full url to the content that should be downloaded
* @param userAgent the user agent to be used for the download.
* @param contentDisposition Content-disposition http header, if
* present.
* @param mimetype The mimetype of the content reported by the server
* @param contentLength The file size reported by the server
*/
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
onDownloadStart(url, userAgent, contentDisposition, mimetype, null,
contentLength);
}
}

View File

@@ -1137,7 +1137,7 @@ class BrowserFrame extends Handler {
* DownloadListener.
*/
private void downloadStart(String url, String userAgent,
String contentDisposition, String mimeType, long contentLength) {
String contentDisposition, String mimeType, String referer, long contentLength) {
// This will only work if the url ends with the filename
if (mimeType.isEmpty()) {
try {
@@ -1157,7 +1157,7 @@ class BrowserFrame extends Handler {
mKeyStoreHandler = new KeyStoreHandler(mimeType);
} else {
mCallbackProxy.onDownloadStart(url, userAgent,
contentDisposition, mimeType, contentLength);
contentDisposition, mimeType, referer, contentLength);
}
}

View File

@@ -452,10 +452,16 @@ class CallbackProxy extends Handler {
String contentDisposition =
msg.getData().getString("contentDisposition");
String mimetype = msg.getData().getString("mimetype");
String referer = msg.getData().getString("referer");
Long contentLength = msg.getData().getLong("contentLength");
mDownloadListener.onDownloadStart(url, userAgent,
contentDisposition, mimetype, contentLength);
if (mDownloadListener instanceof BrowserDownloadListener) {
((BrowserDownloadListener) mDownloadListener).onDownloadStart(url,
userAgent, contentDisposition, mimetype, referer, contentLength);
} else {
mDownloadListener.onDownloadStart(url, userAgent,
contentDisposition, mimetype, contentLength);
}
}
break;
@@ -1179,7 +1185,8 @@ class CallbackProxy extends Handler {
* return false.
*/
public boolean onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
String contentDisposition, String mimetype, String referer,
long contentLength) {
// Do an unsynchronized quick check to avoid posting if no callback has
// been set.
if (mDownloadListener == null) {
@@ -1192,6 +1199,7 @@ class CallbackProxy extends Handler {
bundle.putString("url", url);
bundle.putString("userAgent", userAgent);
bundle.putString("mimetype", mimetype);
bundle.putString("referer", referer);
bundle.putLong("contentLength", contentLength);
bundle.putString("contentDisposition", contentDisposition);
sendMessage(msg);