Bug 1453591 - Add a GetIDForProcessName utility function in TelemetryCommon. r?janerik,chutten draft
authorAlessio Placitelli <alessio.placitelli@gmail.com>
Mon, 30 Apr 2018 16:47:08 +0200
changeset 794882 6a6e8c6bdb2df73f8076ddd540a92c2305e695cf
parent 794881 078911ee8e813e1cb761043f76710ba956014108
child 794883 c5799bd20351c8b90829063c57e63fa5a021ad5e
child 795174 466da9e172e654f6b5d43d1ed5d8968c87c8ef04
push id109810
push userbmo:alessio.placitelli@gmail.com
push dateMon, 14 May 2018 19:22:20 +0000
reviewersjanerik, chutten
bugs1453591
milestone62.0a1
Bug 1453591 - Add a GetIDForProcessName utility function in TelemetryCommon. r?janerik,chutten This introduces a function for getting the ProcessID value given the name of a process. MozReview-Commit-ID: 9cbZAO5hyL5
toolkit/components/telemetry/TelemetryCommon.cpp
toolkit/components/telemetry/TelemetryCommon.h
--- a/toolkit/components/telemetry/TelemetryCommon.cpp
+++ b/toolkit/components/telemetry/TelemetryCommon.cpp
@@ -130,16 +130,28 @@ LogToBrowserConsole(uint32_t aLogLevel, 
 
 const char*
 GetNameForProcessID(ProcessID process)
 {
   MOZ_ASSERT(process < ProcessID::Count);
   return ProcessIDToString[static_cast<uint32_t>(process)];
 }
 
+ProcessID
+GetIDForProcessName(const char* aProcessName)
+{
+  for (uint32_t id = 0; id < static_cast<uint32_t>(ProcessID::Count); id++) {
+    if (!strcmp(GetNameForProcessID(ProcessID(id)), aProcessName)) {
+      return ProcessID(id);
+    }
+  }
+
+  return ProcessID::Count;
+}
+
 GeckoProcessType
 GetGeckoProcessType(ProcessID process)
 {
   MOZ_ASSERT(process < ProcessID::Count);
   return ProcessIDToGeckoProcessType[static_cast<uint32_t>(process)];
 }
 
 bool
--- a/toolkit/components/telemetry/TelemetryCommon.h
+++ b/toolkit/components/telemetry/TelemetryCommon.h
@@ -93,16 +93,25 @@ void LogToBrowserConsole(uint32_t aLogLe
 
 /**
  * Get the name string for a ProcessID.
  * This is the name we use for the Telemetry payloads.
  */
 const char* GetNameForProcessID(ProcessID process);
 
 /**
+ * Get the process id give a process name.
+ *
+ * @param aProcessName - the name of the process.
+ * @returns {ProcessID} one value from ProcessID::* or ProcessID::Count if the
+ *          name of the process was not found.
+ */
+ProcessID GetIDForProcessName(const char* aProcessName);
+
+/**
  * Get the GeckoProcessType for a ProcessID.
  * Telemetry distinguishes between more process types than the GeckoProcessType,
  * so the mapping is not direct.
  */
 GeckoProcessType GetGeckoProcessType(ProcessID process);
 
 /**
  * Check if the passed telemetry identifier is valid.