Commit 4f37ab64 authored by Colin Blundell's avatar Colin Blundell Committed by Commit Bot

Android: Dedupe isPdfIntent() into ExternalNavigationHandler.java

As part of sharing as much as possible between the //chrome and
//weblayer implementations of intent launching as possible, this CL
dedupes the identical ExternalNavigationDelegateImpl#isPdfIntent()
helpers into the shared ExternalNavigationHandler.java.

Bug: 1071390
Change-Id: I030e22605ad1d982c339ec1a04ffdc55cef2ed35
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2156545Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: Colin Blundell <blundell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760492}
parent 8a20aa4b
......@@ -75,8 +75,6 @@ import java.util.List;
*/
public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegate {
private static final String PDF_VIEWER = "com.google.android.apps.docs";
private static final String PDF_MIME = "application/pdf";
private static final String PDF_SUFFIX = ".pdf";
private static final String PDF_EXTENSION = "pdf";
protected final Context mApplicationContext;
......@@ -119,7 +117,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
* @param intent Intent to open.
*/
public static void forcePdfViewerAsIntentHandlerIfNeeded(Intent intent) {
if (intent == null || !isPdfIntent(intent)) return;
if (intent == null || !ExternalNavigationHandler.isPdfIntent(intent)) return;
resolveIntent(intent, true /* allowSelfOpen (ignored) */);
}
......@@ -155,7 +153,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
if (packageName.equals(pName)) {
canSelfOpen = true;
} else if (PDF_VIEWER.equals(pName)) {
if (isPdfIntent(intent)) {
if (ExternalNavigationHandler.isPdfIntent(intent)) {
intent.setClassName(pName, resolveInfo.activityInfo.name);
Uri referrer = new Uri.Builder()
.scheme(IntentHandler.ANDROID_APP_REFERRER_SCHEME)
......@@ -170,13 +168,6 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return !canSelfOpen || allowSelfOpen || hasPdfViewer;
}
private static boolean isPdfIntent(Intent intent) {
if (intent == null || intent.getData() == null) return false;
String filename = intent.getData().getLastPathSegment();
return (filename != null && filename.endsWith(PDF_SUFFIX))
|| PDF_MIME.equals(intent.getType());
}
/**
* Determines whether Chrome will be handling the given Intent.
*
......
......@@ -63,6 +63,9 @@ public class ExternalNavigationHandler {
private static final String PLAY_APP_PATH = "/store/apps/details";
private static final String PLAY_HOSTNAME = "play.google.com";
private static final String PDF_MIME = "application/pdf";
private static final String PDF_SUFFIX = ".pdf";
@VisibleForTesting
public static final String EXTRA_BROWSER_FALLBACK_URL = "browser_fallback_url";
......@@ -1121,6 +1124,15 @@ public class ExternalNavigationHandler {
|| intent.getSelector().filterEquals(other.getSelector()));
}
// TODO(crbug.com/1071390): Make this method private if/once its consumers have been moved into
// this class.
public static boolean isPdfIntent(Intent intent) {
if (intent == null || intent.getData() == null) return false;
String filename = intent.getData().getLastPathSegment();
return (filename != null && filename.endsWith(PDF_SUFFIX))
|| PDF_MIME.equals(intent.getType());
}
// TODO(crbug.com/1071390): Make this method private once its consumers have been moved into
// this class.
public static boolean matchResolveInfoExceptWildCardHost(
......
......@@ -49,8 +49,6 @@ import java.util.List;
*/
public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegate {
private static final String PDF_VIEWER = "com.google.android.apps.docs";
private static final String PDF_MIME = "application/pdf";
private static final String PDF_SUFFIX = ".pdf";
private static final String PDF_EXTENSION = "pdf";
protected final Context mApplicationContext;
......@@ -97,7 +95,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
* @param intent Intent to open.
*/
public static void forcePdfViewerAsIntentHandlerIfNeeded(Intent intent) {
if (intent == null || !isPdfIntent(intent)) return;
if (intent == null || !ExternalNavigationHandler.isPdfIntent(intent)) return;
resolveIntent(intent, true /* allowSelfOpen (ignored) */);
}
......@@ -133,7 +131,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
if (packageName.equals(pName)) {
canSelfOpen = true;
} else if (PDF_VIEWER.equals(pName)) {
if (isPdfIntent(intent)) {
if (ExternalNavigationHandler.isPdfIntent(intent)) {
intent.setClassName(pName, resolveInfo.activityInfo.name);
// TODO(crbug.com/1031465): Use IntentHandler.java's version of this constant
// once it's componentized.
......@@ -150,13 +148,6 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return !canSelfOpen || allowSelfOpen || hasPdfViewer;
}
private static boolean isPdfIntent(Intent intent) {
if (intent == null || intent.getData() == null) return false;
String filename = intent.getData().getLastPathSegment();
return (filename != null && filename.endsWith(PDF_SUFFIX))
|| PDF_MIME.equals(intent.getType());
}
@Override
public boolean willChromeHandleIntent(Intent intent) {
return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment