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

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

Issue 2858353004: Track printer installations for each configuration. (Closed)
Patch Set: address comments Created 3 years, 7 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>
(...skipping 14 matching lines...) Expand all
25 25
26 // printer fields 26 // printer fields
27 const char kDisplayName[] = "display_name"; 27 const char kDisplayName[] = "display_name";
28 const char kDescription[] = "description"; 28 const char kDescription[] = "description";
29 const char kManufacturer[] = "manufacturer"; 29 const char kManufacturer[] = "manufacturer";
30 const char kModel[] = "model"; 30 const char kModel[] = "model";
31 const char kUri[] = "uri"; 31 const char kUri[] = "uri";
32 const char kUUID[] = "uuid"; 32 const char kUUID[] = "uuid";
33 const char kPpdResource[] = "ppd_resource"; 33 const char kPpdResource[] = "ppd_resource";
34 34
35 // Converts |value| into a Printer object for the fields that are shared 35 // Populates the |printer| object with cooresponding fields from |value|.
Lei Zhang 2017/05/09 01:14:39 corresponding
skau 2017/05/09 19:39:27 Done.
36 // between pref printers and policy printers. 36 // Returns false if |value| is missing a required field.
37 std::unique_ptr<Printer> DictionaryToPrinter(const DictionaryValue& value) { 37 bool DictionaryToPrinter(const DictionaryValue& value, Printer* printer) {
38 std::string id;
39 if (!value.GetString(printing::kPrinterId, &id)) {
40 LOG(WARNING) << "Record id required";
41 return nullptr;
42 }
43
44 std::unique_ptr<Printer> printer = base::MakeUnique<Printer>(id);
45
46 // Mandatory fields 38 // Mandatory fields
47 std::string display_name; 39 std::string display_name;
48 if (value.GetString(kDisplayName, &display_name)) { 40 if (value.GetString(kDisplayName, &display_name)) {
49 printer->set_display_name(display_name); 41 printer->set_display_name(display_name);
50 } else { 42 } else {
51 LOG(WARNING) << "Display name required"; 43 LOG(WARNING) << "Display name required";
52 return nullptr; 44 return false;
53 } 45 }
54 46
55 std::string uri; 47 std::string uri;
56 if (value.GetString(kUri, &uri)) { 48 if (value.GetString(kUri, &uri)) {
57 printer->set_uri(uri); 49 printer->set_uri(uri);
58 } else { 50 } else {
59 LOG(WARNING) << "Uri required"; 51 LOG(WARNING) << "Uri required";
60 return nullptr; 52 return false;
61 } 53 }
62 54
63 // Optional fields 55 // Optional fields
64 std::string description; 56 std::string description;
65 if (value.GetString(kDescription, &description)) 57 if (value.GetString(kDescription, &description))
66 printer->set_description(description); 58 printer->set_description(description);
67 59
68 std::string manufacturer; 60 std::string manufacturer;
69 if (value.GetString(kManufacturer, &manufacturer)) 61 if (value.GetString(kManufacturer, &manufacturer))
70 printer->set_manufacturer(manufacturer); 62 printer->set_manufacturer(manufacturer);
71 63
72 std::string model; 64 std::string model;
73 if (value.GetString(kModel, &model)) 65 if (value.GetString(kModel, &model))
74 printer->set_model(model); 66 printer->set_model(model);
75 67
76 std::string uuid; 68 std::string uuid;
77 if (value.GetString(kUUID, &uuid)) 69 if (value.GetString(kUUID, &uuid))
78 printer->set_uuid(uuid); 70 printer->set_uuid(uuid);
79 71
80 return printer; 72 return true;
81 } 73 }
82 74
83 } // namespace 75 } // namespace
84 76
85 namespace printing { 77 namespace printing {
86 78
87 const char kPrinterId[] = "id"; 79 const char kPrinterId[] = "id";
88 80
89 std::unique_ptr<Printer> RecommendedPrinterToPrinter( 81 std::unique_ptr<Printer> RecommendedPrinterToPrinter(
90 const base::DictionaryValue& pref) { 82 const base::DictionaryValue& pref,
91 std::unique_ptr<Printer> printer = DictionaryToPrinter(pref); 83 const base::Time& timestamp) {
92 if (!printer) { 84 DCHECK(!timestamp.is_null());
85
86 std::string id;
87 if (!pref.GetString(printing::kPrinterId, &id)) {
88 LOG(WARNING) << "Record id required";
89 return nullptr;
90 }
91
92 std::unique_ptr<Printer> printer = base::MakeUnique<Printer>(id, timestamp);
93 if (!DictionaryToPrinter(pref, printer.get())) {
93 LOG(WARNING) << "Failed to parse policy printer."; 94 LOG(WARNING) << "Failed to parse policy printer.";
94 return nullptr; 95 return nullptr;
95 } 96 }
96 97
97 printer->set_source(Printer::SRC_POLICY); 98 printer->set_source(Printer::SRC_POLICY);
98 99
99 const DictionaryValue* ppd; 100 const DictionaryValue* ppd;
100 std::string make_and_model; 101 std::string make_and_model;
101 if (pref.GetDictionary(kPpdResource, &ppd) && 102 if (pref.GetDictionary(kPpdResource, &ppd) &&
102 ppd->GetString(kEffectiveModel, &make_and_model)) { 103 ppd->GetString(kEffectiveModel, &make_and_model)) {
103 printer->mutable_ppd_reference()->effective_make_and_model = make_and_model; 104 printer->mutable_ppd_reference()->effective_make_and_model = make_and_model;
104 } else { 105 } else {
105 // Make and model is mandatory 106 // Make and model is mandatory
106 LOG(WARNING) << "Missing model information for policy printer."; 107 LOG(WARNING) << "Missing model information for policy printer.";
107 return nullptr; 108 return nullptr;
108 } 109 }
109 110
110 return printer; 111 return printer;
111 } 112 }
112 113
113 } // namespace printing 114 } // namespace printing
114 } // namespace chromeos 115 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698