Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1034)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java

Issue 2588253002: Enable download page action for error page (Closed)
Patch Set: Address download feedback Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
index 78c40104567fa4e9aec6cf5576a04a13281d5d26..c228920794cde07e8c8df84592264bd3a51e353b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
@@ -38,6 +38,8 @@ import org.chromium.chrome.browser.download.ui.BackendProvider;
import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate;
import org.chromium.chrome.browser.download.ui.DownloadFilter;
import org.chromium.chrome.browser.download.ui.DownloadHistoryItemWrapper;
+import org.chromium.chrome.browser.offlinepages.ClientId;
+import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBridge;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
@@ -187,10 +189,21 @@ public class DownloadUtils {
* @param context Context to pull resources from.
*/
public static void downloadOfflinePage(Context context, Tab tab) {
- final OfflinePageDownloadBridge bridge = new OfflinePageDownloadBridge(tab.getProfile());
- bridge.startDownload(tab);
- bridge.destroy();
- DownloadUtils.recordDownloadPageMetrics(tab);
+ if (tab.isShowingErrorPage()) {
+ // The download needs to be scheduled to happen at later time due to current network
+ // error.
+ ClientId clientId = ClientId.createGuidClientIdForNamespace(
+ OfflinePageBridge.ASYNC_NAMESPACE);
+ final OfflinePageBridge bridge = OfflinePageBridge.getForProfile(tab.getProfile());
+ bridge.savePageLater(tab.getUrl(), clientId, true /* userRequested */);
+ } else {
+ // Otherwise, the download can be started immediately.
+ final OfflinePageDownloadBridge bridge =
+ new OfflinePageDownloadBridge(tab.getProfile());
+ bridge.startDownload(tab);
+ bridge.destroy();
+ DownloadUtils.recordDownloadPageMetrics(tab);
+ }
}
/**
@@ -201,13 +214,15 @@ public class DownloadUtils {
public static boolean isAllowedToDownloadPage(Tab tab) {
if (tab == null) return false;
- // Only allow HTTP and HTTPS pages, as that is these are the only scenarios supported by the
- // background/offline page saving.
- if (!tab.getUrl().startsWith(UrlConstants.HTTP_SCHEME)
- && !tab.getUrl().startsWith(UrlConstants.HTTPS_SCHEME)) {
- return false;
+ // Check if the page url is supported for saving. Only HTTP and HTTPS pages are allowed.
+ if (!OfflinePageBridge.canSavePage(tab.getUrl())) return false;
+
+ // Download will only be allowed for the error page if download button is shown in the page.
+ if (tab.isShowingErrorPage()) {
+ final OfflinePageBridge bridge = OfflinePageBridge.getForProfile(tab.getProfile());
+ return bridge.isShowingDownloadButtonInErrorPage(tab.getWebContents());
}
- if (tab.isShowingErrorPage()) return false;
+
if (tab.isShowingInterstitialPage()) return false;
// Don't allow re-downloading the currently displayed offline page.
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698