diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/Controller.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index f4588bd..b01ea54 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); |