OLD | NEW |
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/fake_printer_discoverer.h" | 5 #include "chromeos/printing/fake_printer_discoverer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 printers_[i].set_manufacturer("Chromium"); | 67 printers_[i].set_manufacturer("Chromium"); |
68 printers_[i].set_model(i % 3 == 0 ? "Inkjet" : "Laser Maker"); | 68 printers_[i].set_model(i % 3 == 0 ? "Inkjet" : "Laser Maker"); |
69 printers_[i].set_uri( | 69 printers_[i].set_uri( |
70 base::StringPrintf("lpr://192.168.1.%d:9100/bldg/printer", i)); | 70 base::StringPrintf("lpr://192.168.1.%d:9100/bldg/printer", i)); |
71 printers_[i].set_uuid( | 71 printers_[i].set_uuid( |
72 base::StringPrintf("UUID-%4d-%4d-%4d-UUID", i * 3, i * 2, i)); | 72 base::StringPrintf("UUID-%4d-%4d-%4d-UUID", i * 3, i * 2, i)); |
73 } | 73 } |
74 } | 74 } |
75 | 75 |
76 void FakePrinterDiscoverer::EmitPrinters(size_t start, size_t end) { | 76 void FakePrinterDiscoverer::EmitPrinters(size_t start, size_t end) { |
77 if (!discovery_running_ || start >= printers_.size() || end > start) | 77 if (!discovery_running_ || start >= printers_.size() || end < start) |
78 return; | 78 return; |
79 | 79 |
80 size_t clipped_start = std::max(static_cast<size_t>(0), start); | 80 size_t clipped_start = std::max(static_cast<size_t>(0), start); |
81 size_t clipped_end = std::min(printers_.size(), end); | 81 size_t clipped_end = std::min(printers_.size(), end); |
82 if (!observers_.empty()) { | 82 if (!observers_.empty()) { |
83 std::vector<Printer> subset(printers_.cbegin() + clipped_start, | 83 std::vector<Printer> subset(printers_.cbegin() + clipped_start, |
84 printers_.cbegin() + clipped_end); | 84 printers_.cbegin() + clipped_end); |
85 | 85 |
86 for (auto observer : observers_) | 86 for (auto observer : observers_) |
87 observer->OnPrintersFound(subset); | 87 observer->OnPrintersFound(subset); |
88 } | 88 } |
89 | 89 |
90 // schedule another emit if elements remain. | 90 // schedule another emit if elements remain. |
91 if (end < printers_.size()) { | 91 if (end < printers_.size()) { |
92 base::SequencedTaskRunnerHandle::Get()->PostNonNestableDelayedTask( | 92 base::SequencedTaskRunnerHandle::Get()->PostNonNestableDelayedTask( |
93 FROM_HERE, | 93 FROM_HERE, |
94 base::Bind(&FakePrinterDiscoverer::EmitPrinters, | 94 base::Bind(&FakePrinterDiscoverer::EmitPrinters, |
95 weak_ptr_factory_.GetWeakPtr(), clipped_end, end + end), | 95 weak_ptr_factory_.GetWeakPtr(), clipped_end, end + end), |
96 base::TimeDelta::FromMilliseconds(2000)); | 96 base::TimeDelta::FromMilliseconds(2000)); |
97 } else { | 97 } else { |
98 // We're done. Notify observers. | 98 // We're done. Notify observers. |
99 discovery_running_ = false; | 99 discovery_running_ = false; |
100 for (auto observer : observers_) | 100 for (auto observer : observers_) |
101 observer->OnDiscoveryDone(); | 101 observer->OnDiscoveryDone(); |
102 } | 102 } |
103 } | 103 } |
104 | 104 |
105 } // namespace chromeos | 105 } // namespace chromeos |
OLD | NEW |