| Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| index 49d3decbda66eac6bd81e878614b9976b5518d03..2bebd710a4028bfbbba10d03983d6852b823b825 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| @@ -25,6 +25,7 @@ import android.util.Log;
|
|
|
| import org.chromium.base.ApplicationState;
|
| import org.chromium.base.ApplicationStatus;
|
| +import org.chromium.base.PathUtils;
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.ChromeActivity;
|
| @@ -281,10 +282,17 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
| }
|
|
|
| @Override
|
| - public boolean shouldRequestFileAccess(Tab tab) {
|
| + public boolean shouldRequestFileAccess(String url, Tab tab) {
|
| // If the tab is null, then do not attempt to prompt for access.
|
| if (tab == null) return false;
|
|
|
| + // If the url points inside of Chromium's data directory, no permissions are necessary.
|
| + // This is required to prevent permission prompt when uses wants to access offline pages.
|
| + if (url.startsWith("file://" + PathUtils.getDataDirectory(
|
| + mActivity.getApplicationContext()))) {
|
| + return false;
|
| + }
|
| +
|
| return !tab.getWindowAndroid().hasPermission(permission.WRITE_EXTERNAL_STORAGE)
|
| && tab.getWindowAndroid().canRequestPermission(permission.WRITE_EXTERNAL_STORAGE);
|
| }
|
|
|