Merge "Provide referer to browser on download request." into jb-mr1-dev
This commit is contained in:
57
core/java/android/webkit/BrowserDownloadListener.java
Normal file
57
core/java/android/webkit/BrowserDownloadListener.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user