gecko-dev/layout/printing/DrawEventRecorder.cpp
Alex Gaynor 8cb6e552a8 Bug 1414834 - re-land print IPC changes from bug 1319423; r=bobowen
With this patch print IPC no longer requires the child process to create files.
Instead files are opened by the parent and a file descriptor is sent to the
child. This will allow us to sandbox child processes more aggressively.

MozReview-Commit-ID: GQWTYLV01kj

--HG--
extra : rebase_source : 9b91e9b01708d73915a49684c2cec96457650e45
2017-11-03 14:37:15 -04:00

60 lines
1.1 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/. */
#include "DrawEventRecorder.h"
namespace mozilla {
namespace layout {
void
DrawEventRecorderPRFileDesc::RecordEvent(const gfx::RecordedEvent& aEvent)
{
WriteElement(mOutputStream, aEvent.GetType());
aEvent.RecordToStream(mOutputStream);
Flush();
}
DrawEventRecorderPRFileDesc::~DrawEventRecorderPRFileDesc()
{
if (IsOpen()) {
Close();
}
}
void
DrawEventRecorderPRFileDesc::Flush()
{
mOutputStream.Flush();
}
bool
DrawEventRecorderPRFileDesc::IsOpen()
{
return mOutputStream.IsOpen();
}
void
DrawEventRecorderPRFileDesc::OpenFD(PRFileDesc* aFd)
{
MOZ_ASSERT(!IsOpen());
mOutputStream.OpenFD(aFd);
WriteHeader(mOutputStream);
}
void
DrawEventRecorderPRFileDesc::Close()
{
MOZ_ASSERT(IsOpen());
mOutputStream.Close();
}
}
}