summaryrefslogtreecommitdiffstats
path: root/layout/printing/ipc/PRemotePrintJob.ipdl
blob: 50b978cfc7782704fa88cd779d04471f2b3c3ccc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* -*- 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 protocol PContent;

namespace mozilla {
namespace layout {

[ChildImpl=virtual, ParentImpl=virtual]
async protocol PRemotePrintJob
{
  manager PContent;

both:
  // Tell either side to abort printing and clean up.
  async AbortPrint(nsresult aRv);

parent:
  // Initialize the real print device with the given information.
  async InitializePrint(nsString aDocumentTitle,
                        int32_t aStartPage, int32_t aEndPage);

  // Translate the page recording writen into |fd| and play back the events to
  // the real print device.
  async ProcessPage(int32_t aWidthInPoints, int32_t aHeightInPoints, uint64_t[] aDeps);

  // This informs the real print device that we've finished, so it can trigger
  // the actual print.
  async FinalizePrint();

  // Report a progress change to listeners in the parent process.
  async ProgressChange(long aCurSelfProgress,
                       long aMaxSelfProgress,
                       long aCurTotalProgress,
                       long aMaxTotalProgress);

  // Report a status change to listeners in the parent process.
  async StatusChange(nsresult aStatus);

child:
  // Inform the child that the print has been initialized in the parent or has
  // failed with result aRv. Includes a file descriptor which the first page
  // can be written to.
  async PrintInitializationResult(nsresult aRv, FileDescriptor aFd);

  // Inform the child that the latest page has been processed remotely. Includes
  // a file descriptor which the next page can be written to.
  async PageProcessed(FileDescriptor aFd);

  async __delete__();
};

} // namespace layout
} // namespace mozilla