OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |