Commit a3a9e393 authored by Michael Thiessen's avatar Michael Thiessen Committed by Commit Bot

Fix NPE with null intent data string in ExternalNavigationHandler

Bug: 1061460
Change-Id: I5d5c585ff3cecae9ac69c12737130bda89257b11
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2102778Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/master@{#750266}
parent a1dc5842
...@@ -471,6 +471,8 @@ public class ExternalNavigationHandlerTest { ...@@ -471,6 +471,8 @@ public class ExternalNavigationHandlerTest {
+ "component=package/class;end"; + "component=package/class;end";
String urlWithSel = "intent:wtai://wp/#Intent;SEL;action=android.settings.SETTINGS;" String urlWithSel = "intent:wtai://wp/#Intent;SEL;action=android.settings.SETTINGS;"
+ "component=package/class;end"; + "component=package/class;end";
String urlWithNullData = "intent:#Intent;package=com.google.zxing.client.android;"
+ "action=android.settings.SETTINGS;end";
checkUrl(url).expecting( checkUrl(url).expecting(
OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_OTHER_ACTIVITY); OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_OTHER_ACTIVITY);
...@@ -479,6 +481,10 @@ public class ExternalNavigationHandlerTest { ...@@ -479,6 +481,10 @@ public class ExternalNavigationHandlerTest {
checkUrl(urlWithSel) checkUrl(urlWithSel)
.expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
START_OTHER_ACTIVITY); START_OTHER_ACTIVITY);
checkUrl(urlWithNullData)
.expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
START_OTHER_ACTIVITY);
} }
@Test @Test
...@@ -1722,6 +1728,7 @@ public class ExternalNavigationHandlerTest { ...@@ -1722,6 +1728,7 @@ public class ExternalNavigationHandlerTest {
public List<ResolveInfo> queryIntentActivities(Intent intent) { public List<ResolveInfo> queryIntentActivities(Intent intent) {
List<ResolveInfo> list = new ArrayList<>(); List<ResolveInfo> list = new ArrayList<>();
String dataString = intent.getDataString(); String dataString = intent.getDataString();
if (dataString == null) return list;
if (dataString.startsWith("http://") || dataString.startsWith("https://")) { if (dataString.startsWith("http://") || dataString.startsWith("https://")) {
list.add(newResolveInfo("chrome")); list.add(newResolveInfo("chrome"));
} }
......
...@@ -452,6 +452,7 @@ public class ExternalNavigationHandler { ...@@ -452,6 +452,7 @@ public class ExternalNavigationHandler {
// also call fixUpUrl on this user-provided URL as the fixed-up URL is what we would end // also call fixUpUrl on this user-provided URL as the fixed-up URL is what we would end
// up navigating to. // up navigating to.
url = targetIntent.getDataString(); url = targetIntent.getDataString();
if (url == null) return false;
} else { } else {
url = params.getUrl(); url = params.getUrl();
} }
...@@ -471,6 +472,7 @@ public class ExternalNavigationHandler { ...@@ -471,6 +472,7 @@ public class ExternalNavigationHandler {
String url; String url;
if (hasIntentScheme) { if (hasIntentScheme) {
url = targetIntent.getDataString(); url = targetIntent.getDataString();
if (url == null) return false;
} else { } else {
url = params.getUrl(); url = params.getUrl();
} }
......
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