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

Unified Diff: chrome/browser/chromeos/printing/printers_manager.cc

Issue 2858353004: Track printer installations for each configuration. (Closed)
Patch Set: default argument 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/printing/printers_manager.cc
diff --git a/chrome/browser/chromeos/printing/printers_manager.cc b/chrome/browser/chromeos/printing/printers_manager.cc
index 4bcef70c45e7664922e193bd3c1ed25789cbb832..4e6684fe36b53b349d39a8a83ce06a52ac5946c2 100644
--- a/chrome/browser/chromeos/printing/printers_manager.cc
+++ b/chrome/browser/chromeos/printing/printers_manager.cc
@@ -90,13 +90,9 @@ std::vector<std::unique_ptr<Printer>> PrintersManager::GetRecommendedPrinters()
std::vector<std::unique_ptr<Printer>> printers;
for (const std::string& key : recommended_printer_ids_) {
- const base::DictionaryValue& printer_dictionary =
- *(recommended_printers_.at(key));
- std::unique_ptr<Printer> printer =
- printing::RecommendedPrinterToPrinter(printer_dictionary);
- if (printer) {
- printer->set_source(Printer::SRC_POLICY);
- printers.push_back(std::move(printer));
+ auto printer = recommended_printers_.find(key);
+ if (printer != recommended_printers_.end()) {
+ printers.push_back(base::MakeUnique<Printer>(*printer->second));
}
}
@@ -108,8 +104,10 @@ std::unique_ptr<Printer> PrintersManager::GetPrinter(
// check for a policy printer first
const auto& policy_printers = recommended_printers_;
auto found = policy_printers.find(printer_id);
- if (found != policy_printers.end())
- return printing::RecommendedPrinterToPrinter(*(found->second));
+ if (found != policy_printers.end()) {
+ // Copy a printer.
+ return base::MakeUnique<Printer>(*(found->second));
+ }
base::Optional<sync_pb::PrinterSpecifics> printer =
sync_bridge_->GetPrinter(printer_id);
@@ -176,6 +174,7 @@ void PrintersManager::UpdateRecommendedPrinters() {
const base::ListValue* values =
prefs->GetList(prefs::kRecommendedNativePrinters);
+ int64_t timestamp = base::Time::Now().ToJavaTime();
recommended_printer_ids_.clear();
for (const auto& value : *values) {
@@ -202,8 +201,27 @@ void PrintersManager::UpdateRecommendedPrinters() {
printer_dictionary->SetString(printing::kPrinterId, id);
recommended_printer_ids_.push_back(id);
Carlson 2017/05/05 23:59:16 Does this mean we're happy to push the same printe
skau 2017/05/08 18:38:02 It's cleared on line 179. We save the ids to keep
Carlson 2017/05/08 18:49:25 I'm still a little confused by this, sorry. In th
- recommended_printers_[id] = std::move(printer_dictionary);
+ if (!base::ContainsKey(recommended_printers_, id)) {
+ auto printer =
+ printing::RecommendedPrinterToPrinter(*printer_dictionary, timestamp);
+ printer->set_source(Printer::SRC_POLICY);
+
+ recommended_printers_[id] = std::move(printer);
+ }
}
}
+void PrintersManager::PrinterInstalled(const Printer& printer) {
+ DCHECK_GT(printer.last_updated(), 0);
+ installed_printer_timestamps_[printer.id()] = printer.last_updated();
+}
+
+bool PrintersManager::IsConfigurationCurrent(const Printer& printer) {
+ auto found = installed_printer_timestamps_.find(printer.id());
+ if (found == installed_printer_timestamps_.end())
+ return false;
+
+ return found->second == printer.last_updated();
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698