Skip to content

Commit b179bed

Browse files
sganovAndroid (Google) Code Review
authored andcommitted
Merge "Fix carsh in print spooler if custom print setings return bad pages." into lmp-dev
2 parents ed2fdc6 + 528424c commit b179bed

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,10 +724,35 @@ private void onAdvancedPrintOptionsActivityResult(int resultCode, Intent data) {
724724
}
725725
}
726726

727+
// Handle selected page changes making sure they are in the doc.
727728
PrintDocumentInfo info = mPrintedDocument.getDocumentInfo().info;
728729
final int pageCount = (info != null) ? getAdjustedPageCount(info) : 0;
729730
PageRange[] pageRanges = printJobInfo.getPages();
730-
updateSelectedPages(pageRanges, pageCount);
731+
if (pageRanges != null && pageCount > 0) {
732+
pageRanges = PageRangeUtils.normalize(pageRanges);
733+
734+
List<PageRange> validatedList = new ArrayList<>();
735+
final int rangeCount = pageRanges.length;
736+
for (int i = 0; i < rangeCount; i++) {
737+
PageRange pageRange = pageRanges[i];
738+
if (pageRange.getEnd() >= pageCount) {
739+
final int rangeStart = pageRange.getStart();
740+
final int rangeEnd = pageCount - 1;
741+
if (rangeStart <= rangeEnd) {
742+
pageRange = new PageRange(rangeStart, rangeEnd);
743+
validatedList.add(pageRange);
744+
}
745+
break;
746+
}
747+
validatedList.add(pageRange);
748+
}
749+
750+
if (!validatedList.isEmpty()) {
751+
PageRange[] validatedArray = new PageRange[validatedList.size()];
752+
validatedList.toArray(validatedArray);
753+
updateSelectedPages(validatedArray, pageCount);
754+
}
755+
}
731756

732757
// Update the content if needed.
733758
if (canUpdateDocument()) {

0 commit comments

Comments
 (0)