xref: /aosp_15_r20/external/cronet/base/process/current_process.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2022 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/process/current_process.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker namespace base {
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker namespace {
10*6777b538SAndroid Build Coastguard Worker 
GetNameForProcessType(CurrentProcessType process_type)11*6777b538SAndroid Build Coastguard Worker const char* GetNameForProcessType(CurrentProcessType process_type) {
12*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(ENABLE_BASE_TRACING)
13*6777b538SAndroid Build Coastguard Worker   switch (process_type) {
14*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_UNSPECIFIED:
15*6777b538SAndroid Build Coastguard Worker       return "Null";
16*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_BROWSER:
17*6777b538SAndroid Build Coastguard Worker       return "Browser";
18*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_RENDERER:
19*6777b538SAndroid Build Coastguard Worker       return "Renderer";
20*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_UTILITY:
21*6777b538SAndroid Build Coastguard Worker       return "Utility";
22*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_ZYGOTE:
23*6777b538SAndroid Build Coastguard Worker       return "Zygote";
24*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SANDBOX_HELPER:
25*6777b538SAndroid Build Coastguard Worker       return "SandboxHelper";
26*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_GPU:
27*6777b538SAndroid Build Coastguard Worker       return "GPU Process";
28*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_PPAPI_PLUGIN:
29*6777b538SAndroid Build Coastguard Worker       return "PPAPI Process";
30*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_PPAPI_BROKER:
31*6777b538SAndroid Build Coastguard Worker       return "PPAPI Broker Process";
32*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_NETWORK:
33*6777b538SAndroid Build Coastguard Worker       return "Service: network.mojom.NetworkService";
34*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_TRACING:
35*6777b538SAndroid Build Coastguard Worker       return "Service: tracing.mojom.TracingService";
36*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_STORAGE:
37*6777b538SAndroid Build Coastguard Worker       return "Service: storage.mojom.StorageService";
38*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_AUDIO:
39*6777b538SAndroid Build Coastguard Worker       return "Service: audio.mojom.AudioService";
40*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_DATA_DECODER:
41*6777b538SAndroid Build Coastguard Worker       return "Service: data_decoder.mojom.DataDecoderService";
42*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_UTIL_WIN:
43*6777b538SAndroid Build Coastguard Worker       return "Service: chrome.mojom.UtilWin";
44*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PROXY_RESOLVER:
45*6777b538SAndroid Build Coastguard Worker       return "Service: proxy_resolver.mojom.ProxyResolverFactory";
46*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_CDM:
47*6777b538SAndroid Build Coastguard Worker       return "Service: media.mojom.CdmServiceBroker";
48*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_MEDIA_FOUNDATION:
49*6777b538SAndroid Build Coastguard Worker       return "Service: media.mojom.MediaFoundationServiceBroker";
50*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_VIDEO_CAPTURE:
51*6777b538SAndroid Build Coastguard Worker       return "Service: video_capture.mojom.VideoCaptureService";
52*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_UNZIPPER:
53*6777b538SAndroid Build Coastguard Worker       return "Service: unzip.mojom.Unzipper";
54*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_MIRRORING:
55*6777b538SAndroid Build Coastguard Worker       return "Service: mirroring.mojom.MirroringService";
56*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_FILEPATCHER:
57*6777b538SAndroid Build Coastguard Worker       return "Service: patch.mojom.FilePatcher";
58*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_TTS:
59*6777b538SAndroid Build Coastguard Worker       return "Service: chromeos.tts.mojom.TtsService";
60*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PRINTING:
61*6777b538SAndroid Build Coastguard Worker       return "Service: printing.mojom.PrintingService";
62*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_QUARANTINE:
63*6777b538SAndroid Build Coastguard Worker       return "Service: quarantine.mojom.Quarantine";
64*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_CROS_LOCALSEARCH:
65*6777b538SAndroid Build Coastguard Worker       return "Service: chromeos.local_search_service.mojom.LocalSearchService";
66*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER:
67*6777b538SAndroid Build Coastguard Worker       return "Service: chromeos.assistant.mojom.AssistantAudioDecoderFactory";
68*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_FILEUTIL:
69*6777b538SAndroid Build Coastguard Worker       return "Service: chrome.mojom.FileUtilService";
70*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PRINTCOMPOSITOR:
71*6777b538SAndroid Build Coastguard Worker       return "Service: printing.mojom.PrintCompositor";
72*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PAINTPREVIEW:
73*6777b538SAndroid Build Coastguard Worker       return "Service: paint_preview.mojom.PaintPreviewCompositorCollection";
74*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_SPEECHRECOGNITION:
75*6777b538SAndroid Build Coastguard Worker       return "Service: media.mojom.SpeechRecognitionService";
76*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_XRDEVICE:
77*6777b538SAndroid Build Coastguard Worker       return "Service: device.mojom.XRDeviceService";
78*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_READICON:
79*6777b538SAndroid Build Coastguard Worker       return "Service: chrome.mojom.UtilReadIcon";
80*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_LANGUAGEDETECTION:
81*6777b538SAndroid Build Coastguard Worker       return "Service: language_detection.mojom.LanguageDetectionService";
82*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_SHARING:
83*6777b538SAndroid Build Coastguard Worker       return "Service: sharing.mojom.Sharing";
84*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_MEDIAPARSER:
85*6777b538SAndroid Build Coastguard Worker       return "Service: chrome.mojom.MediaParserFactory";
86*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_QRCODEGENERATOR:
87*6777b538SAndroid Build Coastguard Worker       return "Service: qrcode_generator.mojom.QRCodeGeneratorService";
88*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PROFILEIMPORT:
89*6777b538SAndroid Build Coastguard Worker       return "Service: chrome.mojom.ProfileImport";
90*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_IME:
91*6777b538SAndroid Build Coastguard Worker       return "Service: chromeos.ime.mojom.ImeService";
92*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_RECORDING:
93*6777b538SAndroid Build Coastguard Worker       return "Service: recording.mojom.RecordingService";
94*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_SHAPEDETECTION:
95*6777b538SAndroid Build Coastguard Worker       return "Service: shape_detection.mojom.ShapeDetectionService";
96*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_RENDERER_EXTENSION:
97*6777b538SAndroid Build Coastguard Worker       return "Extension Renderer";
98*6777b538SAndroid Build Coastguard Worker   }
99*6777b538SAndroid Build Coastguard Worker #else
100*6777b538SAndroid Build Coastguard Worker   return "Null";
101*6777b538SAndroid Build Coastguard Worker #endif  // BUILDFLAG(ENABLE_BASE_TRACING)
102*6777b538SAndroid Build Coastguard Worker }
103*6777b538SAndroid Build Coastguard Worker 
104*6777b538SAndroid Build Coastguard Worker }  // namespace
105*6777b538SAndroid Build Coastguard Worker 
106*6777b538SAndroid Build Coastguard Worker // Used for logging histograms for IPC metrics based on their process type.
GetShortType(TypeKey key)107*6777b538SAndroid Build Coastguard Worker ShortProcessType CurrentProcess::GetShortType(TypeKey key) {
108*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(ENABLE_BASE_TRACING)
109*6777b538SAndroid Build Coastguard Worker   CurrentProcessType process = static_cast<CurrentProcessType>(
110*6777b538SAndroid Build Coastguard Worker       process_type_.load(std::memory_order_relaxed));
111*6777b538SAndroid Build Coastguard Worker   switch (process) {
112*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_UNSPECIFIED:
113*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kUnspecified;
114*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_BROWSER:
115*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kBrowser;
116*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_RENDERER:
117*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kRenderer;
118*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_UTILITY:
119*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kUtility;
120*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_ZYGOTE:
121*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kZygote;
122*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SANDBOX_HELPER:
123*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kSandboxHelper;
124*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_GPU:
125*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kGpu;
126*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_PPAPI_PLUGIN:
127*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kPpapiPlugin;
128*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_PPAPI_BROKER:
129*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kPpapiBroker;
130*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_NETWORK:
131*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kServiceNetwork;
132*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_STORAGE:
133*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kServiceStorage;
134*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_RENDERER_EXTENSION:
135*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kRendererExtension;
136*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_TRACING:
137*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_AUDIO:
138*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_DATA_DECODER:
139*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_UTIL_WIN:
140*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PROXY_RESOLVER:
141*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_CDM:
142*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_MEDIA_FOUNDATION:
143*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_VIDEO_CAPTURE:
144*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_UNZIPPER:
145*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_MIRRORING:
146*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_FILEPATCHER:
147*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_TTS:
148*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PRINTING:
149*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_QUARANTINE:
150*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_CROS_LOCALSEARCH:
151*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER:
152*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_FILEUTIL:
153*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PRINTCOMPOSITOR:
154*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PAINTPREVIEW:
155*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_SPEECHRECOGNITION:
156*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_XRDEVICE:
157*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_READICON:
158*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_LANGUAGEDETECTION:
159*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_SHARING:
160*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_MEDIAPARSER:
161*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_QRCODEGENERATOR:
162*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_PROFILEIMPORT:
163*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_IME:
164*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_RECORDING:
165*6777b538SAndroid Build Coastguard Worker     case CurrentProcessType::PROCESS_SERVICE_SHAPEDETECTION:
166*6777b538SAndroid Build Coastguard Worker       return ShortProcessType::kService;
167*6777b538SAndroid Build Coastguard Worker   }
168*6777b538SAndroid Build Coastguard Worker #else
169*6777b538SAndroid Build Coastguard Worker   return ShortProcessType::kUnspecified;
170*6777b538SAndroid Build Coastguard Worker #endif
171*6777b538SAndroid Build Coastguard Worker }
172*6777b538SAndroid Build Coastguard Worker 
173*6777b538SAndroid Build Coastguard Worker // static
GetInstance()174*6777b538SAndroid Build Coastguard Worker CurrentProcess& CurrentProcess::GetInstance() {
175*6777b538SAndroid Build Coastguard Worker   static base::NoDestructor<CurrentProcess> instance;
176*6777b538SAndroid Build Coastguard Worker   return *instance;
177*6777b538SAndroid Build Coastguard Worker }
178*6777b538SAndroid Build Coastguard Worker 
SetProcessType(CurrentProcessType process_type)179*6777b538SAndroid Build Coastguard Worker void CurrentProcess::SetProcessType(CurrentProcessType process_type) {
180*6777b538SAndroid Build Coastguard Worker   std::string process_name = GetNameForProcessType(process_type);
181*6777b538SAndroid Build Coastguard Worker   CurrentProcess::GetInstance().SetProcessNameAndType(process_name,
182*6777b538SAndroid Build Coastguard Worker                                                       process_type);
183*6777b538SAndroid Build Coastguard Worker }
184*6777b538SAndroid Build Coastguard Worker 
SetProcessNameAndType(const std::string & process_name,CurrentProcessType process_type)185*6777b538SAndroid Build Coastguard Worker void CurrentProcess::SetProcessNameAndType(const std::string& process_name,
186*6777b538SAndroid Build Coastguard Worker                                            CurrentProcessType process_type) {
187*6777b538SAndroid Build Coastguard Worker   {
188*6777b538SAndroid Build Coastguard Worker     AutoLock lock(lock_);
189*6777b538SAndroid Build Coastguard Worker     process_name_ = process_name;
190*6777b538SAndroid Build Coastguard Worker     process_type_.store(static_cast<CurrentProcessType>(process_type),
191*6777b538SAndroid Build Coastguard Worker                         std::memory_order_relaxed);
192*6777b538SAndroid Build Coastguard Worker   }
193*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(ENABLE_BASE_TRACING)
194*6777b538SAndroid Build Coastguard Worker   trace_event::TraceLog::GetInstance()->OnSetProcessName(process_name);
195*6777b538SAndroid Build Coastguard Worker #endif
196*6777b538SAndroid Build Coastguard Worker }
197*6777b538SAndroid Build Coastguard Worker 
198*6777b538SAndroid Build Coastguard Worker }  // namespace base
199