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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java

Issue 2026953002: Disable external navigation for file downloads. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.externalnav; 5 package org.chromium.chrome.browser.externalnav;
6 6
7 import android.Manifest.permission; 7 import android.Manifest.permission;
8 import android.app.Activity; 8 import android.app.Activity;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.DialogInterface; 10 import android.content.DialogInterface;
11 import android.content.DialogInterface.OnCancelListener; 11 import android.content.DialogInterface.OnCancelListener;
12 import android.content.DialogInterface.OnClickListener; 12 import android.content.DialogInterface.OnClickListener;
13 import android.content.Intent; 13 import android.content.Intent;
14 import android.content.IntentFilter; 14 import android.content.IntentFilter;
15 import android.content.pm.ActivityInfo; 15 import android.content.pm.ActivityInfo;
16 import android.content.pm.PackageManager; 16 import android.content.pm.PackageManager;
17 import android.content.pm.ResolveInfo; 17 import android.content.pm.ResolveInfo;
18 import android.net.Uri; 18 import android.net.Uri;
19 import android.os.Build; 19 import android.os.Build;
20 import android.os.TransactionTooLargeException; 20 import android.os.TransactionTooLargeException;
21 import android.provider.Browser; 21 import android.provider.Browser;
22 import android.provider.Telephony; 22 import android.provider.Telephony;
23 import android.support.v7.app.AlertDialog; 23 import android.support.v7.app.AlertDialog;
24 import android.text.TextUtils; 24 import android.text.TextUtils;
25 import android.util.Log; 25 import android.util.Log;
26 import android.webkit.MimeTypeMap;
26 27
27 import org.chromium.base.ApplicationState; 28 import org.chromium.base.ApplicationState;
28 import org.chromium.base.ApplicationStatus; 29 import org.chromium.base.ApplicationStatus;
29 import org.chromium.base.ContextUtils; 30 import org.chromium.base.ContextUtils;
30 import org.chromium.base.PathUtils; 31 import org.chromium.base.PathUtils;
31 import org.chromium.base.ThreadUtils; 32 import org.chromium.base.ThreadUtils;
32 import org.chromium.chrome.R; 33 import org.chromium.chrome.R;
33 import org.chromium.chrome.browser.ChromeActivity; 34 import org.chromium.chrome.browser.ChromeActivity;
35 import org.chromium.chrome.browser.ChromeFeatureList;
34 import org.chromium.chrome.browser.ChromeTabbedActivity2; 36 import org.chromium.chrome.browser.ChromeTabbedActivity2;
35 import org.chromium.chrome.browser.IntentHandler; 37 import org.chromium.chrome.browser.IntentHandler;
36 import org.chromium.chrome.browser.document.ChromeLauncherActivity; 38 import org.chromium.chrome.browser.document.ChromeLauncherActivity;
37 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.Overrid eUrlLoadingResult; 39 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.Overrid eUrlLoadingResult;
38 import org.chromium.chrome.browser.tab.Tab; 40 import org.chromium.chrome.browser.tab.Tab;
39 import org.chromium.chrome.browser.util.FeatureUtilities; 41 import org.chromium.chrome.browser.util.FeatureUtilities;
40 import org.chromium.chrome.browser.util.UrlUtilities; 42 import org.chromium.chrome.browser.util.UrlUtilities;
41 import org.chromium.content_public.browser.LoadUrlParams; 43 import org.chromium.content_public.browser.LoadUrlParams;
42 import org.chromium.content_public.common.Referrer; 44 import org.chromium.content_public.common.Referrer;
43 import org.chromium.ui.base.PageTransition; 45 import org.chromium.ui.base.PageTransition;
44 import org.chromium.ui.base.WindowAndroid; 46 import org.chromium.ui.base.WindowAndroid;
45 import org.chromium.ui.base.WindowAndroid.PermissionCallback; 47 import org.chromium.ui.base.WindowAndroid.PermissionCallback;
46 48
47 import java.util.List; 49 import java.util.List;
48 50
49 /** 51 /**
50 * The main implementation of the {@link ExternalNavigationDelegate}. 52 * The main implementation of the {@link ExternalNavigationDelegate}.
51 */ 53 */
52 public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat e { 54 public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat e {
53 private static final String TAG = "ExternalNavigationDelegateImpl"; 55 private static final String TAG = "ExternalNavigationDelegateImpl";
54 private static final String PDF_VIEWER = "com.google.android.apps.docs"; 56 private static final String PDF_VIEWER = "com.google.android.apps.docs";
55 private static final String PDF_MIME = "application/pdf"; 57 private static final String PDF_MIME = "application/pdf";
56 private static final String PDF_SUFFIX = ".pdf"; 58 private static final String PDF_SUFFIX = ".pdf";
59 private static final String PDF_EXTENSION = "pdf";
57 60
58 protected final Context mApplicationContext; 61 protected final Context mApplicationContext;
59 private final Tab mTab; 62 private final Tab mTab;
60 63
61 public ExternalNavigationDelegateImpl(Tab tab) { 64 public ExternalNavigationDelegateImpl(Tab tab) {
62 mTab = tab; 65 mTab = tab;
63 mApplicationContext = tab.getWindowAndroid().getApplicationContext(); 66 mApplicationContext = tab.getWindowAndroid().getApplicationContext();
64 } 67 }
65 68
66 /** 69 /**
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 throw e; 475 throw e;
473 } 476 }
474 } 477 }
475 478
476 private void closeTab(Tab tab) { 479 private void closeTab(Tab tab) {
477 Context context = tab.getWindowAndroid().getContext().get(); 480 Context context = tab.getWindowAndroid().getContext().get();
478 if (context instanceof ChromeActivity) { 481 if (context instanceof ChromeActivity) {
479 ((ChromeActivity) context).getTabModelSelector().closeTab(tab); 482 ((ChromeActivity) context).getTabModelSelector().closeTab(tab);
480 } 483 }
481 } 484 }
485
486 @Override
487 public boolean isPdfDownload(String url) {
488 if (ChromeFeatureList.isEnabled(ChromeFeatureList.SYSTEM_DOWNLOAD_MANAGE R)) return false;
489
490 String fileExtension = MimeTypeMap.getFileExtensionFromUrl(url);
491 if (TextUtils.isEmpty(fileExtension)) return false;
492
493 return PDF_EXTENSION.equals(fileExtension);
494 }
482 } 495 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698