Initial import of ADIF API reverse-engineering toolkit

This commit is contained in:
2025-12-16 08:37:56 +01:00
commit 60388529c1
11486 changed files with 1086536 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
package com.google.firebase.crashlytics.internal.settings;
import W1.l;
import com.google.firebase.crashlytics.internal.Logger;
import com.google.firebase.crashlytics.internal.common.CommonUtils;
import com.google.firebase.crashlytics.internal.persistence.FileStore;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class CachedSettingsIo {
private static final String SETTINGS_CACHE_FILENAME = "com.crashlytics.settings.json";
private final File cachedSettingsFile;
public CachedSettingsIo(FileStore fileStore) {
this.cachedSettingsFile = fileStore.getCommonFile(SETTINGS_CACHE_FILENAME);
}
private File getSettingsFile() {
return this.cachedSettingsFile;
}
/* JADX WARN: Multi-variable type inference failed */
public JSONObject readCachedSettings() {
FileInputStream fileInputStream;
JSONObject jSONObject;
Logger.getLogger().d("Checking for cached settings...");
l lVar = 0;
FileInputStream fileInputStream2 = null;
try {
try {
File settingsFile = getSettingsFile();
if (settingsFile.exists()) {
fileInputStream = new FileInputStream(settingsFile);
try {
jSONObject = new JSONObject(CommonUtils.streamToString(fileInputStream));
fileInputStream2 = fileInputStream;
} catch (Exception e4) {
e = e4;
Logger.getLogger().e("Failed to fetch cached settings", e);
CommonUtils.closeOrLog(fileInputStream, "Error while closing settings cache file.");
return null;
}
} else {
Logger.getLogger().v("Settings file does not exist.");
jSONObject = null;
}
CommonUtils.closeOrLog(fileInputStream2, "Error while closing settings cache file.");
return jSONObject;
} catch (Throwable th) {
th = th;
lVar = "Checking for cached settings...";
CommonUtils.closeOrLog(lVar, "Error while closing settings cache file.");
throw th;
}
} catch (Exception e5) {
e = e5;
fileInputStream = null;
} catch (Throwable th2) {
th = th2;
CommonUtils.closeOrLog(lVar, "Error while closing settings cache file.");
throw th;
}
}
public void writeCachedSettings(long j4, JSONObject jSONObject) {
FileWriter fileWriter;
Logger.getLogger().v("Writing settings to cache file...");
if (jSONObject != null) {
FileWriter fileWriter2 = null;
try {
try {
jSONObject.put("expires_at", j4);
fileWriter = new FileWriter(getSettingsFile());
} catch (Throwable th) {
th = th;
}
} catch (Exception e4) {
e = e4;
}
try {
fileWriter.write(jSONObject.toString());
fileWriter.flush();
CommonUtils.closeOrLog(fileWriter, "Failed to close settings writer.");
} catch (Exception e5) {
e = e5;
fileWriter2 = fileWriter;
Logger.getLogger().e("Failed to cache settings", e);
CommonUtils.closeOrLog(fileWriter2, "Failed to close settings writer.");
} catch (Throwable th2) {
th = th2;
fileWriter2 = fileWriter;
CommonUtils.closeOrLog(fileWriter2, "Failed to close settings writer.");
throw th;
}
}
}
}

View File

