Skip to content

Commit c80ac6a

Browse files
committed
add process name to application info
1 parent 8fe1383 commit c80ac6a

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed

firebase-perf/src/main/java/com/google/firebase/perf/transport/TransportManager.java

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.perf.transport;
1616

17+
import static com.google.firebase.sessions.ProcessDetailsProvider.getProcessDetailsProvider;
1718
import static java.util.concurrent.TimeUnit.MILLISECONDS;
1819
import static java.util.concurrent.TimeUnit.MINUTES;
1920

@@ -230,6 +231,8 @@ private void finishInitialization() {
230231
applicationInfoBuilder = ApplicationInfo.newBuilder();
231232
applicationInfoBuilder
232233
.setGoogleAppId(firebaseApp.getOptions().getApplicationId())
234+
.setProcessName(
235+
getProcessDetailsProvider().getCurrentProcessDetails(appContext).getProcessName())
233236
.setAndroidAppInfo(
234237
AndroidApplicationInfo.newBuilder()
235238
.setPackageName(packageName)

firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto

+4-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ message GaugeMetadata {
292292
// Additional metadata about an application and its state (including state of
293293
// the device at runtime) that is not provided by firebase data transport.
294294
//
295-
// Next tag: 8
295+
// Next tag: 9
296296
message ApplicationInfo {
297297
// Identifier for the application that has been registered with firebase.
298298
// Contains pantheon project number, platform and the hash of the (package
@@ -316,6 +316,9 @@ message ApplicationInfo {
316316

317317
// A map of global-level custom attribute names to values.
318318
map<string, string> custom_attributes = 6;
319+
320+
// The name of process that initiate the event. Currently only populated for Android apps.
321+
optional string process_name = 8;
319322
}
320323

321324
// Additional metadata about an android application that is not provided by

firebase-perf/src/test/java/com/google/firebase/perf/transport/TransportManagerTest.java

+8
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import static org.mockito.MockitoAnnotations.initMocks;
2929
import static org.robolectric.Shadows.shadowOf;
3030

31+
import android.app.ActivityManager;
3132
import android.content.Context;
3233
import android.content.pm.PackageInfo;
3334
import androidx.test.core.app.ApplicationProvider;
@@ -1399,6 +1400,11 @@ private void initializeTransport(boolean shouldInitialize) {
13991400
if (shouldInitialize) {
14001401
// Set the version name since Firebase sessions needs it.
14011402
Context context = ApplicationProvider.getApplicationContext();
1403+
1404+
ActivityManager activityManager =
1405+
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
1406+
context.getApplicationInfo().uid = activityManager.getRunningAppProcesses().get(0).uid;
1407+
14021408
ShadowPackageManager shadowPackageManager = shadowOf(context.getPackageManager());
14031409

14041410
PackageInfo packageInfo =
@@ -1468,6 +1474,8 @@ private static void validateApplicationInfo(
14681474
.isEqualTo(FAKE_FIREBASE_APPLICATION_ID);
14691475
assertThat(loggedPerfMetric.getApplicationInfo().getApplicationProcessState())
14701476
.isEqualTo(applicationProcessState);
1477+
assertThat(loggedPerfMetric.getApplicationInfo().getProcessName())
1478+
.isEqualTo("com.google.firebase.perf.test");
14711479
assertThat(loggedPerfMetric.getApplicationInfo().hasAndroidAppInfo()).isTrue();
14721480
}
14731481

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/ProcessDetailsProvider.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ import com.google.android.gms.common.util.ProcessUtils
2828
*
2929
* @hide
3030
*/
31-
internal object ProcessDetailsProvider {
31+
object ProcessDetailsProvider {
32+
@JvmStatic
33+
fun getProcessDetailsProvider(): ProcessDetailsProvider {
34+
return this
35+
}
3236
/** Gets the details for all of this app's running processes. */
3337
fun getAppProcessDetails(context: Context): List<ProcessDetails> {
3438
val appUid = context.applicationInfo.uid

firebase-sessions/src/main/kotlin/com/google/firebase/sessions/SessionEvent.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ internal data class DataCollectionStatus(
8181
)
8282

8383
/** Container for information about the process */
84-
internal data class ProcessDetails(
84+
data class ProcessDetails(
8585
val processName: String,
8686
val pid: Int,
8787
val importance: Int,

0 commit comments

Comments
 (0)