Initial import of ADIF API reverse-engineering toolkit
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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.");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user