Source code

Revision control

Copy as Markdown

Other Tools

# 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/.
from collections import namedtuple
# Please make sure you follow ipc/docs/processes.rst and keep updating all
# places that might depend on a new process type and that are not covered (yet)
# by that code.
# The entries in this file define support functions for each of the process
# types present in Gecko.
#
# GECKO_PROCESS_TYPE(
# enum-value,
# enum-name,
# string-name,
# proc-typename,
# process-bin-type,
# procinfo-typename,
# webidl-typename,
# allcaps-name,
# crash-ping,
# )
#
# enum-value:
# Unsigned int value the enum will use to identify the process type. This
# value must not be shared by different process types and should never be
# changed since it is used e.g. in telemetry reporting.
#
# ***These values should be mirrored in nsIXULRuntime.idl.***
#
# enum-name:
# Used to name the GeckoChildProcess enum. E.g. `Foo` will become
# `GeckoChildProcess_Foo`. The enum's value will be the enum-value above.
#
# string-name:
# Human-readable name. It is exposed to things like telemetry and the crash
# reporter, so it should not be changed casually.
#
# proc-typename:
# Used as NAME in the `XRE_Is${NAME}Process` function. Ideally, this should
# match the enum-name. This is included since there are legacy exceptions to
# that rule.
#
# process-bin-type:
# Either Self or PluginContainer. Determines whether the child process may
# be started using the same binary as the parent process, or whether to use
# plugin-container (Note that whether or not this value is actually obeyed
# depends on platform and build configuration. Do not use this value
# directly, but rather use XRE_GetChildProcBinPathType to resolve this).
#
# procinfo-typename:
# Used as NAME in the ProcType enum defined by ProcInfo.h.
#
# webidl-typename:
# Used as NAME in the ChromeUtils.cpp code
#
# allcaps-name:
# Used as NAME for checking SYNC_ENUM in nsXULAppAPI.h
#
# crash-ping:
# Boolean reflecting if the process is allowed to send crash ping.
GeckoProcessType = namedtuple(
"GeckoProcessType",
[
"enum_value",
"enum_name",
"string_name",
"proc_typename",
"process_bin_type",
"procinfo_typename",
"webidl_typename",
"allcaps_name",
"crash_ping",
],
)
process_types = [
GeckoProcessType(
0,
"Default",
"default",
"Parent",
"Self",
"Browser",
"Browser",
"DEFAULT",
True,
),
GeckoProcessType(
2,
"Content",
"tab",
"Content",
"Self",
"Content",
"Content",
"CONTENT",
True,
),
GeckoProcessType(
3,
"IPDLUnitTest",
"ipdlunittest",
"IPDLUnitTest",
"Self",
"IPDLUnitTest",
"IpdlUnitTest",
"IPDLUNITTEST",
False,
),
GeckoProcessType(
4,
"GMPlugin",
"gmplugin",
"GMPlugin",
"PluginContainer",
"GMPlugin",
"GmpPlugin",
"GMPLUGIN",
True,
),
GeckoProcessType(
5,
"GPU",
"gpu",
"GPU",
"Self",
"GPU",
"Gpu",
"GPU",
True,
),
GeckoProcessType(
6,
"VR",
"vr",
"VR",
"Self",
"VR",
"Vr",
"VR",
True,
),
GeckoProcessType(
7,
"RDD",
"rdd",
"RDD",
"Self",
"RDD",
"Rdd",
"RDD",
True,
),
GeckoProcessType(
8,
"Socket",
"socket",
"Socket",
"Self",
"Socket",
"Socket",
"SOCKET",
True,
),
GeckoProcessType(
9,
"RemoteSandboxBroker",
"sandboxbroker",
"RemoteSandboxBroker",
"PluginContainer",
"RemoteSandboxBroker",
"RemoteSandboxBroker",
"REMOTESANDBOXBROKER",
True,
),
GeckoProcessType(
10,
"ForkServer",
"forkserver",
"ForkServer",
"Self",
"ForkServer",
"ForkServer",
"FORKSERVER",
True,
),
GeckoProcessType(
11,
"Utility",
"utility",
"Utility",
"Self",
"Utility",
"Utility",
"UTILITY",
True,
),
]