summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/common/extensions/api/printing_metrics.idl
blob: eb0b1ec022e9e0c2ebd2e57c2ef1794a270a7cd9 (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Use the <code>chrome.printingMetrics</code> API to fetch data about
// printing usage.
[platforms=("chromeos"),
 implemented_in="chrome/browser/chromeos/extensions/printing_metrics/printing_metrics_api.h"]
namespace printingMetrics {
  // The source of the print job.
  enum PrintJobSource {
    // The job was created from the Print Preview page initiated by the user.
    PRINT_PREVIEW,

    // The job was created from an Android App.
    ANDROID_APP
  };

  // The final status of the print job.
  enum PrintJobStatus {
    // Print job was interrupted due to some error.
   FAILED,

   // Print job was canceled by the user or via API.
   CANCELED,

   // Print job was printed without any errors.
   PRINTED
  };

  // The source of the printer.
  enum PrinterSource {
    // Printer was added by user.
    USER,

    // Printer was added via policy.
    POLICY
  };

  enum ColorMode {
    // Black and white mode was used.
    BLACK_AND_WHITE,

    // Color mode was used.
    COLOR
  };

  enum DuplexMode {
    // One-sided printing was used.
    ONE_SIDED,

    // Two-sided printing was used, flipping on long edge.
    TWO_SIDED_LONG_EDGE,

    // Two-sided printing was used, flipping on short edge.
    TWO_SIDED_SHORT_EDGE
  };

  // The size of requested media.
  dictionary MediaSize {
    // Width (in micrometers) of the media used for printing.
    long width;

    // Height (in micrometers) of the media used for printing.
    long height;

    // Vendor-provided ID, e.g. "iso_a3_297x420mm" or "na_index-3x5_3x5in".
    // Possible values are values of "media" IPP attribute and can be found on
    // <a href="https://www.iana.org/assignments/ipp-registrations/ipp-registrations.xhtml">
    // IANA page</a> .
    DOMString vendorId;
  };

  // The requested settings of print job.
  dictionary PrintSettings {
    // The requested color mode.
    ColorMode color;

    // The requested duplex mode.
    DuplexMode duplex;

    // The requested media size.
    MediaSize mediaSize;

    // The requested number of copies.
    long copies;
  };

  // The printer info.
  dictionary Printer {
    // Displayed name of the printer.
    DOMString name;

    // The full path for the printer.
    // Contains protocol, hostname, port, and queue.
    DOMString uri;

    // The source of the printer.
    PrinterSource source;
  };

  // Print job information.
  dictionary PrintJobInfo {
    // The ID of the job.
    DOMString id;

    // The title of the document which was printed.
    DOMString title;

    // Source showing who initiated the print job.
    PrintJobSource source;

    // ID of source. Null if source is PRINT_PREVIEW or ANDROID_APP.
    DOMString? sourceId;

    // The final status of the job.
    PrintJobStatus status;

    // The job creation time (in milliseconds past the Unix epoch).
    double creationTime;

    // The job completion time (in milliseconds past the Unix epoch).
    double completionTime;

    // The info about the printer which printed the document.
    Printer printer;

    // The settings of the print job.
    PrintSettings settings;

    // The number of pages in the document.
    long numberOfPages;
  };

  callback GetPrintJobsCallback = void(PrintJobInfo[] jobs);

  interface Functions {
    // Returns the list of the finished print jobs.
    static void getPrintJobs(GetPrintJobsCallback callback);
  };

  interface Events {
    // Event fired when the print job is finished.
    // This includes any of termination statuses: FAILED, CANCELED and PRINTED.
    static void onPrintJobFinished(PrintJobInfo jobInfo);
  };
};