@@ -0,0 +1,17 @@
package com.google.firebase.crashlytics.internal.settings;
import com.google.firebase.crashlytics.internal.common.CurrentTimeProvider;
import com.google.firebase.crashlytics.internal.settings.Settings;
import org.json.JSONObject;
/* loaded from: classes3.dex */
class DefaultSettingsJsonTransform implements SettingsJsonTransform {
public static Settings defaultSettings(CurrentTimeProvider currentTimeProvider) {
return new Settings(currentTimeProvider.getCurrentTimeMillis() + 3600000, new Settings.SessionData(8, 4), new Settings.FeatureFlagData(true, false, false), 0, 3600, 10.0d, 1.2d, 60);
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsJsonTransform
public Settings buildFromJson(CurrentTimeProvider currentTimeProvider, JSONObject jSONObject) {
return defaultSettings(currentTimeProvider);
}
}

View File

@@ -0,0 +1,129 @@
package com.google.firebase.crashlytics.internal.settings;
import C.w;
import android.text.TextUtils;
import com.google.firebase.crashlytics.internal.Logger;
import com.google.firebase.crashlytics.internal.common.CrashlyticsCore;
import com.google.firebase.crashlytics.internal.network.HttpGetRequest;
import com.google.firebase.crashlytics.internal.network.HttpRequestFactory;
import com.google.firebase.crashlytics.internal.network.HttpResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public class DefaultSettingsSpiCall implements SettingsSpiCall {
static final String ACCEPT_JSON_VALUE = "application/json";
static final String ANDROID_CLIENT_TYPE = "android";
static final String BUILD_VERSION_PARAM = "build_version";
static final String CRASHLYTICS_USER_AGENT = "Crashlytics Android SDK/";
static final String DISPLAY_VERSION_PARAM = "display_version";
static final String HEADER_ACCEPT = "Accept";
static final String HEADER_CLIENT_TYPE = "X-CRASHLYTICS-API-CLIENT-TYPE";
static final String HEADER_CLIENT_VERSION = "X-CRASHLYTICS-API-CLIENT-VERSION";
static final String HEADER_DEVICE_MODEL = "X-CRASHLYTICS-DEVICE-MODEL";
static final String HEADER_GOOGLE_APP_ID = "X-CRASHLYTICS-GOOGLE-APP-ID";
static final String HEADER_INSTALLATION_ID = "X-CRASHLYTICS-INSTALLATION-ID";
static final String HEADER_OS_BUILD_VERSION = "X-CRASHLYTICS-OS-BUILD-VERSION";
static final String HEADER_OS_DISPLAY_VERSION = "X-CRASHLYTICS-OS-DISPLAY-VERSION";
static final String HEADER_USER_AGENT = "User-Agent";
static final String INSTANCE_PARAM = "instance";
static final String SOURCE_PARAM = "source";
private final Logger logger;
private final HttpRequestFactory requestFactory;
private final String url;
public DefaultSettingsSpiCall(String str, HttpRequestFactory httpRequestFactory) {
this(str, httpRequestFactory, Logger.getLogger());
}
private HttpGetRequest applyHeadersTo(HttpGetRequest httpGetRequest, SettingsRequest settingsRequest) {
applyNonNullHeader(httpGetRequest, HEADER_GOOGLE_APP_ID, settingsRequest.googleAppId);
applyNonNullHeader(httpGetRequest, HEADER_CLIENT_TYPE, ANDROID_CLIENT_TYPE);
applyNonNullHeader(httpGetRequest, HEADER_CLIENT_VERSION, CrashlyticsCore.getVersion());
applyNonNullHeader(httpGetRequest, HEADER_ACCEPT, ACCEPT_JSON_VALUE);
applyNonNullHeader(httpGetRequest, HEADER_DEVICE_MODEL, settingsRequest.deviceModel);
applyNonNullHeader(httpGetRequest, HEADER_OS_BUILD_VERSION, settingsRequest.osBuildVersion);
applyNonNullHeader(httpGetRequest, HEADER_OS_DISPLAY_VERSION, settingsRequest.osDisplayVersion);
applyNonNullHeader(httpGetRequest, HEADER_INSTALLATION_ID, settingsRequest.installIdProvider.getInstallIds().getCrashlyticsInstallId());
return httpGetRequest;
}
private void applyNonNullHeader(HttpGetRequest httpGetRequest, String str, String str2) {
if (str2 != null) {
httpGetRequest.header(str, str2);
}
}
private JSONObject getJsonObjectFrom(String str) {
try {
return new JSONObject(str);
} catch (Exception e4) {
this.logger.w("Failed to parse settings JSON from " + this.url, e4);
this.logger.w("Settings response " + str);
return null;
}
}
private Map<String, String> getQueryParamsFor(SettingsRequest settingsRequest) {
HashMap hashMap = new HashMap();
hashMap.put(BUILD_VERSION_PARAM, settingsRequest.buildVersion);
hashMap.put(DISPLAY_VERSION_PARAM, settingsRequest.displayVersion);
hashMap.put("source", Integer.toString(settingsRequest.source));
String str = settingsRequest.instanceId;
if (!TextUtils.isEmpty(str)) {
hashMap.put(INSTANCE_PARAM, str);
}
return hashMap;
}
public HttpGetRequest createHttpGetRequest(Map<String, String> map) {
return this.requestFactory.buildHttpGetRequest(this.url, map).header(HEADER_USER_AGENT, CRASHLYTICS_USER_AGENT + CrashlyticsCore.getVersion()).header("X-CRASHLYTICS-DEVELOPER-TOKEN", "470fa2b4ae81cd56ecbcda9735803434cec591fa");
}
public JSONObject handleResponse(HttpResponse httpResponse) {
int code = httpResponse.code();
this.logger.v("Settings response code was: " + code);
if (requestWasSuccessful(code)) {
return getJsonObjectFrom(httpResponse.body());
}
Logger logger = this.logger;
StringBuilder t2 = w.t(code, "Settings request failed; (status: ", ") from ");
t2.append(this.url);
logger.e(t2.toString());
return null;
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsSpiCall
public JSONObject invoke(SettingsRequest settingsRequest, boolean z3) {
if (!z3) {
throw new RuntimeException("An invalid data collection token was used.");
}
try {
Map<String, String> queryParamsFor = getQueryParamsFor(settingsRequest);
HttpGetRequest applyHeadersTo = applyHeadersTo(createHttpGetRequest(queryParamsFor), settingsRequest);
this.logger.d("Requesting settings from " + this.url);
this.logger.v("Settings query params were: " + queryParamsFor);
return handleResponse(applyHeadersTo.execute());
} catch (IOException e4) {
this.logger.e("Settings request failed.", e4);
return null;
}
}
public boolean requestWasSuccessful(int i) {
return i == 200 || i == 201 || i == 202 || i == 203;
}
public DefaultSettingsSpiCall(String str, HttpRequestFactory httpRequestFactory, Logger logger) {
if (str != null) {
this.logger = logger;
this.requestFactory = httpRequestFactory;
this.url = str;
return;
}
throw new IllegalArgumentException("url must not be null.");
}
}

View File

@@ -0,0 +1,52 @@
package com.google.firebase.crashlytics.internal.settings;
/* loaded from: classes3.dex */
public class Settings {
public final int cacheDuration;
public final long expiresAtMillis;
public final FeatureFlagData featureFlagData;
public final double onDemandBackoffBase;
public final int onDemandBackoffStepDurationSeconds;
public final double onDemandUploadRatePerMinute;
public final SessionData sessionData;
public final int settingsVersion;
/* loaded from: classes3.dex */
public static class FeatureFlagData {
public final boolean collectAnrs;
public final boolean collectBuildIds;
public final boolean collectReports;
public FeatureFlagData(boolean z3, boolean z4, boolean z5) {
this.collectReports = z3;
this.collectAnrs = z4;
this.collectBuildIds = z5;
}
}
/* loaded from: classes3.dex */
public static class SessionData {
public final int maxCompleteSessionsCount;
public final int maxCustomExceptionEvents;
public SessionData(int i, int i4) {
this.maxCustomExceptionEvents = i;
this.maxCompleteSessionsCount = i4;
}
}
public Settings(long j4, SessionData sessionData, FeatureFlagData featureFlagData, int i, int i4, double d4, double d5, int i5) {
this.expiresAtMillis = j4;
this.sessionData = sessionData;
this.featureFlagData = featureFlagData;
this.settingsVersion = i;
this.cacheDuration = i4;
this.onDemandUploadRatePerMinute = d4;
this.onDemandBackoffBase = d5;
this.onDemandBackoffStepDurationSeconds = i5;
}
public boolean isExpired(long j4) {
return this.expiresAtMillis < j4;
}
}

View File

@@ -0,0 +1,8 @@
package com.google.firebase.crashlytics.internal.settings;
/* loaded from: classes3.dex */
enum SettingsCacheBehavior {
USE_CACHE,
SKIP_CACHE_LOOKUP,
IGNORE_CACHE_EXPIRATION
}

View File

@@ -0,0 +1,167 @@
package com.google.firebase.crashlytics.internal.settings;
import C.w;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import com.google.android.gms.tasks.SuccessContinuation;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.TaskCompletionSource;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.crashlytics.internal.Logger;
import com.google.firebase.crashlytics.internal.common.CommonUtils;
import com.google.firebase.crashlytics.internal.common.CurrentTimeProvider;
import com.google.firebase.crashlytics.internal.common.DataCollectionArbiter;
import com.google.firebase.crashlytics.internal.common.DeliveryMechanism;
import com.google.firebase.crashlytics.internal.common.IdManager;
import com.google.firebase.crashlytics.internal.common.SystemCurrentTimeProvider;
import com.google.firebase.crashlytics.internal.network.HttpRequestFactory;
import com.google.firebase.crashlytics.internal.persistence.FileStore;
import java.util.Locale;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicReference;
import org.json.JSONException;
import org.json.JSONObject;
import u.AbstractC0629f;
/* loaded from: classes3.dex */
public class SettingsController implements SettingsProvider {
private static final String PREFS_BUILD_INSTANCE_IDENTIFIER = "existing_instance_identifier";
private static final String SETTINGS_URL_FORMAT = "https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/%s/settings";
private final CachedSettingsIo cachedSettingsIo;
private final Context context;
private final CurrentTimeProvider currentTimeProvider;
private final DataCollectionArbiter dataCollectionArbiter;
private final AtomicReference<Settings> settings;
private final SettingsJsonParser settingsJsonParser;
private final SettingsRequest settingsRequest;
private final SettingsSpiCall settingsSpiCall;
private final AtomicReference<TaskCompletionSource<Settings>> settingsTask;
public SettingsController(Context context, SettingsRequest settingsRequest, CurrentTimeProvider currentTimeProvider, SettingsJsonParser settingsJsonParser, CachedSettingsIo cachedSettingsIo, SettingsSpiCall settingsSpiCall, DataCollectionArbiter dataCollectionArbiter) {
AtomicReference<Settings> atomicReference = new AtomicReference<>();
this.settings = atomicReference;
this.settingsTask = new AtomicReference<>(new TaskCompletionSource());
this.context = context;
this.settingsRequest = settingsRequest;
this.currentTimeProvider = currentTimeProvider;
this.settingsJsonParser = settingsJsonParser;
this.cachedSettingsIo = cachedSettingsIo;
this.settingsSpiCall = settingsSpiCall;
this.dataCollectionArbiter = dataCollectionArbiter;
atomicReference.set(DefaultSettingsJsonTransform.defaultSettings(currentTimeProvider));
}
public static SettingsController create(Context context, String str, IdManager idManager, HttpRequestFactory httpRequestFactory, String str2, String str3, FileStore fileStore, DataCollectionArbiter dataCollectionArbiter) {
String installerPackageName = idManager.getInstallerPackageName();
SystemCurrentTimeProvider systemCurrentTimeProvider = new SystemCurrentTimeProvider();
SettingsJsonParser settingsJsonParser = new SettingsJsonParser(systemCurrentTimeProvider);
CachedSettingsIo cachedSettingsIo = new CachedSettingsIo(fileStore);
Locale locale = Locale.US;
return new SettingsController(context, new SettingsRequest(str, idManager.getModelName(), idManager.getOsBuildVersionString(), idManager.getOsDisplayVersionString(), idManager, CommonUtils.createInstanceIdFrom(CommonUtils.getMappingFileId(context), str, str3, str2), str3, str2, DeliveryMechanism.determineFrom(installerPackageName).getId()), systemCurrentTimeProvider, settingsJsonParser, cachedSettingsIo, new DefaultSettingsSpiCall(w.o("https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/", str, "/settings"), httpRequestFactory), dataCollectionArbiter);
}
private Settings getCachedSettingsData(SettingsCacheBehavior settingsCacheBehavior) {
Settings settings = null;
try {
if (!SettingsCacheBehavior.SKIP_CACHE_LOOKUP.equals(settingsCacheBehavior)) {
JSONObject readCachedSettings = this.cachedSettingsIo.readCachedSettings();
if (readCachedSettings != null) {
Settings parseSettingsJson = this.settingsJsonParser.parseSettingsJson(readCachedSettings);
if (parseSettingsJson == null) {
Logger.getLogger().e("Failed to parse cached settings data.", null);
return null;
}
logSettings(readCachedSettings, "Loaded cached settings: ");
long currentTimeMillis = this.currentTimeProvider.getCurrentTimeMillis();
if (!SettingsCacheBehavior.IGNORE_CACHE_EXPIRATION.equals(settingsCacheBehavior) && parseSettingsJson.isExpired(currentTimeMillis)) {
Logger.getLogger().v("Cached settings have expired.");
return null;
}
try {
Logger.getLogger().v("Returning cached settings.");
return parseSettingsJson;
} catch (Exception e4) {
e = e4;
settings = parseSettingsJson;
Logger.getLogger().e("Failed to get cached settings", e);
return settings;
}
}
Logger.getLogger().d("No cached settings data found.");
}
return null;
} catch (Exception e5) {
e = e5;
}
}
private String getStoredBuildInstanceIdentifier() {
return CommonUtils.getSharedPrefs(this.context).getString(PREFS_BUILD_INSTANCE_IDENTIFIER, "");
}
/* JADX INFO: Access modifiers changed from: private */
public void logSettings(JSONObject jSONObject, String str) throws JSONException {
Logger logger = Logger.getLogger();
StringBuilder a2 = AbstractC0629f.a(str);
a2.append(jSONObject.toString());
logger.d(a2.toString());
}
/* JADX INFO: Access modifiers changed from: private */
@SuppressLint({"CommitPrefEdits"})
public boolean setStoredBuildInstanceIdentifier(String str) {
SharedPreferences.Editor edit = CommonUtils.getSharedPrefs(this.context).edit();
edit.putString(PREFS_BUILD_INSTANCE_IDENTIFIER, str);
edit.apply();
return true;
}
public boolean buildInstanceIdentifierChanged() {
return !getStoredBuildInstanceIdentifier().equals(this.settingsRequest.instanceId);
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsProvider
public Task<Settings> getSettingsAsync() {
return this.settingsTask.get().getTask();
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsProvider
public Settings getSettingsSync() {
return this.settings.get();
}
public Task<Void> loadSettingsData(Executor executor) {
return loadSettingsData(SettingsCacheBehavior.USE_CACHE, executor);
}
public Task<Void> loadSettingsData(SettingsCacheBehavior settingsCacheBehavior, Executor executor) {
Settings cachedSettingsData;
if (!buildInstanceIdentifierChanged() && (cachedSettingsData = getCachedSettingsData(settingsCacheBehavior)) != null) {
this.settings.set(cachedSettingsData);
this.settingsTask.get().trySetResult(cachedSettingsData);
return Tasks.forResult(null);
}
Settings cachedSettingsData2 = getCachedSettingsData(SettingsCacheBehavior.IGNORE_CACHE_EXPIRATION);
if (cachedSettingsData2 != null) {
this.settings.set(cachedSettingsData2);
this.settingsTask.get().trySetResult(cachedSettingsData2);
}
return this.dataCollectionArbiter.waitForDataCollectionPermission(executor).onSuccessTask(executor, new SuccessContinuation<Void, Void>() { // from class: com.google.firebase.crashlytics.internal.settings.SettingsController.1
@Override // com.google.android.gms.tasks.SuccessContinuation
public Task<Void> then(Void r5) throws Exception {
JSONObject invoke = SettingsController.this.settingsSpiCall.invoke(SettingsController.this.settingsRequest, true);
if (invoke != null) {
Settings parseSettingsJson = SettingsController.this.settingsJsonParser.parseSettingsJson(invoke);
SettingsController.this.cachedSettingsIo.writeCachedSettings(parseSettingsJson.expiresAtMillis, invoke);
SettingsController.this.logSettings(invoke, "Loaded settings: ");
SettingsController settingsController = SettingsController.this;
settingsController.setStoredBuildInstanceIdentifier(settingsController.settingsRequest.instanceId);
SettingsController.this.settings.set(parseSettingsJson);
((TaskCompletionSource) SettingsController.this.settingsTask.get()).trySetResult(parseSettingsJson);
}
return Tasks.forResult(null);
}
});
}
}

View File

@@ -0,0 +1,29 @@
package com.google.firebase.crashlytics.internal.settings;
/* loaded from: classes3.dex */
class SettingsJsonConstants {
static final String APP_STATUS_KEY = "status";
static final String CACHE_DURATION_KEY = "cache_duration";
static final String EXPIRES_AT_KEY = "expires_at";
static final boolean FEATURES_COLLECT_ANRS_DEFAULT = false;
static final String FEATURES_COLLECT_ANRS_KEY = "collect_anrs";
static final boolean FEATURES_COLLECT_BUILD_IDS_DEFAULT = false;
static final String FEATURES_COLLECT_BUILD_IDS_KEY = "collect_build_ids";
static final boolean FEATURES_COLLECT_REPORTS_DEFAULT = true;
static final String FEATURES_COLLECT_REPORTS_KEY = "collect_reports";
static final String FEATURES_KEY = "features";
static final String ON_DEMAND_BACKOFF_BASE_KEY = "on_demand_backoff_base";
static final String ON_DEMAND_BACKOFF_STEP_DURATION_SECONDS_KEY = "on_demand_backoff_step_duration_seconds";
static final String ON_DEMAND_UPLOAD_RATE_PER_MINUTE_KEY = "on_demand_upload_rate_per_minute";
static final String SESSION_KEY = "session";
static final int SETTINGS_CACHE_DURATION_DEFAULT = 3600;
static final int SETTINGS_MAX_COMPLETE_SESSIONS_COUNT_DEFAULT = 4;
static final String SETTINGS_MAX_COMPLETE_SESSIONS_COUNT_KEY = "max_complete_sessions_count";
static final int SETTINGS_MAX_CUSTOM_EXCEPTION_EVENTS_DEFAULT = 8;
static final String SETTINGS_MAX_CUSTOM_EXCEPTION_EVENTS_KEY = "max_custom_exception_events";
static final double SETTINGS_ON_DEMAND_BACKOFF_BASE_DEFAULT = 1.2d;
static final int SETTINGS_ON_DEMAND_BACKOFF_STEP_DURATION_SECONDS_DEFAULT = 60;
static final double SETTINGS_ON_DEMAND_UPLOAD_RATE_PER_MINUTE_DEFAULT = 10.0d;
static final String SETTINGS_VERSION = "settings_version";
static final int SETTINGS_VERSION_DEFAULT = 0;
}

View File

@@ -0,0 +1,27 @@
package com.google.firebase.crashlytics.internal.settings;
import com.google.firebase.crashlytics.internal.Logger;
import com.google.firebase.crashlytics.internal.common.CurrentTimeProvider;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class SettingsJsonParser {
private final CurrentTimeProvider currentTimeProvider;
public SettingsJsonParser(CurrentTimeProvider currentTimeProvider) {
this.currentTimeProvider = currentTimeProvider;
}
private static SettingsJsonTransform getJsonTransformForVersion(int i) {
if (i == 3) {
return new SettingsV3JsonTransform();
}
Logger.getLogger().e("Could not determine SettingsJsonTransform for settings version " + i + ". Using default settings values.");
return new DefaultSettingsJsonTransform();
}
public Settings parseSettingsJson(JSONObject jSONObject) throws JSONException {
return getJsonTransformForVersion(jSONObject.getInt("settings_version")).buildFromJson(this.currentTimeProvider, jSONObject);
}
}

View File

@@ -0,0 +1,10 @@
package com.google.firebase.crashlytics.internal.settings;
import com.google.firebase.crashlytics.internal.common.CurrentTimeProvider;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
interface SettingsJsonTransform {
Settings buildFromJson(CurrentTimeProvider currentTimeProvider, JSONObject jSONObject) throws JSONException;
}

View File

@@ -0,0 +1,10 @@
package com.google.firebase.crashlytics.internal.settings;
import com.google.android.gms.tasks.Task;
/* loaded from: classes3.dex */
public interface SettingsProvider {
Task<Settings> getSettingsAsync();
Settings getSettingsSync();
}

View File

@@ -0,0 +1,29 @@
package com.google.firebase.crashlytics.internal.settings;
import com.google.firebase.crashlytics.internal.common.InstallIdProvider;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public class SettingsRequest {
public final String buildVersion;
public final String deviceModel;
public final String displayVersion;
public final String googleAppId;
public final InstallIdProvider installIdProvider;
public final String instanceId;
public final String osBuildVersion;
public final String osDisplayVersion;
public final int source;
public SettingsRequest(String str, String str2, String str3, String str4, InstallIdProvider installIdProvider, String str5, String str6, String str7, int i) {
this.googleAppId = str;
this.deviceModel = str2;
this.osBuildVersion = str3;
this.osDisplayVersion = str4;
this.installIdProvider = installIdProvider;
this.instanceId = str5;
this.displayVersion = str6;
this.buildVersion = str7;
this.source = i;
}
}

View File

@@ -0,0 +1,9 @@
package com.google.firebase.crashlytics.internal.settings;
import org.json.JSONObject;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public interface SettingsSpiCall {
JSONObject invoke(SettingsRequest settingsRequest, boolean z3);
}

View File

@@ -0,0 +1,31 @@
package com.google.firebase.crashlytics.internal.settings;
import com.google.firebase.crashlytics.internal.common.CurrentTimeProvider;
import com.google.firebase.crashlytics.internal.settings.Settings;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
class SettingsV3JsonTransform implements SettingsJsonTransform {
private static Settings.FeatureFlagData buildFeatureFlagDataFrom(JSONObject jSONObject) {
return new Settings.FeatureFlagData(jSONObject.optBoolean("collect_reports", true), jSONObject.optBoolean("collect_anrs", false), jSONObject.optBoolean("collect_build_ids", false));
}
private static Settings.SessionData buildSessionDataFrom(JSONObject jSONObject) {
return new Settings.SessionData(jSONObject.optInt("max_custom_exception_events", 8), 4);
}
private static long getExpiresAtFrom(CurrentTimeProvider currentTimeProvider, long j4, JSONObject jSONObject) {
if (jSONObject.has("expires_at")) {
return jSONObject.optLong("expires_at");
}
return (j4 * 1000) + currentTimeProvider.getCurrentTimeMillis();
}
@Override // com.google.firebase.crashlytics.internal.settings.SettingsJsonTransform
public Settings buildFromJson(CurrentTimeProvider currentTimeProvider, JSONObject jSONObject) throws JSONException {
int optInt = jSONObject.optInt("settings_version", 0);
int optInt2 = jSONObject.optInt("cache_duration", 3600);
return new Settings(getExpiresAtFrom(currentTimeProvider, optInt2, jSONObject), jSONObject.has("session") ? buildSessionDataFrom(jSONObject.getJSONObject("session")) : buildSessionDataFrom(new JSONObject()), buildFeatureFlagDataFrom(jSONObject.getJSONObject("features")), optInt, optInt2, jSONObject.optDouble("on_demand_upload_rate_per_minute", 10.0d), jSONObject.optDouble("on_demand_backoff_base", 1.2d), jSONObject.optInt("on_demand_backoff_step_duration_seconds", 60));
}
}