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; ...@@ -75,8 +75,6 @@ import java.util.List;
*/ */
public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegate { public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegate {
private static final String PDF_VIEWER = "com.google.android.apps.docs"; 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"; private static final String PDF_EXTENSION = "pdf";
protected final Context mApplicationContext; protected final Context mApplicationContext;
...@@ -119,7 +117,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat ...@@ -119,7 +117,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
* @param intent Intent to open. * @param intent Intent to open.
*/ */
public static void forcePdfViewerAsIntentHandlerIfNeeded(Intent intent) { public static void forcePdfViewerAsIntentHandlerIfNeeded(Intent intent) {
if (intent == null || !isPdfIntent(intent)) return; if (intent == null || !ExternalNavigationHandler.isPdfIntent(intent)) return;
resolveIntent(intent, true /* allowSelfOpen (ignored) */); resolveIntent(intent, true /* allowSelfOpen (ignored) */);
} }
...@@ -155,7 +153,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat ...@@ -155,7 +153,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
if (packageName.equals(pName)) { if (packageName.equals(pName)) {
canSelfOpen = true; canSelfOpen = true;
} else if (PDF_VIEWER.equals(pName)) { } else if (PDF_VIEWER.equals(pName)) {
if (isPdfIntent(intent)) { if (ExternalNavigationHandler.isPdfIntent(intent)) {
intent.setClassName(pName, resolveInfo.activityInfo.name); intent.setClassName(pName, resolveInfo.activityInfo.name);
Uri referrer = new Uri.Builder() Uri referrer = new Uri.Builder()
.scheme(IntentHandler.ANDROID_APP_REFERRER_SCHEME) .scheme(IntentHandler.ANDROID_APP_REFERRER_SCHEME)
...@@ -170,13 +168,6 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat ...@@ -170,13 +168,6 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return !canSelfOpen || allowSelfOpen || hasPdfViewer; 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. * Determines whether Chrome will be handling the given Intent.
* *
......
...@@ -63,6 +63,9 @@ public class ExternalNavigationHandler { ...@@ -63,6 +63,9 @@ public class ExternalNavigationHandler {
private static final String PLAY_APP_PATH = "/store/apps/details"; private static final String PLAY_APP_PATH = "/store/apps/details";
private static final String PLAY_HOSTNAME = "play.google.com"; 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 @VisibleForTesting
public static final String EXTRA_BROWSER_FALLBACK_URL = "browser_fallback_url"; public static final String EXTRA_BROWSER_FALLBACK_URL = "browser_fallback_url";
...@@ -1121,6 +1124,15 @@ public class ExternalNavigationHandler { ...@@ -1121,6 +1124,15 @@ public class ExternalNavigationHandler {
|| intent.getSelector().filterEquals(other.getSelector())); || 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 // TODO(crbug.com/1071390): Make this method private once its consumers have been moved into
// this class. // this class.
public static boolean matchResolveInfoExceptWildCardHost( public static boolean matchResolveInfoExceptWildCardHost(
......
...@@ -49,8 +49,6 @@ import java.util.List; ...@@ -49,8 +49,6 @@ import java.util.List;
*/ */
public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegate { public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegate {
private static final String PDF_VIEWER = "com.google.android.apps.docs"; 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"; private static final String PDF_EXTENSION = "pdf";
protected final Context mApplicationContext; protected final Context mApplicationContext;
...@@ -97,7 +95,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat ...@@ -97,7 +95,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
* @param intent Intent to open. * @param intent Intent to open.
*/ */
public static void forcePdfViewerAsIntentHandlerIfNeeded(Intent intent) { public static void forcePdfViewerAsIntentHandlerIfNeeded(Intent intent) {
if (intent == null || !isPdfIntent(intent)) return; if (intent == null || !ExternalNavigationHandler.isPdfIntent(intent)) return;
resolveIntent(intent, true /* allowSelfOpen (ignored) */); resolveIntent(intent, true /* allowSelfOpen (ignored) */);
} }
...@@ -133,7 +131,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat ...@@ -133,7 +131,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
if (packageName.equals(pName)) { if (packageName.equals(pName)) {
canSelfOpen = true; canSelfOpen = true;
} else if (PDF_VIEWER.equals(pName)) { } else if (PDF_VIEWER.equals(pName)) {
if (isPdfIntent(intent)) { if (ExternalNavigationHandler.isPdfIntent(intent)) {
intent.setClassName(pName, resolveInfo.activityInfo.name); intent.setClassName(pName, resolveInfo.activityInfo.name);
// TODO(crbug.com/1031465): Use IntentHandler.java's version of this constant // TODO(crbug.com/1031465): Use IntentHandler.java's version of this constant
// once it's componentized. // once it's componentized.
...@@ -150,13 +148,6 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat ...@@ -150,13 +148,6 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return !canSelfOpen || allowSelfOpen || hasPdfViewer; 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 @Override
public boolean willChromeHandleIntent(Intent intent) { public boolean willChromeHandleIntent(Intent intent) {
return false; 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