File: cups_printer_status_creator.cc

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (107 lines) | stat: -rw-r--r-- 4,153 bytes parent folder | download | duplicates (5)
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
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ash/printing/cups_printer_status_creator.h"

#include "chrome/browser/ash/printing/printer_info.h"
#include "chromeos/printing/cups_printer_status.h"
#include "components/device_event_log/device_event_log.h"

namespace ash {

using ::chromeos::CupsPrinterStatus;
using CupsReason = CupsPrinterStatus::CupsPrinterStatusReason::Reason;
using CupsSeverity = CupsPrinterStatus::CupsPrinterStatusReason::Severity;
using ReasonFromPrinter = printing::PrinterStatus::PrinterReason::Reason;
using SeverityFromPrinter = printing::PrinterStatus::PrinterReason::Severity;

CupsPrinterStatus PrinterStatusToCupsPrinterStatus(
    const std::string& printer_id,
    const printing::PrinterStatus& printer_status,
    const chromeos::PrinterAuthenticationInfo& auth_info) {
  CupsPrinterStatus cups_printer_status(printer_id);

  for (const auto& reason : printer_status.reasons) {
    cups_printer_status.AddStatusReason(
        PrinterReasonToCupsReason(reason.reason),
        PrinterSeverityToCupsSeverity(reason.severity));
  }
  PRINTER_LOG(DEBUG) << printer_id << ": Printer status received: "
                     << printer_status.AllReasonsAsString();
  cups_printer_status.SetAuthenticationInfo(auth_info);
  return cups_printer_status;
}

CupsReason PrinterReasonToCupsReason(const ReasonFromPrinter& reason) {
  switch (reason) {
    case ReasonFromPrinter::kFuserOverTemp:
    case ReasonFromPrinter::kFuserUnderTemp:
    case ReasonFromPrinter::kInterpreterResourceUnavailable:
    case ReasonFromPrinter::kOpcLifeOver:
    case ReasonFromPrinter::kOpcNearEol:
      return CupsReason::kDeviceError;
    case ReasonFromPrinter::kCoverOpen:
    case ReasonFromPrinter::kDoorOpen:
    case ReasonFromPrinter::kInterlockOpen:
      return CupsReason::kDoorOpen;
    case ReasonFromPrinter::kDeveloperLow:
    case ReasonFromPrinter::kMarkerSupplyLow:
    case ReasonFromPrinter::kMarkerWasteAlmostFull:
    case ReasonFromPrinter::kTonerLow:
      return CupsReason::kLowOnInk;
    case ReasonFromPrinter::kMediaLow:
      return CupsReason::kLowOnPaper;
    case ReasonFromPrinter::kNone:
      return CupsReason::kNoError;
    case ReasonFromPrinter::kDeveloperEmpty:
    case ReasonFromPrinter::kMarkerSupplyEmpty:
    case ReasonFromPrinter::kMarkerWasteFull:
    case ReasonFromPrinter::kTonerEmpty:
      return CupsReason::kOutOfInk;
    case ReasonFromPrinter::kMediaEmpty:
    case ReasonFromPrinter::kMediaNeeded:
      return CupsReason::kOutOfPaper;
    case ReasonFromPrinter::kOutputAreaAlmostFull:
      return CupsReason::kOutputAreaAlmostFull;
    case ReasonFromPrinter::kOutputAreaFull:
      return CupsReason::kOutputFull;
    case ReasonFromPrinter::kMediaJam:
      return CupsReason::kPaperJam;
    case ReasonFromPrinter::kMovingToPaused:
    case ReasonFromPrinter::kPaused:
      return CupsReason::kPaused;
    case ReasonFromPrinter::kSpoolAreaFull:
      return CupsReason::kPrinterQueueFull;
    case ReasonFromPrinter::kConnectingToDevice:
    case ReasonFromPrinter::kShutdown:
    case ReasonFromPrinter::kTimedOut:
      return CupsReason::kPrinterUnreachable;
    case ReasonFromPrinter::kStoppedPartly:
    case ReasonFromPrinter::kStopping:
      return CupsReason::kStopped;
    case ReasonFromPrinter::kInputTrayMissing:
    case ReasonFromPrinter::kOutputTrayMissing:
      return CupsReason::kTrayMissing;
    case ReasonFromPrinter::kUnknownReason:
      return CupsReason::kUnknownReason;
    case ReasonFromPrinter::kCupsPkiExpired:
      return CupsReason::kExpiredCertificate;
  }
}

CupsSeverity PrinterSeverityToCupsSeverity(
    const SeverityFromPrinter& severity) {
  switch (severity) {
    case SeverityFromPrinter::kUnknownSeverity:
      return CupsSeverity::kUnknownSeverity;
    case SeverityFromPrinter::kReport:
      return CupsSeverity::kReport;
    case SeverityFromPrinter::kWarning:
      return CupsSeverity::kWarning;
    case SeverityFromPrinter::kError:
      return CupsSeverity::kError;
  }
}

}  // namespace ash