public void track()

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));
    }