File: PUtilityProcess.ipdl

package info (click to toggle)
firefox 147.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,484 kB
  • sloc: cpp: 7,607,246; javascript: 6,533,185; ansic: 3,775,227; python: 1,415,393; xml: 634,561; asm: 438,951; java: 186,241; sh: 62,752; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (131 lines) | stat: -rw-r--r-- 4,827 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

include CrashReporterInitArgs;
include MemoryReportTypes;
include PrefsTypes;

include protocol PProfiler;
include protocol PUtilityMediaService;
include protocol PJSOracle;

#if defined(XP_WIN)
include protocol PWindowsUtils;
include protocol PWinFileDialog;
#endif

#if defined(MOZ_SANDBOX) && defined(MOZ_DEBUG) && defined(ENABLE_TESTS)
include protocol PSandboxTesting;
#endif

include "mozilla/ipc/ByteBufUtils.h";

include GraphicsMessages;

using mozilla::dom::NativeThreadId from "mozilla/dom/NativeThreadId.h";

// Telemetry
using mozilla::Telemetry::HistogramAccumulation from "mozilla/TelemetryComms.h";
using mozilla::Telemetry::KeyedHistogramAccumulation from "mozilla/TelemetryComms.h";
using mozilla::Telemetry::ScalarAction from "mozilla/TelemetryComms.h";
using mozilla::Telemetry::KeyedScalarAction from "mozilla/TelemetryComms.h";
using mozilla::Telemetry::ChildEventData from "mozilla/TelemetryComms.h";
using mozilla::Telemetry::DiscardedData from "mozilla/TelemetryComms.h";

#if defined(XP_WIN)
[MoveOnly] using mozilla::UntrustedModulesData from "mozilla/UntrustedModulesData.h";
[MoveOnly] using mozilla::ModulePaths from "mozilla/UntrustedModulesData.h";
[MoveOnly] using mozilla::ModulesMapResult from "mozilla/UntrustedModulesData.h";
#endif  // defined(XP_WIN)

namespace mozilla {

namespace ipc {

// This protocol allows the UI process to talk to the Utility process. There is
// one instance of this protocol, with the UtilityProcessParent living on the main thread
// of the main process and the UtilityProcessChild living on the main thread of the Utility
// process.
[NeedsOtherPid, ChildProc=Utility]
protocol PUtilityProcess
{
parent:
  async InitCrashReporter(CrashReporterInitArgs aInitArgs);

  async AddMemoryReport(MemoryReport aReport);

  // Sent from time-to-time to limit the amount of telemetry vulnerable to loss
  // Buffer contains bincoded Rust structs.
  // https://firefox-source-docs.mozilla.org/toolkit/components/glean/dev/ipc.html
  async FOGData(ByteBuf buf);

  async GeckoTraceExport(ByteBuf aBuf);

#if defined(XP_WIN)
  async GetModulesTrust(ModulePaths aModPaths, bool aRunAtNormalPriority)
      returns (ModulesMapResult? modMapResult);
#endif  // defined(XP_WIN)

  // Messages for sending telemetry to parent process.
  async AccumulateChildHistograms(HistogramAccumulation[] accumulations);
  async AccumulateChildKeyedHistograms(KeyedHistogramAccumulation[] accumulations);
  async UpdateChildScalars(ScalarAction[] actions);
  async UpdateChildKeyedScalars(KeyedScalarAction[] actions);
  async RecordChildEvents(ChildEventData[] events);
  async RecordDiscardedData(DiscardedData data);

  async InitCompleted();

child:
  async Init(FileDescriptor? sandboxBroker, bool canRecordReleaseTelemetry, bool aIsReadyForBackgroundProcessing);

  async InitProfiler(Endpoint<PProfilerChild> endpoint);

  async RequestMemoryReport(uint32_t generation,
                            bool anonymize,
                            bool minimizeMemoryUsage,
                            FileDescriptor? DMDFile)
      returns (uint32_t aGeneration);

  async PreferenceUpdate(Pref pref);

  // Tells the Utility process to flush any pending telemetry.
  // Used in tests and ping assembly. Buffer contains bincoded Rust structs.
  // https://firefox-source-docs.mozilla.org/toolkit/components/glean/dev/ipc.html
  async FlushFOGData() returns (ByteBuf buf);

  // Test-only method.
  // Asks the Utility process to trigger test-only instrumentation.
  // The unused returned value is to have a promise we can await.
  async TestTriggerMetrics() returns (bool unused);

  async TestTelemetryProbes();

  async StartUtilityMediaService(Endpoint<PUtilityMediaServiceParent> aEndpoint, GfxVarUpdate[] updates);

  async StartJSOracleService(Endpoint<PJSOracleChild> aEndpoint);

#if defined(XP_WIN)
  async StartWindowsUtilsService(Endpoint<PWindowsUtilsChild> aEndpoint);
  async StartWinFileDialogService(Endpoint<PWinFileDialogChild> aEndpoint);

  async GetUntrustedModulesData() returns (UntrustedModulesData? data);

  /**
  * This method is used to notify a child process to start
  * processing module loading events in UntrustedModulesProcessor.
  * This should be called when the parent process has gone idle.
  */
  async UnblockUntrustedModulesThread();
#endif  // defined(XP_WIN)

#if defined(MOZ_SANDBOX) && defined(MOZ_DEBUG) && defined(ENABLE_TESTS)
  async InitSandboxTesting(Endpoint<PSandboxTestingChild> aEndpoint);
#endif
};

} // namespace ipc

} // namespace mozilla