projects module interface telemetry

This commit is contained in:
seraphima
2024-07-18 14:24:03 +02:00
parent 93c81bb93e
commit ea6f5c8d88
7 changed files with 90 additions and 12 deletions

View File

@@ -32,11 +32,13 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="trace.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(UsePrecompiledHeaders)' != 'false'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="trace.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\common\logger\logger.vcxproj">

View File

@@ -14,10 +14,16 @@
<ClInclude Include="pch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="trace.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="trace.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -6,5 +6,9 @@
#ifndef PCH_H
#define PCH_H
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winrt/base.h>
#include <ProjectTelemetry.h>
#endif //PCH_H

View File

@@ -0,0 +1,51 @@
#include "pch.h"
#include "trace.h"
#include <ProjectTelemetry.h>
// Telemetry strings should not be localized.
#define LoggingProviderKey "Microsoft.PowerToys"
TRACELOGGING_DEFINE_PROVIDER(
g_hProvider,
LoggingProviderKey,
// {38e8889b-9731-53f5-e901-e8a7c1753074}
(0x38e8889b, 0x9731, 0x53f5, 0xe9, 0x01, 0xe8, 0xa7, 0xc1, 0x75, 0x30, 0x74),
TraceLoggingOptionProjectTelemetry());
void Trace::RegisterProvider() noexcept
{
TraceLoggingRegister(g_hProvider);
}
void Trace::UnregisterProvider() noexcept
{
TraceLoggingUnregister(g_hProvider);
}
void Trace::Projects::Enable(bool enabled) noexcept
{
TraceLoggingWrite(
g_hProvider,
"Projects_EnableProjects",
ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE),
TraceLoggingBoolean(enabled, "Enabled"));
}
void Trace::Projects::SettingsTelemetry(const PowertoyModuleIface::HotkeyEx& hotkey) noexcept
{
std::wstring hotKeyStr =
std::wstring((hotkey.modifiersMask & MOD_WIN) == MOD_WIN ? L"Win + " : L"") +
std::wstring((hotkey.modifiersMask & MOD_CONTROL) == MOD_CONTROL ? L"Ctrl + " : L"") +
std::wstring((hotkey.modifiersMask & MOD_SHIFT) == MOD_SHIFT ? L"Shift + " : L"") +
std::wstring((hotkey.modifiersMask & MOD_ALT) == MOD_ALT ? L"Alt + " : L"") +
std::wstring(L"VK ") + std::to_wstring(hotkey.vkCode);
TraceLoggingWrite(
g_hProvider,
"Projects_Settings",
ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE),
TraceLoggingWideString(hotKeyStr.c_str(), "HotKey"));
}

View File

@@ -0,0 +1,17 @@
#pragma once
#include <modules/interface/powertoy_module_interface.h>
class Trace
{
public:
static void RegisterProvider() noexcept;
static void UnregisterProvider() noexcept;
class Projects
{
public:
static void Enable(bool enabled) noexcept;
static void SettingsTelemetry(const PowertoyModuleIface::HotkeyEx& hotkey) noexcept;
};
};

View File

@@ -51,12 +51,12 @@
<ProjectReference Include="..\..\..\common\Display\Display.vcxproj">
<Project>{caba8dfb-823b-4bf2-93ac-3f31984150d9}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\common\logger\logger.vcxproj">
<Project>{d9b8fc84-322a-4f9f-bbb9-20915c47ddfd}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\common\SettingsAPI\SettingsAPI.vcxproj">
<Project>{6955446d-23f7-4023-9bb3-8657f904af99}</Project>
</ProjectReference>
<ProjectReference Include="..\ProjectsLib\ProjectsLib.vcxproj">
<Project>{b31fcc55-b5a4-4ea7-b414-2dceae6af332}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />

View File

@@ -10,6 +10,8 @@
#include <common/utils/resources.h>
#include <common/utils/winapi_error.h>
#include <ProjectsLib/trace.h>
#include <shellapi.h>
#include "resource.h"
@@ -33,7 +35,7 @@ BOOL APIENTRY DllMain(HMODULE /*hModule*/, DWORD ul_reason_for_call, LPVOID /*lp
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// TODO: Trace::RegisterProvider();
Trace::RegisterProvider();
break;
case DLL_THREAD_ATTACH:
@@ -41,7 +43,7 @@ BOOL APIENTRY DllMain(HMODULE /*hModule*/, DWORD ul_reason_for_call, LPVOID /*lp
break;
case DLL_PROCESS_DETACH:
// TODO: Trace::UnregisterProvider();
Trace::UnregisterProvider();
break;
}
return TRUE;
@@ -104,8 +106,6 @@ public:
parse_hotkeys(values);
auto settingsObject = values.get_raw_json();
// TODO: telemetry
values.save_to_settings_file();
}
catch (std::exception&)
@@ -159,7 +159,7 @@ public:
virtual void send_settings_telemetry() override
{
Logger::info("Send settings telemetry");
// TODO
Trace::Projects::SettingsTelemetry(m_hotkey);
}
ProjectsModuleInterface()
@@ -176,8 +176,7 @@ private:
Logger::info("Enable");
m_enabled = true;
// Log telemetry
// TODO: Trace::Projects::EnableProjects(true);
Trace::Projects::Enable(true);
unsigned long powertoys_pid = GetCurrentProcessId();
std::wstring executable_args = L"";
@@ -208,10 +207,9 @@ private:
{
Logger::info("Disable");
m_enabled = false;
// Log telemetry
if (traceEvent)
{
// TODO: Trace::Projects::EnableProjects(false);
Trace::Projects::Enable(false);
}
if (m_toggleEditorEvent)