Skip to content

Commit ddb9f8c

Browse files
committed
send event and RRC mitigation
1 parent 1ffcaaf commit ddb9f8c

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

firebase-perf/src/main/java/com/google/firebase/perf/config/ConfigResolver.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import com.google.firebase.perf.BuildConfig;
2424
import com.google.firebase.perf.config.ConfigurationConstants.CollectionDeactivated;
2525
import com.google.firebase.perf.config.ConfigurationConstants.CollectionEnabled;
26-
import com.google.firebase.perf.config.ConfigurationConstants.FragmentSamplingRate;
2726
import com.google.firebase.perf.config.ConfigurationConstants.ExperimentTTID;
27+
import com.google.firebase.perf.config.ConfigurationConstants.FragmentSamplingRate;
2828
import com.google.firebase.perf.config.ConfigurationConstants.LogSourceName;
2929
import com.google.firebase.perf.config.ConfigurationConstants.NetworkEventCountBackground;
3030
import com.google.firebase.perf.config.ConfigurationConstants.NetworkEventCountForeground;
@@ -115,11 +115,21 @@ public void setMetadataBundle(ImmutableBundle bundle) {
115115

116116
/** Default API to call for whether performance monitoring is currently silent. */
117117
public boolean isPerformanceMonitoringEnabled() {
118+
saveExperimentFlagToDeviceCache();
118119
Boolean isPerformanceCollectionEnabled = getIsPerformanceCollectionEnabled();
119120
return (isPerformanceCollectionEnabled == null || isPerformanceCollectionEnabled == true)
120121
&& getIsServiceCollectionEnabled();
121122
}
122123

124+
// TODO: remove after _experiment_as_ttid is finished
125+
private void saveExperimentFlagToDeviceCache() {
126+
ExperimentTTID config = ExperimentTTID.getInstance();
127+
Optional<Boolean> rcValue = getRemoteConfigBoolean(config);
128+
if (rcValue.isAvailable()) {
129+
deviceCacheManager.setValue(config.getDeviceCacheFlag(), rcValue.get());
130+
}
131+
}
132+
123133
/** Returns whether developers have enabled Firebase Performance event collection. */
124134
@Nullable
125135
public Boolean getIsPerformanceCollectionEnabled() {
@@ -772,7 +782,7 @@ public float getFragmentSamplingRate() {
772782
public boolean getIsExperimentTTIDEnabled() {
773783
// Order of precedence is:
774784
// 1. If the value exists in Android Manifest, return this value.
775-
// 2. If the value exists through Firebase Remote Config, cache and return this value.
785+
// 2. Cannot read value from RC because it's not initalized yet
776786
// 3. If the value exists in device cache, return this value.
777787
// 4. Otherwise, return default value.
778788
ExperimentTTID config = ExperimentTTID.getInstance();
@@ -783,13 +793,7 @@ public boolean getIsExperimentTTIDEnabled() {
783793
return metadataValue.get();
784794
}
785795

786-
// 2. Reads value from Firebase Remote Config, saves this value in cache layer if valid.
787-
Optional<Boolean> rcValue = getRemoteConfigBoolean(config);
788-
if (rcValue.isAvailable()) {
789-
deviceCacheManager.setValue(config.getDeviceCacheFlag(), rcValue.get());
790-
return rcValue.get();
791-
}
792-
796+
// 2. Cannot read value from RC because it's not initialized yet.
793797
// 3. Reads value from cache layer.
794798
Optional<Boolean> deviceCacheValue = getDeviceCacheBoolean(config);
795799
if (deviceCacheValue.isAvailable()) {

firebase-perf/src/main/java/com/google/firebase/perf/metrics/AppStartTrace.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import android.os.Bundle;
2323
import android.os.Process;
2424
import android.view.View;
25-
2625
import androidx.annotation.Keep;
2726
import androidx.annotation.NonNull;
2827
import androidx.annotation.Nullable;
@@ -41,8 +40,6 @@
4140
import com.google.firebase.perf.v1.TraceMetric;
4241
import java.lang.ref.WeakReference;
4342
import java.util.ArrayList;
44-
import java.util.Arrays;
45-
import java.util.Collections;
4643
import java.util.List;
4744
import java.util.concurrent.ExecutorService;
4845
import java.util.concurrent.LinkedBlockingQueue;
@@ -205,7 +202,8 @@ private void recordFirstDrawDone() {
205202
return;
206203
}
207204
this.firstDrawDone = clock.getTime();
208-
executorService.execute(() -> this.logColdStart(getStartTimer(), this.firstDrawDone, this.startSession));
205+
executorService.execute(
206+
() -> this.logColdStart(getStartTimer(), this.firstDrawDone, this.startSession));
209207

210208
if (isRegisteredForLifecycleCallbacks) {
211209
// After AppStart trace is queued to be logged, we can unregister this callback.
@@ -241,8 +239,7 @@ public synchronized void onActivityStarted(Activity activity) {
241239

242240
@Override
243241
public synchronized void onActivityResumed(Activity activity) {
244-
if (isStartedFromBackground
245-
|| isTooLateToInitUI) {
242+
if (isStartedFromBackground || isTooLateToInitUI) {
246243
return;
247244
}
248245

@@ -281,10 +278,10 @@ private void logColdStart(Timer start, Timer end, PerfSession session) {
281278
.setDurationUs(start.getDurationMicros(end));
282279

283280
TraceMetric.Builder subtrace =
284-
TraceMetric.newBuilder()
285-
.setName("_experiment_classLoadTime")
286-
.setClientStartTimeUs(FirebasePerfProvider.getAppStartTime().getMicros())
287-
.setDurationUs(FirebasePerfProvider.getAppStartTime().getDurationMicros(end));
281+
TraceMetric.newBuilder()
282+
.setName("_experiment_classLoadTime")
283+
.setClientStartTimeUs(FirebasePerfProvider.getAppStartTime().getMicros())
284+
.setDurationUs(FirebasePerfProvider.getAppStartTime().getDurationMicros(end));
288285

289286
metric.addSubtraces(subtrace).addPerfSessions(this.startSession.build());
290287

0 commit comments

Comments
 (0)