1# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
2# vim: set filetype=python:
3# This Source Code Form is subject to the terms of the Mozilla Public
4# License, v. 2.0. If a copy of the MPL was not distributed with this
5# file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7with Files("**"):
8    BUG_COMPONENT = ("Core", "DOM: Content Processes")
9
10DIRS += ["jsactor"]
11
12XPIDL_SOURCES += [
13    "nsIDOMProcessChild.idl",
14    "nsIDOMProcessParent.idl",
15    "nsIHangReport.idl",
16    "nsILoginDetectionService.idl",
17]
18
19XPIDL_MODULE = "dom"
20
21XPCOM_MANIFESTS += [
22    "components.conf",
23]
24
25EXTRA_JS_MODULES += [
26    "ManifestMessagesChild.jsm",
27]
28
29EXPORTS.mozilla.dom.ipc += [
30    "IdType.h",
31    "MemMapSnapshot.h",
32    "SharedMap.h",
33    "SharedMapChangeEvent.h",
34    "SharedStringMap.h",
35    "StringTable.h",
36    "StructuredCloneData.h",
37]
38
39EXPORTS.mozilla.dom += [
40    "BrowserBridgeChild.h",
41    "BrowserBridgeHost.h",
42    "BrowserBridgeParent.h",
43    "BrowserChild.h",
44    "BrowserHost.h",
45    "BrowserParent.h",
46    "ClonedErrorHolder.h",
47    "CoalescedInputData.h",
48    "CoalescedMouseData.h",
49    "CoalescedTouchData.h",
50    "CoalescedWheelData.h",
51    "ContentChild.h",
52    "ContentParent.h",
53    "ContentProcess.h",
54    "ContentProcessManager.h",
55    "CSPMessageUtils.h",
56    "DocShellMessageUtils.h",
57    "EffectsInfo.h",
58    "FilePickerParent.h",
59    "InProcessChild.h",
60    "InProcessParent.h",
61    "LoginDetectionService.h",
62    "MaybeDiscarded.h",
63    "MemoryReportRequest.h",
64    "NativeThreadId.h",
65    "PermissionMessageUtils.h",
66    "ProcessActor.h",
67    "ProcessIsolation.h",
68    "PropertyBagUtils.h",
69    "ReferrerInfoUtils.h",
70    "RefMessageBodyService.h",
71    "RemoteBrowser.h",
72    "RemoteType.h",
73    "RemoteWebProgressRequest.h",
74    "SharedMessageBody.h",
75    "TabContext.h",
76    "TabMessageTypes.h",
77    "TabMessageUtils.h",
78    "URLClassifierChild.h",
79    "URLClassifierParent.h",
80    "UserActivationIPCUtils.h",
81    "VsyncChild.h",
82    "VsyncMainChild.h",
83    "VsyncParent.h",
84    "VsyncWorkerChild.h",
85    "WindowGlobalActor.h",
86    "WindowGlobalChild.h",
87    "WindowGlobalParent.h",
88]
89
90EXPORTS.mozilla += [
91    "PreallocatedProcessManager.h",
92    "ProcessHangMonitor.h",
93    "ProcessHangMonitorIPC.h",
94    "ProcessPriorityManager.h",
95]
96
97UNIFIED_SOURCES += [
98    "BrowserBridgeChild.cpp",
99    "BrowserBridgeHost.cpp",
100    "BrowserBridgeParent.cpp",
101    "BrowserChild.cpp",
102    "BrowserHost.cpp",
103    "BrowserParent.cpp",
104    "ClonedErrorHolder.cpp",
105    "CoalescedInputData.cpp",
106    "CoalescedMouseData.cpp",
107    "CoalescedTouchData.cpp",
108    "CoalescedWheelData.cpp",
109    "ColorPickerParent.cpp",
110    "ContentParent.cpp",
111    "ContentProcess.cpp",
112    "ContentProcessManager.cpp",
113    "CSPMessageUtils.cpp",
114    "DocShellMessageUtils.cpp",
115    "FilePickerParent.cpp",
116    "InProcessImpl.cpp",
117    "LoginDetectionService.cpp",
118    "MemMapSnapshot.cpp",
119    "MemoryReportRequest.cpp",
120    "MMPrinter.cpp",
121    "PermissionMessageUtils.cpp",
122    "PreallocatedProcessManager.cpp",
123    "ProcessActor.cpp",
124    "ProcessIsolation.cpp",
125    "ProcessPriorityManager.cpp",
126    "PropertyBagUtils.cpp",
127    "ReferrerInfoUtils.cpp",
128    "RefMessageBodyService.cpp",
129    "RemoteBrowser.cpp",
130    "RemoteWebProgressRequest.cpp",
131    "SharedMap.cpp",
132    "SharedMessageBody.cpp",
133    "SharedStringMap.cpp",
134    "StructuredCloneData.cpp",
135    "TabContext.cpp",
136    "TabMessageUtils.cpp",
137    "URLClassifierParent.cpp",
138    "WindowGlobalActor.cpp",
139    "WindowGlobalChild.cpp",
140    "WindowGlobalParent.cpp",
141]
142
143# ContentChild.cpp cannot be compiled in unified mode on  linux due to Time conflict
144SOURCES += [
145    "ContentChild.cpp",
146    "ProcessHangMonitor.cpp",
147    "VsyncMainChild.cpp",
148    "VsyncParent.cpp",
149    "VsyncWorkerChild.cpp",
150]
151
152PREPROCESSED_IPDL_SOURCES += [
153    "PBrowser.ipdl",
154    "PBrowserBridge.ipdl",
155    "PContent.ipdl",
156]
157
158IPDL_SOURCES += [
159    "DOMTypes.ipdlh",
160    "MemoryReportTypes.ipdlh",
161    "PColorPicker.ipdl",
162    "PContentPermission.ipdlh",
163    "PContentPermissionRequest.ipdl",
164    "PCycleCollectWithLogs.ipdl",
165    "PFilePicker.ipdl",
166    "PInProcess.ipdl",
167    "PLoginReputation.ipdl",
168    "PProcessHangMonitor.ipdl",
169    "PrefsTypes.ipdlh",
170    "PTabContext.ipdlh",
171    "PURLClassifier.ipdl",
172    "PURLClassifierInfo.ipdlh",
173    "PURLClassifierLocal.ipdl",
174    "PVsync.ipdl",
175    "PWindowGlobal.ipdl",
176    "ServiceWorkerConfiguration.ipdlh",
177    "WindowGlobalTypes.ipdlh",
178]
179
180include("/ipc/chromium/chromium-config.mozbuild")
181
182FINAL_LIBRARY = "xul"
183
184if CONFIG["MOZ_SANDBOX"] and (CONFIG["OS_TARGET"] in ["Darwin", "Linux"]):
185    USE_LIBS += [
186        "mozsandbox",
187    ]
188
189LOCAL_INCLUDES += [
190    "/caps",
191    "/chrome",
192    "/docshell/base",
193    "/dom/base",
194    "/dom/bindings",
195    "/dom/events",
196    "/dom/filesystem",
197    "/dom/geolocation",
198    "/dom/media/webrtc",
199    "/dom/media/webspeech/synth/ipc",
200    "/dom/security",
201    "/dom/storage",
202    "/extensions/spellcheck/src",
203    "/gfx/2d",
204    "/hal/sandbox",
205    "/js/xpconnect/loader",
206    "/js/xpconnect/src",
207    "/layout/base",
208    "/media/webrtc",
209    "/netwerk/base",
210    "/netwerk/protocol/http",
211    "/toolkit/components/printingui/ipc",
212    "/toolkit/crashreporter",
213    "/toolkit/xre",
214    "/uriloader/exthandler",
215    "/widget",
216    "/xpcom/base",
217    "/xpcom/threads",
218]
219
220if CONFIG["MOZ_SANDBOX"] and CONFIG["OS_ARCH"] == "WINNT":
221    LOCAL_INCLUDES += [
222        "/security/sandbox/chromium",
223        "/security/sandbox/chromium-shim",
224    ]
225
226if CONFIG["OS_ARCH"] != "WINNT":
227    LOCAL_INCLUDES += [
228        "/modules/libjar",
229    ]
230
231DEFINES["BIN_SUFFIX"] = '"%s"' % CONFIG["BIN_SUFFIX"]
232
233DEFINES["MOZ_APP_NAME"] = '"%s"' % CONFIG["MOZ_APP_NAME"]
234
235if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
236    DEFINES["MOZ_ENABLE_FREETYPE"] = True
237
238JAR_MANIFESTS += ["jar.mn"]
239
240BROWSER_CHROME_MANIFESTS += [
241    "tests/browser.ini",
242    "tests/JSProcessActor/browser.ini",
243    "tests/JSWindowActor/browser.ini",
244]
245
246MOCHITEST_CHROME_MANIFESTS += ["tests/chrome.ini"]
247MOCHITEST_MANIFESTS += ["tests/mochitest.ini"]
248XPCSHELL_TESTS_MANIFESTS += ["tests/xpcshell.ini"]
249
250if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
251    CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
252
253if CONFIG["FUZZING"] and CONFIG["FUZZING_INTERFACES"]:
254    TEST_DIRS += ["fuzztest"]
255
256# Add libFuzzer configuration directives
257include("/tools/fuzzing/libfuzzer-config.mozbuild")
258