Skip to content

Commit d5eec48

Browse files
authored
FDL getDynamicLink(Intent) method to accept null intent to be in sync with the documentation and since the intent is not a must parameter to derive the pending FDL. (#2629)
1 parent 5f29bb7 commit d5eec48

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/FirebaseDynamicLinks.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.content.Intent;
1919
import android.net.Uri;
2020
import androidx.annotation.NonNull;
21+
import androidx.annotation.Nullable;
2122
import com.google.android.gms.tasks.OnCompleteListener;
2223
import com.google.android.gms.tasks.OnFailureListener;
2324
import com.google.android.gms.tasks.OnSuccessListener;
@@ -99,7 +100,7 @@ public static synchronized FirebaseDynamicLinks getInstance(@NonNull FirebaseApp
99100
* <p>If a dynamic link, the call will also send FirebaseAnalytics dynamic link event.
100101
*/
101102
@NonNull
102-
public abstract Task<PendingDynamicLinkData> getDynamicLink(@NonNull Intent intent);
103+
public abstract Task<PendingDynamicLinkData> getDynamicLink(@Nullable Intent intent);
103104

104105
/**
105106
* Determine if the app has a pending dynamic link and provide access to the dynamic link

firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImpl.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,20 @@ public PendingDynamicLinkData getPendingDynamicLinkData(@NonNull Intent intent)
104104
}
105105

106106
@Override
107-
public Task<PendingDynamicLinkData> getDynamicLink(@NonNull final Intent intent) {
107+
public Task<PendingDynamicLinkData> getDynamicLink(@Nullable final Intent intent) {
108+
String dynamicLinkDataString = intent != null ? intent.getDataString() : null;
108109
Task<PendingDynamicLinkData> result =
109-
googleApi.doWrite(new GetDynamicLinkImpl(analytics, intent.getDataString()));
110-
PendingDynamicLinkData pendingDynamicLinkData = getPendingDynamicLinkData(intent);
111-
if (pendingDynamicLinkData != null) {
112-
// DynamicLinkData included in the Intent, return it immediately and allow the Task to run in
113-
// the background to do logging and mark the FDL as returned.
114-
result = Tasks.forResult(pendingDynamicLinkData);
110+
googleApi.doWrite(new GetDynamicLinkImpl(analytics, dynamicLinkDataString));
111+
112+
if (intent != null) {
113+
PendingDynamicLinkData pendingDynamicLinkData = getPendingDynamicLinkData(intent);
114+
if (pendingDynamicLinkData != null) {
115+
// DynamicLinkData included in the Intent, return it immediately and allow the Task to run
116+
// in the background to do logging and mark the FDL as returned.
117+
result = Tasks.forResult(pendingDynamicLinkData);
118+
}
115119
}
120+
116121
return result;
117122
}
118123

firebase-dynamic-links/src/test/java/com/google/firebase/dynamiclinks/internal/FirebaseDynamicLinksImplTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,13 @@ public void testGetDynamicLink_Intent() {
159159
.doWrite(ArgumentMatchers.<TaskApiCall<DynamicLinksClient, PendingDynamicLinkData>>any());
160160
}
161161

162+
@Test
163+
public void testGetDynamicLink_NullIntent() {
164+
api.getDynamicLink((Intent) null);
165+
verify(mockGoogleApi)
166+
.doWrite(ArgumentMatchers.<TaskApiCall<DynamicLinksClient, PendingDynamicLinkData>>any());
167+
}
168+
162169
@Test
163170
public void testGetDynamicLink_IntentWithDynamicLinkData() {
164171
Bundle extensions = new Bundle();

0 commit comments

Comments
 (0)