Bug 1631967 [wpt PR 23155] - [EventTiming] Add shadow DOM test for first input, a...
[gecko.git] / gfx / ipc / GPUProcessImpl.cpp
blobdbb43243bb0fac87fca1d90ef67eb46f86377382
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
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 #include "GPUProcessImpl.h"
7 #include "mozilla/ipc/IOThreadChild.h"
8 #include "nsXPCOM.h"
9 #include "ProcessUtils.h"
11 #if defined(OS_WIN) && defined(MOZ_SANDBOX)
12 # include "mozilla/sandboxTarget.h"
13 #elif defined(__OpenBSD__) && defined(MOZ_SANDBOX)
14 # include "mozilla/SandboxSettings.h"
15 #endif
17 namespace mozilla {
18 namespace gfx {
20 using namespace ipc;
22 GPUProcessImpl::GPUProcessImpl(ProcessId aParentPid)
23 : ProcessChild(aParentPid) {}
25 GPUProcessImpl::~GPUProcessImpl() = default;
27 bool GPUProcessImpl::Init(int aArgc, char* aArgv[]) {
28 #if defined(MOZ_SANDBOX) && defined(OS_WIN)
29 mozilla::SandboxTarget::Instance()->StartSandbox();
30 #elif defined(__OpenBSD__) && defined(MOZ_SANDBOX)
31 StartOpenBSDSandbox(GeckoProcessType_GPU);
32 #endif
33 char* parentBuildID = nullptr;
34 char* prefsHandle = nullptr;
35 char* prefMapHandle = nullptr;
36 char* prefsLen = nullptr;
37 char* prefMapSize = nullptr;
38 for (int i = 1; i < aArgc; i++) {
39 if (!aArgv[i]) {
40 continue;
42 if (strcmp(aArgv[i], "-parentBuildID") == 0) {
43 parentBuildID = aArgv[i + 1];
45 #ifdef XP_WIN
46 } else if (strcmp(aArgv[i], "-prefsHandle") == 0) {
47 if (++i == aArgc) {
48 return false;
50 prefsHandle = aArgv[i];
51 } else if (strcmp(aArgv[i], "-prefMapHandle") == 0) {
52 if (++i == aArgc) {
53 return false;
55 prefMapHandle = aArgv[i];
56 #endif
57 } else if (strcmp(aArgv[i], "-prefsLen") == 0) {
58 if (++i == aArgc) {
59 return false;
61 prefsLen = aArgv[i];
62 } else if (strcmp(aArgv[i], "-prefMapSize") == 0) {
63 if (++i == aArgc) {
64 return false;
66 prefMapSize = aArgv[i];
70 SharedPreferenceDeserializer deserializer;
71 if (!deserializer.DeserializeFromSharedMemory(prefsHandle, prefMapHandle,
72 prefsLen, prefMapSize)) {
73 return false;
76 return mGPU.Init(ParentPid(), parentBuildID, IOThreadChild::message_loop(),
77 IOThreadChild::TakeChannel());
80 void GPUProcessImpl::CleanUp() { NS_ShutdownXPCOM(nullptr); }
82 } // namespace gfx
83 } // namespace mozilla