Skip to content

Commit 1934f45

Browse files
committed
Merge branch 'master' into crashlytics/anrs
2 parents e819449 + 1cbfea5 commit 1934f45

File tree

18 files changed

+41
-35
lines changed

18 files changed

+41
-35
lines changed

appcheck/firebase-appcheck-debug-testing/firebase-appcheck-debug-testing.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ android {
3232
minSdkVersion project.minSdkVersion
3333
versionName version
3434
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
35-
// TODO: Uncomment the line below once we configure the debug secret environment variable in the public repo.
36-
// testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("FIREBASE_APP_CHECK_DEBUG_SECRET") ?: ''
35+
testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("FIREBASE_APP_CHECK_DEBUG_SECRET") ?: ''
3736
}
3837
compileOptions {
3938
sourceCompatibility JavaVersion.VERSION_1_8

appcheck/firebase-appcheck-debug-testing/src/androidTest/java/com/google/firebase/appcheck/debug/testing/FirebaseAppCheckTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.junit.runner.RunWith;
3535

3636
@RunWith(AndroidJUnit4.class)
37-
@Ignore("TODO: Re-enable after setting up debug secret environment variable in public repo.")
3837
public class FirebaseAppCheckTest {
3938
private final DebugAppCheckTestHelper debugAppCheckTestHelper =
4039
DebugAppCheckTestHelper.fromInstrumentationArgs();

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/DefaultAppCheckToken.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,10 @@ public long getExpireTimeMillis() {
9696
return receivedAtTimestamp + expiresInMillis;
9797
}
9898

99-
@VisibleForTesting
10099
long getReceivedAtTimestamp() {
101100
return receivedAtTimestamp;
102101
}
103102

104-
@VisibleForTesting
105103
long getExpiresInMillis() {
106104
return expiresInMillis;
107105
}

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/TokenRefreshManager.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
public final class TokenRefreshManager {
3030

3131
private static final long REFRESH_BUFFER_ABSOLUTE_MILLIS = 60 * 1000; // 60 seconds
32-
private static final double REFRESH_BUFFER_FRACTION = 0.9;
32+
private static final double REFRESH_BUFFER_FRACTION = 0.5;
33+
private static final long FIVE_MINUTES_IN_MILLIS = 5 * 60 * 1000;
3334
private static final long UNSET_REFRESH_TIME = -1;
3435

3536
private final DefaultTokenRefresher tokenRefresher;
@@ -84,13 +85,16 @@ public void maybeScheduleTokenRefresh(@NonNull AppCheckToken token) {
8485
defaultToken = DefaultAppCheckToken.constructFromRawToken(token.getToken());
8586
}
8687

87-
// The next refresh time is either receivedAt + 0.9*expiresIn or 60 seconds before expiration,
88-
// whichever is earlier.
88+
// The next refresh time is receivedAt + 0.5*expiresIn + 5 minutes.
8989
nextRefreshTimeMillis =
90-
Math.min(
91-
defaultToken.getReceivedAtTimestamp()
92-
+ (long) (REFRESH_BUFFER_FRACTION * defaultToken.getExpiresInMillis()),
93-
defaultToken.getExpireTimeMillis() - REFRESH_BUFFER_ABSOLUTE_MILLIS);
90+
defaultToken.getReceivedAtTimestamp()
91+
+ (long) (REFRESH_BUFFER_FRACTION * defaultToken.getExpiresInMillis())
92+
+ FIVE_MINUTES_IN_MILLIS;
93+
if (nextRefreshTimeMillis > defaultToken.getExpireTimeMillis()) {
94+
// This shouldn't happen, as the minimum allowed TTL should be at least 15 minutes, but adding
95+
// this check to be safe.
96+
nextRefreshTimeMillis = defaultToken.getExpireTimeMillis() - REFRESH_BUFFER_ABSOLUTE_MILLIS;
97+
}
9498
if (shouldScheduleRefresh()) {
9599
tokenRefresher.scheduleRefresh(nextRefreshTimeMillis - clock.currentTimeMillis());
96100
}

appcheck/firebase-appcheck/src/test/java/com/google/firebase/appcheck/internal/TokenRefreshManagerTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class TokenRefreshManagerTest {
3636
private static final String TOKEN_PAYLOAD = "tokenPayload";
3737
private static final long EXPIRES_IN_ONE_HOUR_MILLIS = 60L * 60L * 1000L;
3838
private static final long EXPIRE_IN_THREE_MINUTES_MILLIS = 3L * 60L * 1000L;
39-
private static final long NINE_TENTHS_HOUR_MILLIS = 3240000L; // 0.9 * 1 hour
39+
private static final long THIRTY_FIVE_MINUTES_MILLIS = 35L * 60L * 1000L;
4040
private static final long TWO_MINUTES_MILLIS = 2L * 60L * 1000L;
4141
private static final long CURRENT_TIME_MILLIS = 1000L;
4242

@@ -73,11 +73,14 @@ public void maybeScheduleTokenRefresh_useExpirationTimeFractionBuffer() {
7373
tokenRefreshManager.onListenerCountChanged(/* newListenerCount= */ 1);
7474
tokenRefreshManager.maybeScheduleTokenRefresh(expiresInOneHourToken);
7575

76-
verify(mockTokenRefresher).scheduleRefresh(NINE_TENTHS_HOUR_MILLIS);
76+
verify(mockTokenRefresher).scheduleRefresh(THIRTY_FIVE_MINUTES_MILLIS);
7777
}
7878

7979
@Test
8080
public void maybeScheduleTokenRefresh_useExpirationTimeAbsoluteBuffer() {
81+
// This should not occur, as the minimum TTL should be at least 15 minutes, but this test case
82+
// checks to make sure that in the case we receive a shorter-than-expected TTL from the backend,
83+
// we handle it gracefully.
8184
DefaultAppCheckToken expiresInThreeMinutesToken =
8285
new DefaultAppCheckToken(
8386
TOKEN_PAYLOAD, EXPIRE_IN_THREE_MINUTES_MILLIS, mockClock.currentTimeMillis());

buildSrc/src/main/java/com/google/firebase/gradle/bomgenerator/BomGeneratorTask.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ public class BomGeneratorTask extends DefaultTask {
8383
"com.google.firebase:firebase-messaging-directboot",
8484
"com.google.firebase:firebase-messaging-ktx",
8585
"com.google.firebase:firebase-ml-model-interpreter",
86+
"com.google.firebase:firebase-ml-modeldownloader",
87+
"com.google.firebase:firebase-ml-modeldownloader-ktx",
8688
"com.google.firebase:firebase-ml-vision",
8789
"com.google.firebase:firebase-perf",
8890
"com.google.firebase:firebase-perf-ktx",

firebase-annotations/gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@
1313
# limitations under the License.
1414

1515
version=16.0.1
16+
latestReleasedVersion=16.0.0

firebase-config/gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# limitations under the License.
1515
#
1616

17-
version=20.0.4
18-
latestReleasedVersion=20.0.3
17+
version=20.0.5
18+
latestReleasedVersion=20.0.4
1919
android.enableUnitTestBinaryResources=true
2020

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=17.4.0
2-
latestReleasedVersion=17.3.1
1+
version=17.4.2
2+
latestReleasedVersion=17.4.1
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=17.4.0
2-
latestReleasedVersion=17.3.1
1+
version=17.4.2
2+
latestReleasedVersion=17.4.1

0 commit comments

Comments
 (0)