| Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| index 044f6053657d5cfd3182c53690d1b98a7a55b5e5..2b29bcbdc228be35f29a89ebe71d8e53b0c25641 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| @@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ChromeActivity;
|
| import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.IntentHandler;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| +import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
|
| import org.chromium.chrome.browser.util.IntentUtils;
|
| import org.chromium.chrome.browser.util.UrlUtilities;
|
| import org.chromium.ui.base.PageTransition;
|
| @@ -172,12 +173,16 @@ public class ExternalNavigationHandler {
|
| // If accessing a file URL, ensure that the user has granted the necessary file access
|
| // to Chrome. This check should happen for reloads, navigations, etc..., which is why
|
| // it occurs before the subsequent blocks.
|
| - if (params.getUrl().startsWith("file:")
|
| - && mDelegate.shouldRequestFileAccess(params.getTab())) {
|
| - mDelegate.startFileIntent(
|
| - intent, params.getReferrerUrl(), params.getTab(),
|
| - params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent());
|
| - return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
|
| + if (params.getUrl().startsWith("file:")) {
|
| + // If accessing a file URL, which points to inside of an offline copy archive, there
|
| + // is no need to override the navigation.
|
| + if (OfflinePageUtils.isOfflineUrlForStoragePermissionCheck(params.getUrl())) {
|
| + return OverrideUrlLoadingResult.NO_OVERRIDE;
|
| + } else if (mDelegate.shouldRequestFileAccess(params.getTab())) {
|
| + mDelegate.startFileIntent(intent, params.getReferrerUrl(), params.getTab(),
|
| + params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent());
|
| + return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
|
| + }
|
| }
|
|
|
| // http://crbug/331571 : Do not override a navigation started from user typing.
|
|
|