summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2011-02-02 12:54:07 -0500
committerLeon Scroggins <scroggo@google.com>2011-02-11 09:23:32 -0500
commitac993841b3f810dd55a985141c574d4dfebd8c1a (patch)
treebdc64ab8ff115ec69973c422a4e955ff3792d785 /src/com/android
parent4216b649af17ddc750752d7985edcdb4d240b5c2 (diff)
downloadpackages_apps_Browser-ac993841b3f810dd55a985141c574d4dfebd8c1a.tar.gz
packages_apps_Browser-ac993841b3f810dd55a985141c574d4dfebd8c1a.tar.bz2
packages_apps_Browser-ac993841b3f810dd55a985141c574d4dfebd8c1a.zip
Integrate Save WebArchive with download manager.
Bug:2968359 Bug:2905874 Change-Id: I80f557af415b03698325397d7a10d66bb0c10827
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/browser/Controller.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index f4588bdf5..b01ea54ee 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -43,6 +43,7 @@ import android.net.Uri;
import android.net.http.SslError;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
@@ -77,6 +78,7 @@ import android.webkit.WebChromeClient;
import android.webkit.WebIconDatabase;
import android.webkit.WebSettings;
import android.webkit.WebView;
+import android.widget.Toast;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -1567,6 +1569,52 @@ public class Controller
getCurrentTopWebView().showFindDialog(null, true);
break;
+ case R.id.save_webarchive_menu_id:
+ String state = Environment.getExternalStorageState();
+ if (!Environment.MEDIA_MOUNTED.equals(state)) {
+ Log.e(LOGTAG, "External storage not mounted");
+ Toast.makeText(mActivity, R.string.webarchive_failed,
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
+ final String directory = Environment.getExternalStoragePublicDirectory(
+ Environment.DIRECTORY_DOWNLOADS) + File.separator;
+ File dir = new File(directory);
+ if (!dir.exists() && !dir.mkdirs()) {
+ Log.e(LOGTAG, "Save as Web Archive: mkdirs for " + directory + " failed!");
+ Toast.makeText(mActivity, R.string.webarchive_failed,
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
+ WebView topWebView = getCurrentTopWebView();
+ final String title = topWebView.getTitle();
+ topWebView.saveWebArchive(directory, true,
+ new ValueCallback<String>() {
+ @Override
+ public void onReceiveValue(final String value) {
+ if (value != null) {
+ File file = new File(value);
+ final long length = file.length();
+ if (file.exists() && length > 0) {
+ final DownloadManager manager = (DownloadManager) mActivity
+ .getSystemService(Context.DOWNLOAD_SERVICE);
+ new Thread("Add WebArchive to download manager") {
+ @Override
+ public void run() {
+ manager.completedDownload(null == title ? value : title,
+ value, true, "application/x-webarchive-xml",
+ value, length, true);
+ }
+ }.start();
+ return;
+ }
+ }
+ Toast.makeText(mActivity,
+ R.string.webarchive_failed, Toast.LENGTH_SHORT).show();
+ }
+ });
+ break;
+
case R.id.page_info_menu_id:
mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(),
false);