Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ public void testReportToJsonAndBack_with_developmentPlatform_equals() throws IOE
assertEquals(reifiedReport, testReport);
}

@Test
public void testReportToJsonAndBack_with_appExitInfo_equals() throws IOException {
final CrashlyticsReport testReport = makeTestReport(false).withAppExitInfo(makeAppExitInfo());
final String testReportJson = transform.reportToJson(testReport);
final CrashlyticsReport reifiedReport = transform.reportFromJson(testReportJson);
assertNotSame(reifiedReport, testReport);
assertEquals(reifiedReport, testReport);
}

@Test
public void testEventToJsonAndBack_equals() throws IOException {
final CrashlyticsReport.Session.Event testEvent = makeTestEvent();
Expand All @@ -67,6 +76,16 @@ public void testEventToJsonAndBack_equals() throws IOException {
assertEquals(reifiedEvent, testEvent);
}

@Test
public void testAppExitInfoToJsonAndBack_equals() throws IOException {
final CrashlyticsReport.ApplicationExitInfo testAppExitInfo = makeAppExitInfo();
final String testAppExitInfoJson = transform.appExitInfoToJson(testAppExitInfo);
final CrashlyticsReport.ApplicationExitInfo reifiedAppExitInfo =
transform.applicationExitInfoFromJson(testAppExitInfoJson);
assertNotSame(reifiedAppExitInfo, testAppExitInfo);
assertEquals(reifiedAppExitInfo, testAppExitInfo);
}

private static CrashlyticsReport makeTestReport(boolean useDevelopmentPlatform) {
return CrashlyticsReport.builder()
.setSdkVersion("sdkVersion")
Expand Down Expand Up @@ -192,4 +211,14 @@ private static ImmutableList<Frame> makeTestFrames() {
.setImportance(4)
.build());
}

private static CrashlyticsReport.ApplicationExitInfo makeAppExitInfo() {
return CrashlyticsReport.ApplicationExitInfo.builder()
.setTraceFile("trace")
.setTimestamp(1L)
.setImportance(1)
.setReasonCode(1)
.setProcessName("test")
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ public String eventToJson(@NonNull CrashlyticsReport.Session.Event event) {
return CRASHLYTICS_REPORT_JSON_ENCODER.encode(event);
}

@NonNull
public String appExitInfoToJson(
@NonNull CrashlyticsReport.ApplicationExitInfo applicationExitInfo) {
return CRASHLYTICS_REPORT_JSON_ENCODER.encode(applicationExitInfo);
}

@NonNull
public CrashlyticsReport reportFromJson(@NonNull String json) throws IOException {
try (JsonReader jsonReader = new JsonReader(new StringReader(json))) {
Expand All @@ -65,6 +71,16 @@ public CrashlyticsReport.Session.Event eventFromJson(@NonNull String json) throw
}
}

@NonNull
public CrashlyticsReport.ApplicationExitInfo applicationExitInfoFromJson(@NonNull String json)
throws IOException {
try (JsonReader jsonReader = new JsonReader(new StringReader(json))) {
return parseAppExitInfo(jsonReader);
} catch (IllegalStateException e) {
throw new IOException(e);
}
}

@NonNull
private static CrashlyticsReport parseReport(@NonNull JsonReader jsonReader) throws IOException {
final CrashlyticsReport.Builder builder = CrashlyticsReport.builder();
Expand Down Expand Up @@ -97,6 +113,9 @@ private static CrashlyticsReport parseReport(@NonNull JsonReader jsonReader) thr
case "ndkPayload":
builder.setNdkPayload(parseNdkPayload(jsonReader));
break;
case "appExitInfo":
builder.setAppExitInfo(parseAppExitInfo(jsonReader));
break;
default:
jsonReader.skipValue();
break;
Expand Down Expand Up @@ -184,6 +203,40 @@ private static CrashlyticsReport.FilesPayload parseNdkPayload(@NonNull JsonReade
return builder.build();
}

@NonNull
private static CrashlyticsReport.ApplicationExitInfo parseAppExitInfo(
@NonNull JsonReader jsonReader) throws IOException {
final CrashlyticsReport.ApplicationExitInfo.Builder builder =
CrashlyticsReport.ApplicationExitInfo.builder();

jsonReader.beginObject();
while (jsonReader.hasNext()) {
String name = jsonReader.nextName();
switch (name) {
case "processName":
builder.setProcessName(jsonReader.nextString());
break;
case "reasonCode":
builder.setReasonCode(jsonReader.nextInt());
break;
case "importance":
builder.setImportance(jsonReader.nextInt());
break;
case "timestamp":
builder.setTimestamp(jsonReader.nextLong());
break;
case "traceFile":
builder.setTraceFile(jsonReader.nextString());
break;
default:
jsonReader.skipValue();
break;
}
}
jsonReader.endObject();
return builder.build();
}

@NonNull
private static CrashlyticsReport.FilesPayload.File parseFile(@NonNull JsonReader jsonReader)
throws IOException {
Expand Down