gecko-dev/dom/media/ipc/RDDChild.h
Haik Aftandilian 9eeac5a5a2 Bug 1525086 - Part 3b - Start the RDD sandbox earlier r=Alex_Gaynor
Start the RDD process earlier by changing RDDProcessHost to pass the necessary command line arguments for enabling the sandbox.

Per lsmp output on 10.14.3, starting the RDD process sandbox removes access to WindowServer, coreservicesd, lsd and distnoted.

Add a pref (defaulting to on) to control enabling starting the RDD process earlier.

Differential Revision: https://phabricator.services.mozilla.com/D23460

--HG--
extra : moz-landing-system : lando
2019-03-28 02:25:50 +00:00

69 lines
2.0 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef _include_dom_media_ipc_RDDChild_h_
#define _include_dom_media_ipc_RDDChild_h_
#include "mozilla/PRDDChild.h"
#include "mozilla/RefPtr.h"
#include "mozilla/UniquePtr.h"
namespace mozilla {
#if defined(XP_LINUX) && defined(MOZ_SANDBOX)
class SandboxBroker;
#endif
namespace ipc {
class CrashReporterHost;
} // namespace ipc
namespace dom {
class MemoryReportRequestHost;
} // namespace dom
class RDDProcessHost;
class RDDChild final : public PRDDChild {
typedef mozilla::dom::MemoryReportRequestHost MemoryReportRequestHost;
public:
explicit RDDChild(RDDProcessHost* aHost);
~RDDChild();
bool Init(bool aStartMacSandbox);
bool EnsureRDDReady();
// PRDDChild overrides.
mozilla::ipc::IPCResult RecvInitComplete();
mozilla::ipc::IPCResult RecvInitCrashReporter(
Shmem&& shmem, const NativeThreadId& aThreadId);
void ActorDestroy(ActorDestroyReason aWhy) override;
mozilla::ipc::IPCResult RecvAddMemoryReport(const MemoryReport& aReport);
mozilla::ipc::IPCResult RecvFinishMemoryReport(const uint32_t& aGeneration);
bool SendRequestMemoryReport(const uint32_t& aGeneration,
const bool& aAnonymize,
const bool& aMinimizeMemoryUsage,
const Maybe<ipc::FileDescriptor>& aDMDFile);
static void Destroy(UniquePtr<RDDChild>&& aChild);
private:
RDDProcessHost* mHost;
UniquePtr<ipc::CrashReporterHost> mCrashReporter;
UniquePtr<MemoryReportRequestHost> mMemoryReportRequest;
#if defined(XP_LINUX) && defined(MOZ_SANDBOX)
UniquePtr<SandboxBroker> mSandboxBroker;
#endif
bool mRDDReady;
};
} // namespace mozilla
#endif // _include_dom_media_ipc_RDDChild_h_