Merge "Sometimes historical printers not properly ordered." into lmp-mr1-dev
This commit is contained in:
@@ -48,6 +48,7 @@ import java.io.FileOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -91,14 +92,14 @@ public final class FusedPrintersProvider extends Loader<List<PrinterInfo>> {
|
|||||||
mPersistenceManager.addPrinterAndWritePrinterHistory(printer);
|
mPersistenceManager.addPrinterAndWritePrinterHistory(printer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void computeAndDeliverResult(ArrayMap<PrinterId, PrinterInfo> discoveredPrinters,
|
private void computeAndDeliverResult(Map<PrinterId, PrinterInfo> discoveredPrinters,
|
||||||
ArrayMap<PrinterId, PrinterInfo> favoritePrinters) {
|
List<PrinterInfo> favoritePrinters) {
|
||||||
List<PrinterInfo> printers = new ArrayList<>();
|
List<PrinterInfo> printers = new ArrayList<>();
|
||||||
|
|
||||||
// Add the updated favorite printers.
|
// Add the updated favorite printers.
|
||||||
final int favoritePrinterCount = favoritePrinters.size();
|
final int favoritePrinterCount = favoritePrinters.size();
|
||||||
for (int i = 0; i < favoritePrinterCount; i++) {
|
for (int i = 0; i < favoritePrinterCount; i++) {
|
||||||
PrinterInfo favoritePrinter = favoritePrinters.valueAt(i);
|
PrinterInfo favoritePrinter = favoritePrinters.get(i);
|
||||||
PrinterInfo updatedPrinter = discoveredPrinters.remove(
|
PrinterInfo updatedPrinter = discoveredPrinters.remove(
|
||||||
favoritePrinter.getId());
|
favoritePrinter.getId());
|
||||||
if (updatedPrinter != null) {
|
if (updatedPrinter != null) {
|
||||||
@@ -215,21 +216,14 @@ public final class FusedPrintersProvider extends Loader<List<PrinterInfo>> {
|
|||||||
// printer to use its current name instead of the historical one.
|
// printer to use its current name instead of the historical one.
|
||||||
mPersistenceManager.updatePrintersHistoricalNamesIfNeeded(printers);
|
mPersistenceManager.updatePrintersHistoricalNamesIfNeeded(printers);
|
||||||
|
|
||||||
ArrayMap<PrinterId, PrinterInfo> printersMap = new ArrayMap<>();
|
Map<PrinterId, PrinterInfo> printersMap = new LinkedHashMap<>();
|
||||||
final int printerCount = printers.size();
|
final int printerCount = printers.size();
|
||||||
for (int i = 0; i < printerCount; i++) {
|
for (int i = 0; i < printerCount; i++) {
|
||||||
PrinterInfo printer = printers.get(i);
|
PrinterInfo printer = printers.get(i);
|
||||||
printersMap.put(printer.getId(), printer);
|
printersMap.put(printer.getId(), printer);
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayMap<PrinterId, PrinterInfo> favoritePrintersMap = new ArrayMap<>();
|
computeAndDeliverResult(printersMap, favoritePrinters);
|
||||||
final int favoritePrinterCount = favoritePrinters.size();
|
|
||||||
for (int i = 0; i < favoritePrinterCount; i++) {
|
|
||||||
PrinterInfo favoritePrinter = favoritePrinters.get(i);
|
|
||||||
favoritePrintersMap.put(favoritePrinter.getId(), favoritePrinter);
|
|
||||||
}
|
|
||||||
|
|
||||||
computeAndDeliverResult(printersMap, favoritePrintersMap);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -544,7 +538,7 @@ public final class FusedPrintersProvider extends Loader<List<PrinterInfo>> {
|
|||||||
mReadHistoryCompleted = true;
|
mReadHistoryCompleted = true;
|
||||||
|
|
||||||
// Deliver the printers.
|
// Deliver the printers.
|
||||||
updatePrinters(mDiscoverySession.getPrinters(), mHistoricalPrinters);
|
updatePrinters(mDiscoverySession.getPrinters(), mFavoritePrinters);
|
||||||
|
|
||||||
// Loading the available printers if needed.
|
// Loading the available printers if needed.
|
||||||
loadInternal();
|
loadInternal();
|
||||||
|
|||||||
Reference in New Issue
Block a user