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 }