summaryrefslogtreecommitdiffstats
path: root/layout/printing/ipc/PRemotePrintJob.ipdl
blob: bb1633e192f67de0e9a5830da35b32f58ad97971 (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
58
59
60
/* -*- 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 PPrinting;

namespace mozilla {
namespace layout {

async refcounted protocol PRemotePrintJob
{
  manager PPrinting;

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, nsString aPrintToFile,
                        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(uint64_t[] deps);

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

  // Report a state change to listeners in the parent process.
  async StateChange(long aStateFlags,
                    nsresult aStatus);

  // 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