Skip to content

Commit 0d95ad5

Browse files
authored
Use custom tab only for web actions (#2310)
1 parent a613ba8 commit 0d95ad5

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

firebase-inappmessaging-display/src/main/java/com/google/firebase/inappmessaging/display/FirebaseInAppMessagingDisplay.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ private void notifyFiamDismiss() {
534534
}
535535

536536
private void launchUriIntent(Activity activity, Uri uri) {
537-
if (supportsCustomTabs(activity)) {
537+
if (ishttpOrHttpsUri(uri) && supportsCustomTabs(activity)) {
538538
// If we can launch a chrome view, try that.
539539
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
540540
Intent intent = customTabsIntent.intent;
@@ -563,4 +563,12 @@ private boolean supportsCustomTabs(Activity activity) {
563563
activity.getPackageManager().queryIntentServices(customTabIntent, 0);
564564
return resolveInfos != null && !resolveInfos.isEmpty();
565565
}
566+
567+
private boolean ishttpOrHttpsUri(Uri uri) {
568+
if (uri == null) {
569+
return false;
570+
}
571+
String scheme = uri.getScheme();
572+
return scheme != null && (scheme.equalsIgnoreCase("http") || scheme.equalsIgnoreCase("https"));
573+
}
566574
}

firebase-inappmessaging-display/src/test/java/com/google/firebase/inappmessaging/display/FirebaseInAppMessagingDisplayTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121
import static com.google.firebase.inappmessaging.testutil.TestData.CARD_MESSAGE_MODEL;
2222
import static com.google.firebase.inappmessaging.testutil.TestData.IMAGE_MESSAGE_MODEL;
2323
import static com.google.firebase.inappmessaging.testutil.TestData.IMAGE_MESSAGE_MODEL_WITHOUT_ACTION;
24+
import static com.google.firebase.inappmessaging.testutil.TestData.IMAGE_MESSAGE_WEB_ACTION_MODEL;
2425
import static com.google.firebase.inappmessaging.testutil.TestData.IMAGE_URL_STRING;
2526
import static com.google.firebase.inappmessaging.testutil.TestData.MODAL_MESSAGE_MODEL;
27+
import static com.google.firebase.inappmessaging.testutil.TestData.WEB_ACTION_URL_STRING;
2628
import static org.mockito.ArgumentMatchers.any;
2729
import static org.mockito.ArgumentMatchers.anyLong;
2830
import static org.mockito.ArgumentMatchers.eq;
@@ -589,12 +591,15 @@ public void fiamClickListener_whenActionUrlProvided_andChromeAvailable_opensCust
589591
customTabIntent.setPackage("com.android.chrome");
590592
shadowPackageManager.addResolveInfoForIntent(customTabIntent, resolveInfo);
591593
resumeActivity(activity);
592-
listener.displayMessage(IMAGE_MESSAGE_MODEL, callbacks);
594+
listener.displayMessage(IMAGE_MESSAGE_WEB_ACTION_MODEL, callbacks);
593595
verify(imageBindingWrapper)
594596
.inflate(onClickListenerArgCaptor.capture(), any(OnClickListener.class));
595-
onClickListenerArgCaptor.getValue().get(IMAGE_MESSAGE_MODEL.getAction()).onClick(null);
597+
onClickListenerArgCaptor
598+
.getValue()
599+
.get(IMAGE_MESSAGE_WEB_ACTION_MODEL.getAction())
600+
.onClick(null);
596601
assertThat(shadowActivity.getNextStartedActivity().getData())
597-
.isEqualTo(Uri.parse(ACTION_URL_STRING));
602+
.isEqualTo(Uri.parse(WEB_ACTION_URL_STRING));
598603
}
599604

600605
@Test

firebase-inappmessaging/src/testData/inappmessaging/testutil/TestData.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ public class TestData {
7777
Button.builder().setText(BUTTON_TEXT_MODEL).setButtonHexColor(BUTTON_BG_STRING).build();
7878

7979
// ************************* ACTION *************************
80-
public static final String ACTION_URL_STRING = "action_url";
80+
public static final String ACTION_URL_STRING = "fiam://action_url";
81+
public static final String WEB_ACTION_URL_STRING = "http://action_url";
8182
public static final String SECONDARY_ACTION_URL_STRING = "secondary_action";
8283
public static final Action ACTION_MODEL_WITHOUT_BUTTON =
8384
Action.builder().setActionUrl(ACTION_URL_STRING).build();
@@ -89,6 +90,8 @@ public class TestData {
8990
Action.builder().setActionUrl(ACTION_URL_STRING).setButton(BUTTON_MODEL).build();
9091
public static final Action SECONDARY_ACTION_MODEL_WITH_BUTTON =
9192
Action.builder().setActionUrl(SECONDARY_ACTION_URL_STRING).setButton(BUTTON_MODEL).build();
93+
public static final Action WEB_ACTION_MODEL_WITHOUT_BUTTON =
94+
Action.builder().setActionUrl(WEB_ACTION_URL_STRING).build();
9295

9396
// ************************* BANNER *************************
9497
public static final BannerMessage BANNER_MESSAGE_MODEL =
@@ -156,6 +159,12 @@ public class TestData {
156159
.setImageData(IMAGE_DATA)
157160
.build(CAMPAIGN_METADATA_MODEL, DATA);
158161

162+
public static final ImageOnlyMessage IMAGE_MESSAGE_WEB_ACTION_MODEL =
163+
ImageOnlyMessage.builder()
164+
.setAction(WEB_ACTION_MODEL_WITHOUT_BUTTON)
165+
.setImageData(IMAGE_DATA)
166+
.build(CAMPAIGN_METADATA_MODEL, DATA);
167+
159168
public static final ImageOnlyMessage IMAGE_MESSAGE_MODEL_WITHOUT_ACTION =
160169
ImageOnlyMessage.builder().setImageData(IMAGE_DATA).build(CAMPAIGN_METADATA_MODEL, DATA);
161170

0 commit comments

Comments
 (0)