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

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

Issue 2945303005: Refactor PrinterDiscoverer and PrinterDetector to use a common interface. (Closed)
Patch Set: Created 3 years, 6 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/usb_printer_detector.cc
diff --git a/chrome/browser/chromeos/printing/usb_printer_detector.cc b/chrome/browser/chromeos/printing/usb_printer_detector.cc
index 5ce8fb61feb8ad64b396f37dc3d4b8a2251c3c68..3be8d3013999d71ace21998c2de21d068c48ada8 100644
--- a/chrome/browser/chromeos/printing/usb_printer_detector.cc
+++ b/chrome/browser/chromeos/printing/usb_printer_detector.cc
@@ -107,6 +107,15 @@ class UsbPrinterDetectorImpl : public UsbPrinterDetector,
return GetPrintersLocked();
}
+ void Start() override {
+ started_ = true;
+ observer_list_->Notify(FROM_HERE,
+ &PrinterDetector::Observer::OnPrintersFound,
+ GetPrintersLocked());
+ observer_list_->Notify(FROM_HERE,
+ &PrinterDetector::Observer::OnPrinterScanComplete);
+ }
+
private:
std::vector<Printer> GetPrintersLocked() {
pp_lock_.AssertAcquired();
@@ -143,13 +152,14 @@ class UsbPrinterDetectorImpl : public UsbPrinterDetector,
base::AutoLock auto_lock(pp_lock_);
if (base::ContainsKey(present_printers_, device->guid())) {
present_printers_.erase(device->guid());
- auto printers = GetPrintersLocked();
- // We already have pp_lock_, so need to call the pre-locked version of
- // GetPrinters to prevent deadlock.
- observer_list_->Notify(
- FROM_HERE,
- &UsbPrinterDetector::Observer::OnAvailableUsbPrintersChanged,
- GetPrintersLocked());
+ if (started_) {
+ auto printers = GetPrintersLocked();
+ // We already have pp_lock_, so need to call the pre-locked version of
+ // GetPrinters to prevent deadlock.
+ observer_list_->Notify(FROM_HERE,
+ &PrinterDetector::Observer::OnPrintersFound,
+ GetPrintersLocked());
+ }
} else {
// If the device has been removed but it's not in present_printers_, it
// must still be in the setup flow.
@@ -274,12 +284,15 @@ class UsbPrinterDetectorImpl : public UsbPrinterDetector,
} else {
base::AutoLock auto_lock(pp_lock_);
present_printers_.emplace(data->device->guid(), std::move(data->printer));
- observer_list_->Notify(
- FROM_HERE,
- &UsbPrinterDetector::Observer::OnAvailableUsbPrintersChanged,
- GetPrintersLocked());
+ if (started_) {
+ observer_list_->Notify(FROM_HERE,
+ &PrinterDetector::Observer::OnPrintersFound,
+ GetPrintersLocked());
+ }
}
}
+ // Has Start() been called yet?
+ bool started_ = false;
// Map from USB GUID to Printer that we have detected as being currently
// plugged in and have finished processing. Note present_printers_ may be

Powered by Google App Engine
This is Rietveld 408576698