mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
985adb750c
The NodeController and NodeChannel types act as the backbone connecting the existing IPC logic and driving the ports routing code. Individual NodeChannel objects wrap and respond to messages from IPC::Channel, and the NodeController orchestrates all messaging for a process. The design of these types are inspired by the types with the same names from Mojo but have been simplified and streamlined to only support features used by Gecko. Support for attaching ports or handles to messages hasn't been added yet, but can be added in follow-up patches. Differential Revision: https://phabricator.services.mozilla.com/D112775
279 lines
6.8 KiB
Python
279 lines
6.8 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# 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("/dom/media/webrtc/third_party_build/webrtc.mozbuild")
|
|
|
|
EXPORTS += [
|
|
"nsIIPCSerializableInputStream.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.ipc += [
|
|
"AutoTransportDescriptor.h",
|
|
"BackgroundChild.h",
|
|
"BackgroundParent.h",
|
|
"BackgroundUtils.h",
|
|
"BrowserProcessSubThread.h",
|
|
"ByteBuf.h",
|
|
"ByteBufUtils.h",
|
|
"CrashReporterClient.h",
|
|
"CrashReporterHelper.h",
|
|
"CrashReporterHost.h",
|
|
"CrossProcessMutex.h",
|
|
"CrossProcessSemaphore.h",
|
|
"Endpoint.h",
|
|
"EnvironmentMap.h",
|
|
"FileDescriptor.h",
|
|
"FileDescriptorSetChild.h",
|
|
"FileDescriptorSetParent.h",
|
|
"FileDescriptorUtils.h",
|
|
"GeckoChildProcessHost.h",
|
|
"IdleSchedulerChild.h",
|
|
"IdleSchedulerParent.h",
|
|
"InputStreamUtils.h",
|
|
"IOThreadChild.h",
|
|
"IPCCore.h",
|
|
"IPCStreamAlloc.h",
|
|
"IPCStreamDestination.h",
|
|
"IPCStreamSource.h",
|
|
"IPCStreamUtils.h",
|
|
"IPCTypes.h",
|
|
"IPDLParamTraits.h",
|
|
"LibrarySandboxPreload.h",
|
|
"MessageChannel.h",
|
|
"MessageLink.h",
|
|
"MessagePump.h",
|
|
"Neutering.h",
|
|
"NodeChannel.h",
|
|
"NodeController.h",
|
|
"ProcessChild.h",
|
|
"ProcessUtils.h",
|
|
"ProtocolMessageUtils.h",
|
|
"ProtocolUtils.h",
|
|
"ProtocolUtilsFwd.h",
|
|
"ScopedPort.h",
|
|
"ScopedXREEmbed.h",
|
|
"SerializedStructuredCloneBuffer.h",
|
|
"SharedMemory.h",
|
|
"SharedMemoryBasic.h",
|
|
"Shmem.h",
|
|
"ShmemMessageUtils.h",
|
|
"TaintingIPCUtils.h",
|
|
"TaskFactory.h",
|
|
"Transport.h",
|
|
"TransportSecurityInfoUtils.h",
|
|
"URIUtils.h",
|
|
"WindowsMessageLoop.h",
|
|
]
|
|
|
|
if CONFIG["OS_ARCH"] == "WINNT":
|
|
EXPORTS.mozilla.ipc += [
|
|
"Transport_win.h",
|
|
]
|
|
SOURCES += [
|
|
"SharedMemory_windows.cpp",
|
|
"Transport_win.cpp",
|
|
"WindowsMessageLoop.cpp",
|
|
]
|
|
else:
|
|
EXPORTS.mozilla.ipc += [
|
|
"Transport_posix.h",
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
"SharedMemory_posix.cpp",
|
|
"Transport_posix.cpp",
|
|
]
|
|
|
|
if CONFIG["OS_ARCH"] == "WINNT":
|
|
SOURCES += [
|
|
"CrossProcessMutex_windows.cpp",
|
|
]
|
|
elif not CONFIG["OS_ARCH"] in ("NetBSD", "OpenBSD"):
|
|
UNIFIED_SOURCES += [
|
|
"CrossProcessMutex_posix.cpp",
|
|
]
|
|
else:
|
|
UNIFIED_SOURCES += [
|
|
"CrossProcessMutex_unimplemented.cpp",
|
|
]
|
|
|
|
if CONFIG["OS_ARCH"] == "WINNT":
|
|
SOURCES += [
|
|
"CrossProcessSemaphore_windows.cpp",
|
|
]
|
|
elif CONFIG["OS_ARCH"] != "Darwin":
|
|
UNIFIED_SOURCES += [
|
|
"CrossProcessSemaphore_posix.cpp",
|
|
]
|
|
else:
|
|
UNIFIED_SOURCES += [
|
|
"CrossProcessSemaphore_unimplemented.cpp",
|
|
]
|
|
|
|
# Android has its own,
|
|
# almost-but-not-quite-compatible-with-POSIX-or-/dev/shm shared memory
|
|
# impl.
|
|
if CONFIG["OS_TARGET"] == "Android":
|
|
EXPORTS.mozilla.ipc += ["SharedMemoryBasic_android.h"]
|
|
UNIFIED_SOURCES += [
|
|
"SharedMemoryBasic_android.cpp",
|
|
]
|
|
elif CONFIG["OS_ARCH"] == "Darwin":
|
|
EXPORTS.mozilla.ipc += ["SharedMemoryBasic_mach.h"]
|
|
SOURCES += [
|
|
"SharedMemoryBasic_mach.mm",
|
|
]
|
|
else:
|
|
EXPORTS.mozilla.ipc += ["SharedMemoryBasic_chromium.h"]
|
|
|
|
if CONFIG["OS_ARCH"] == "Linux":
|
|
UNIFIED_SOURCES += [
|
|
"ProcessUtils_linux.cpp",
|
|
]
|
|
elif CONFIG["OS_ARCH"] in ("DragonFly", "FreeBSD", "NetBSD", "OpenBSD"):
|
|
UNIFIED_SOURCES += ["ProcessUtils_bsd.cpp"]
|
|
elif CONFIG["OS_ARCH"] == "Darwin":
|
|
UNIFIED_SOURCES += ["ProcessUtils_mac.mm"]
|
|
else:
|
|
UNIFIED_SOURCES += [
|
|
"ProcessUtils_none.cpp",
|
|
]
|
|
|
|
if CONFIG["OS_ARCH"] != "WINNT":
|
|
EXPORTS.mozilla.ipc += [
|
|
"FileDescriptorShuffle.h",
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
"FileDescriptorShuffle.cpp",
|
|
]
|
|
|
|
EXPORTS.ipc += [
|
|
"EnumSerializer.h",
|
|
"IPCMessageUtils.h",
|
|
"IPCMessageUtilsSpecializations.h",
|
|
]
|
|
|
|
UNIFIED_SOURCES += [
|
|
"AutoTransportDescriptor.cpp",
|
|
"BackgroundImpl.cpp",
|
|
"BackgroundUtils.cpp",
|
|
"BrowserProcessSubThread.cpp",
|
|
"CrashReporterClient.cpp",
|
|
"CrashReporterHost.cpp",
|
|
"FileDescriptor.cpp",
|
|
"FileDescriptorUtils.cpp",
|
|
"IdleSchedulerChild.cpp",
|
|
"IdleSchedulerParent.cpp",
|
|
"InputStreamUtils.cpp",
|
|
"IPCMessageUtils.cpp",
|
|
"IPCMessageUtilsSpecializations.cpp",
|
|
"IPCStreamChild.cpp",
|
|
"IPCStreamDestination.cpp",
|
|
"IPCStreamParent.cpp",
|
|
"IPCStreamSource.cpp",
|
|
"IPCStreamUtils.cpp",
|
|
"LibrarySandboxPreload.cpp",
|
|
"MessageChannel.cpp",
|
|
"MessageLink.cpp",
|
|
"MessagePump.cpp",
|
|
"NodeChannel.cpp",
|
|
"NodeController.cpp",
|
|
"ProcessChild.cpp",
|
|
"ProcessUtils_common.cpp",
|
|
"ProtocolUtils.cpp",
|
|
"ScopedPort.cpp",
|
|
"ScopedXREEmbed.cpp",
|
|
"SharedMemory.cpp",
|
|
"Shmem.cpp",
|
|
"StringUtil.cpp",
|
|
"TransportSecurityInfoUtils.cpp",
|
|
"URIUtils.cpp",
|
|
]
|
|
|
|
SOURCES += [
|
|
"BackgroundChildImpl.cpp",
|
|
"BackgroundParentImpl.cpp",
|
|
"FileDescriptorSetChild.cpp",
|
|
"FileDescriptorSetParent.cpp",
|
|
]
|
|
|
|
if CONFIG["OS_ARCH"] == "Darwin":
|
|
# GeckoChildProcessHost.cpp cannot be built unified due to OSX header
|
|
# clashes with TextRange.
|
|
SOURCES += [
|
|
"GeckoChildProcessHost.cpp",
|
|
]
|
|
else:
|
|
UNIFIED_SOURCES += [
|
|
"GeckoChildProcessHost.cpp",
|
|
]
|
|
|
|
LOCAL_INCLUDES += [
|
|
"/caps",
|
|
"/dom/broadcastchannel",
|
|
"/dom/indexedDB",
|
|
"/dom/storage",
|
|
"/netwerk/base",
|
|
"/third_party/libwebrtc",
|
|
"/third_party/libwebrtc/webrtc",
|
|
"/xpcom/build",
|
|
]
|
|
|
|
IPDL_SOURCES = [
|
|
"InputStreamParams.ipdlh",
|
|
"IPCStream.ipdlh",
|
|
"PBackground.ipdl",
|
|
"PBackgroundSharedTypes.ipdlh",
|
|
"PBackgroundTest.ipdl",
|
|
"PChildToParentStream.ipdl",
|
|
"PFileDescriptorSet.ipdl",
|
|
"PIdleScheduler.ipdl",
|
|
"PParentToChildStream.ipdl",
|
|
"ProtocolTypes.ipdlh",
|
|
"URIParams.ipdlh",
|
|
]
|
|
|
|
if CONFIG["MOZ_ENABLE_FORKSERVER"]:
|
|
EXPORTS.mozilla.ipc += [
|
|
"ForkServer.h",
|
|
"ForkServiceChild.h",
|
|
"MiniTransceiver.h",
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
"ForkServer.cpp",
|
|
"ForkServiceChild.cpp",
|
|
"MiniTransceiver.cpp",
|
|
]
|
|
XPCOM_MANIFESTS += [
|
|
"components.conf",
|
|
]
|
|
|
|
LOCAL_INCLUDES += [
|
|
"/dom/ipc",
|
|
"/toolkit/crashreporter",
|
|
"/toolkit/xre",
|
|
"/xpcom/base",
|
|
"/xpcom/threads",
|
|
]
|
|
|
|
include("/ipc/chromium/chromium-config.mozbuild")
|
|
|
|
FINAL_LIBRARY = "xul"
|
|
|
|
for var in ("MOZ_CHILD_PROCESS_NAME", "MOZ_CHILD_PROCESS_BUNDLE"):
|
|
DEFINES[var] = '"%s"' % CONFIG[var]
|
|
|
|
if CONFIG["MOZ_SANDBOX"] and CONFIG["OS_ARCH"] == "WINNT":
|
|
LOCAL_INCLUDES += [
|
|
"/security/sandbox/chromium",
|
|
"/security/sandbox/chromium-shim",
|
|
"/security/sandbox/win/src/sandboxbroker",
|
|
]
|
|
|
|
if CONFIG["CC_TYPE"] in ("clang", "gcc"):
|
|
CXXFLAGS += ["-Wno-shadow"]
|
|
|
|
# Add libFuzzer configuration directives
|
|
include("/tools/fuzzing/libfuzzer-config.mozbuild")
|