Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: chromeos/printing/printer_translator.cc

Issue 2343983004: Add PPDProvider barebones implementation and associated cache skeleton. (Closed)
Patch Set: Initial PPDProvider/PPDCache implementation. Also, add associated unittests. This doesn't plumb th… Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/printing/printer_translator.h" 5 #include "chromeos/printing/printer_translator.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chromeos/printing/printer_configuration.h" 14 #include "chromeos/printing/printer_configuration.h"
15 15
16 using base::DictionaryValue; 16 using base::DictionaryValue;
17 17
18 namespace chromeos { 18 namespace chromeos {
19 19
20 namespace { 20 namespace {
21 21
22 // ppd fields 22 // PPD reference fields
23 const char kPPDid[] = "id"; 23 const char kUserSuppliedPpdUrl[] = "user_supplied_ppd_url";
24 const char kFileName[] = "file_name"; 24 const char kEffectiveManufacturer[] = "effective_manufacturer";
25 const char kVersionNumber[] = "version_number"; 25 const char kEffectiveModel[] = "effective_model";
26 const char kFromQuirks[] = "from_quirks_server";
27 26
28 // printer fields 27 // printer fields
29 const char kDisplayName[] = "display_name"; 28 const char kDisplayName[] = "display_name";
30 const char kDescription[] = "description"; 29 const char kDescription[] = "description";
31 const char kManufacturer[] = "manufacturer"; 30 const char kManufacturer[] = "manufacturer";
32 const char kModel[] = "model"; 31 const char kModel[] = "model";
33 const char kUri[] = "uri"; 32 const char kUri[] = "uri";
34 const char kPPD[] = "ppd"; 33 const char kPpdReference[] = "ppd_reference";
35 const char kUUID[] = "uuid"; 34 const char kUUID[] = "uuid";
36 35
37 std::unique_ptr<Printer::PPDFile> DictionaryToPPDFile( 36 Printer::PpdReference DictionaryToPpdReference(
38 const base::DictionaryValue* value) { 37 const base::DictionaryValue* value) {
39 std::unique_ptr<Printer::PPDFile> ppd = base::MakeUnique<Printer::PPDFile>(); 38 Printer::PpdReference ppd;
40 // struct PPDFile defines default values for these fields so there is no need 39 value->GetString(kUserSuppliedPpdUrl, &ppd.user_supplied_ppd_url);
41 // to check return values. 40 value->GetString(kEffectiveManufacturer, &ppd.effective_manufacturer);
42 value->GetInteger(kPPDid, &ppd->id); 41 value->GetString(kEffectiveModel, &ppd.effective_model);
43 value->GetString(kFileName, &ppd->file_name);
44 value->GetInteger(kVersionNumber, &ppd->version_number);
45 value->GetBoolean(kFromQuirks, &ppd->from_quirks_server);
46 return ppd; 42 return ppd;
47 } 43 }
48 44
49 std::unique_ptr<base::DictionaryValue> PPDFileToDictionary( 45 // Convert a PpdReference struct to a DictionaryValue.
50 const Printer::PPDFile& ppd) { 46 std::unique_ptr<base::DictionaryValue> PpdReferenceToDictionary(
51 std::unique_ptr<base::DictionaryValue> dictionary = 47 const Printer::PpdReference& ppd) {
52 base::MakeUnique<base::DictionaryValue>(); 48 auto dictionary = base::MakeUnique<DictionaryValue>();
53 dictionary->SetInteger(kPPDid, ppd.id); 49 if (!ppd.user_supplied_ppd_url.empty()) {
54 dictionary->SetString(kFileName, ppd.file_name); 50 dictionary->SetString(kUserSuppliedPpdUrl, ppd.user_supplied_ppd_url);
55 dictionary->SetInteger(kVersionNumber, ppd.version_number); 51 }
56 dictionary->SetBoolean(kFromQuirks, ppd.from_quirks_server); 52 if (!ppd.effective_manufacturer.empty()) {
53 dictionary->SetString(kEffectiveManufacturer, ppd.effective_manufacturer);
54 }
55 if (!ppd.effective_model.empty()) {
56 dictionary->SetString(kEffectiveModel, ppd.effective_model);
57 }
57 return dictionary; 58 return dictionary;
58 } 59 }
59 60
60 } // namespace 61 } // namespace
61 62
62 namespace printing { 63 namespace printing {
63 64
64 const char kPrinterId[] = "id"; 65 const char kPrinterId[] = "id";
65 66
66 std::unique_ptr<Printer> PrefToPrinter(const DictionaryValue& value) { 67 std::unique_ptr<Printer> PrefToPrinter(const DictionaryValue& value) {
(...skipping 23 matching lines...) Expand all
90 91
91 std::string uri; 92 std::string uri;
92 if (value.GetString(kUri, &uri)) 93 if (value.GetString(kUri, &uri))
93 printer->set_uri(uri); 94 printer->set_uri(uri);
94 95
95 std::string uuid; 96 std::string uuid;
96 if (value.GetString(kUUID, &uuid)) 97 if (value.GetString(kUUID, &uuid))
97 printer->set_uuid(uuid); 98 printer->set_uuid(uuid);
98 99
99 const DictionaryValue* ppd; 100 const DictionaryValue* ppd;
100 if (value.GetDictionary(kPPD, &ppd)) { 101 if (value.GetDictionary(kPpdReference, &ppd)) {
101 printer->SetPPD(DictionaryToPPDFile(ppd)); 102 *printer->mutable_ppd_reference() = DictionaryToPpdReference(ppd);
102 } 103 }
103 104
104 return printer; 105 return printer;
105 } 106 }
106 107
107 std::unique_ptr<base::DictionaryValue> PrinterToPref(const Printer& printer) { 108 std::unique_ptr<base::DictionaryValue> PrinterToPref(const Printer& printer) {
108 std::unique_ptr<DictionaryValue> dictionary = 109 std::unique_ptr<DictionaryValue> dictionary =
109 base::MakeUnique<base::DictionaryValue>(); 110 base::MakeUnique<base::DictionaryValue>();
110 dictionary->SetString(kPrinterId, printer.id()); 111 dictionary->SetString(kPrinterId, printer.id());
111 dictionary->SetString(kDisplayName, printer.display_name()); 112 dictionary->SetString(kDisplayName, printer.display_name());
112 dictionary->SetString(kDescription, printer.description()); 113 dictionary->SetString(kDescription, printer.description());
113 dictionary->SetString(kManufacturer, printer.manufacturer()); 114 dictionary->SetString(kManufacturer, printer.manufacturer());
114 dictionary->SetString(kModel, printer.model()); 115 dictionary->SetString(kModel, printer.model());
115 dictionary->SetString(kUri, printer.uri()); 116 dictionary->SetString(kUri, printer.uri());
116 dictionary->SetString(kUUID, printer.uuid()); 117 dictionary->SetString(kUUID, printer.uuid());
117 118
118 dictionary->Set(kPPD, PPDFileToDictionary(printer.ppd())); 119 dictionary->Set(kPpdReference,
120 PpdReferenceToDictionary(printer.ppd_reference()));
119 121
120 return dictionary; 122 return dictionary;
121 } 123 }
122 124
123 } // namespace printing 125 } // namespace printing
124 126
125 } // namespace chromeos 127 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698