in profilers-android/src/com/android/tools/idea/profilers/analytics/StudioFeatureTracker.java [1089:1201]
public void track() {
AndroidProfilerEvent.Builder profilerEvent = AndroidProfilerEvent.newBuilder().setType(myEventType);
// In the Task-Based UX, the current stage is not useful to know and thus will not be set.
if (!StudioFlags.PROFILER_TASK_BASED_UX.get()) {
profilerEvent.setStage(myCurrStage);
}
populateCpuCaptureMetadata(profilerEvent);
populateFilterMetadata(profilerEvent);
populateMemoryInstanceFilterMetadata(profilerEvent);
switch (myEventType) {
case SELECT_MEMORY_HEAP:
profilerEvent.setMemoryHeap(myMemoryHeap);
break;
case SESSION_CREATED:
profilerEvent.setSessionStartMetadata(mySessionCreationMetadata);
break;
case SESSION_ARTIFACT_SELECTED:
profilerEvent.setSessionArtifactMetadata(mySessionArtifactMetadata);
break;
case TRANSPORT_DAEMON_FAILED:
case TRANSPORT_PROXY_FAILED:
assert myTransportFailureMetadata != null;
profilerEvent.setTransportFailureMetadata(myTransportFailureMetadata);
break;
case CPU_API_TRACING:
profilerEvent.setCpuApiTracingMetadata(myCpuApiTracingMetadata);
break;
case CPU_STARTUP_PROFILING:
profilerEvent.setCpuStartupProfilingMetadata(CpuStartupProfilingMetadata
.newBuilder()
.setProfilingConfig(
toStatsCpuProfilingConfig(myCpuStartupProfilingConfiguration)));
break;
case CPU_IMPORT_TRACE:
assert myCpuImportTraceMetadata != null;
profilerEvent.setCpuImportTraceMetadata(myCpuImportTraceMetadata);
break;
case TPD_MANAGER_SPAWN_OK: // Fallthrough
case TPD_MANAGER_SPAWN_FAILED:
profilerEvent.setTpdManagerStats(myTraceProcessorDaemonManagerStats);
break;
case TPD_QUERY_LOAD_TRACE: // Fallthrough
case TPD_QUERY_PROCESS_METADATA: // Fallthrough
case TPD_QUERY_LOAD_CPU_DATA: // Fallthrough
case TPD_QUERY_LOAD_MEMORY_DATA:
profilerEvent.setTpdQueryStats(myTraceProcessorDaemonQueryStats);
break;
case TRACK_GROUP_ACTION:
profilerEvent.setTrackGroupMetadata(myTrackGroupMetadata);
break;
case SELECT_BOX:
profilerEvent.setBoxSelectionMetadata(myBoxSelectionMetadata);
break;
case SELECT_FRAME: // Fallthrough
case TOGGLE_ALL_FRAMES: // Fallthrough
case TOGGLE_LIFECYCLE:
profilerEvent.setEventCount(myEventCount);
break;
case LOADING:
profilerEvent.setLoading(myLoading);
break;
case RUN_WITH_PROFILING:
profilerEvent.setRunWithProfilingMetadata(myRunWithProfilingMetadata);
break;
case POWER_PROFILER_DATA_CAPTURED:
profilerEvent.setPowerProfilerCaptureMetadata(myPowerProfilerCaptureMetadata);
break;
case TASK_SETTINGS_OPENED:
profilerEvent.setIsTaskSettingsChanged(isTaskSettingsChanged);
break;
case TASK_ENTERED:
profilerEvent.setTaskEnteredMetadata(myTaskEnteredMetadata);
break;
case TASK_FINISHED:
profilerEvent.setTaskFinishedMetadata(myTaskFinishedMetadata);
break;
case TASK_FAILED:
profilerEvent.setTaskFailedMetadata(myTaskFailedMetadata);
break;
default:
break;
}
AndroidStudioEvent.Builder event = AndroidStudioEvent.newBuilder()
.setKind(AndroidStudioEvent.EventKind.ANDROID_PROFILER)
.setAndroidProfilerEvent(profilerEvent);
if (myDevice != null) {
event.setDeviceInfo(
// Set the properties consistently with AndroidStudioUsageTracker.deviceToDeviceInfo().
DeviceInfo.newBuilder()
.setAnonymizedSerialNumber(AnonymizerUtil.anonymizeUtf8(myDevice.getSerial()))
.setBuildTags(myDevice.getBuildTags())
.setBuildType(myDevice.getBuildType())
.setBuildVersionRelease(myDevice.getVersion())
.setBuildApiLevelFull(new AndroidVersion(myDevice.getApiLevel(), myDevice.getCodename()).getApiString())
.setCpuAbi(CommonMetricsData.applicationBinaryInterfaceFromString(myDevice.getCpuAbi()))
.setManufacturer(myDevice.getManufacturer())
.setDeviceType(myDevice.getIsEmulator() ? DeviceInfo.DeviceType.LOCAL_EMULATOR : DeviceInfo.DeviceType.LOCAL_PHYSICAL)
.setMdnsConnectionType(isMdnsAutoConnectUnencrypted(myDevice.getSerial()) ?
DeviceInfo.MdnsConnectionType.MDNS_AUTO_CONNECT_UNENCRYPTED :
isMdnsAutoConnectTls(myDevice.getSerial()) ?
DeviceInfo.MdnsConnectionType.MDNS_AUTO_CONNECT_TLS :
DeviceInfo.MdnsConnectionType.MDNS_NONE)
.setModel(myDevice.getModel())
.build());
}
UsageTracker.log(UsageTrackerUtils.withProjectId(event, myTrackingProject));
}