/ src / runner / trace.cpp
trace.cpp
  1  #include "pch.h"
  2  #include "trace.h"
  3  
  4  #include "general_settings.h"
  5  
  6  #include <common/Telemetry/TraceBase.h>
  7  
  8  TRACELOGGING_DEFINE_PROVIDER(
  9      g_hProvider,
 10      "Microsoft.PowerToys",
 11      // {38e8889b-9731-53f5-e901-e8a7c1753074}
 12      (0x38e8889b, 0x9731, 0x53f5, 0xe9, 0x01, 0xe8, 0xa7, 0xc1, 0x75, 0x30, 0x74),
 13      TraceLoggingOptionProjectTelemetry());
 14  
 15  void Trace::EventLaunch(const std::wstring& versionNumber, bool isProcessElevated)
 16  {
 17      TraceLoggingWriteWrapper(
 18          g_hProvider,
 19          "Runner_Launch",
 20          TraceLoggingWideString(versionNumber.c_str(), "Version"),
 21          TraceLoggingBoolean(isProcessElevated, "Elevated"),
 22          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
 23          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
 24          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
 25  }
 26  
 27  void Trace::SettingsChanged(const GeneralSettings& settings)
 28  {
 29      std::wstring enabledModules;
 30      for (const auto& [name, isEnabled] : settings.isModulesEnabledMap)
 31      {
 32          if (isEnabled)
 33          {
 34              if (!enabledModules.empty())
 35              {
 36                  enabledModules += L", ";
 37              }
 38  
 39              enabledModules += name;
 40          }
 41      }
 42  
 43      TraceLoggingWriteWrapper(
 44          g_hProvider,
 45          "GeneralSettingsChanged",
 46          TraceLoggingBoolean(settings.isStartupEnabled, "RunAtStartup"),
 47          TraceLoggingBoolean(settings.enableWarningsElevatedApps, "EnableWarningsElevatedApps"),
 48          TraceLoggingWideString(settings.startupDisabledReason.c_str(), "StartupDisabledReason"),
 49          TraceLoggingWideString(enabledModules.c_str(), "ModulesEnabled"),
 50          TraceLoggingBoolean(settings.isRunElevated, "AlwaysRunElevated"),
 51          TraceLoggingBoolean(settings.downloadUpdatesAutomatically, "DownloadUpdatesAutomatically"),
 52          TraceLoggingBoolean(settings.enableExperimentation, "EnableExperimentation"),
 53          TraceLoggingWideString(settings.theme.c_str(), "Theme"),
 54          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
 55          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
 56          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
 57  }
 58  
 59  void Trace::UpdateCheckCompleted(bool success, bool updateAvailable, const std::wstring& fromVersion, const std::wstring& toVersion)
 60  {
 61      TraceLoggingWriteWrapper(
 62          g_hProvider,
 63          "UpdateCheck_Completed",
 64          TraceLoggingBoolean(success, "Success"),
 65          TraceLoggingBoolean(updateAvailable, "UpdateAvailable"),
 66          TraceLoggingWideString(fromVersion.c_str(), "FromVersion"),
 67          TraceLoggingWideString(toVersion.c_str(), "ToVersion"),
 68          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
 69          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
 70          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
 71  }
 72  
 73  void Trace::UpdateDownloadCompleted(bool success, const std::wstring& version)
 74  {
 75      TraceLoggingWriteWrapper(
 76          g_hProvider,
 77          "UpdateDownload_Completed",
 78          TraceLoggingBoolean(success, "Success"),
 79          TraceLoggingWideString(version.c_str(), "Version"),
 80          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
 81          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
 82          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
 83  }
 84  
 85  void Trace::TrayIconLeftClick(bool quickAccessEnabled)
 86  {
 87      TraceLoggingWriteWrapper(
 88          g_hProvider,
 89          "TrayIcon_LeftClick",
 90          TraceLoggingBoolean(quickAccessEnabled, "QuickAccessEnabled"),
 91          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
 92          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
 93          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
 94  }
 95  
 96  void Trace::TrayIconDoubleClick(bool quickAccessEnabled)
 97  {
 98      TraceLoggingWriteWrapper(
 99          g_hProvider,
100          "TrayIcon_DoubleClick",
101          TraceLoggingBoolean(quickAccessEnabled, "QuickAccessEnabled"),
102          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
103          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
104          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
105  }
106  
107  void Trace::TrayIconRightClick(bool quickAccessEnabled)
108  {
109      TraceLoggingWriteWrapper(
110          g_hProvider,
111          "TrayIcon_RightClick",
112          TraceLoggingBoolean(quickAccessEnabled, "QuickAccessEnabled"),
113          ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
114          TraceLoggingBoolean(TRUE, "UTCReplace_AppSessionGuid"),
115          TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
116  }