summaryrefslogtreecommitdiffstats
path: root/packages/PrintSpooler
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2014-09-30 14:57:14 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-09-30 14:57:14 +0000
commit7e7e23f50cb3d6ba1026a41b81841257901a0e92 (patch)
tree64fdb85eef72ba6a5b62c979311b8331c1eeed77 /packages/PrintSpooler
parent31677f947f824e036a99d66833caec4abceebe6e (diff)
parent1662a9b9ad82a2599fc6c54e6a51ae5d290b9172 (diff)
downloadframeworks_base-7e7e23f50cb3d6ba1026a41b81841257901a0e92.zip
frameworks_base-7e7e23f50cb3d6ba1026a41b81841257901a0e92.tar.gz
frameworks_base-7e7e23f50cb3d6ba1026a41b81841257901a0e92.tar.bz2
am 1662a9b9: am 90f2f122: am 1fd73590: am b179bed3: Merge "Fix carsh in print spooler if custom print setings return bad pages." into lmp-dev
* commit '1662a9b9ad82a2599fc6c54e6a51ae5d290b9172': Fix carsh in print spooler if custom print setings return bad pages.
Diffstat (limited to 'packages/PrintSpooler')
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java27
1 files changed, 26 insertions, 1 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index aa42c75..72916ea 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -724,10 +724,35 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
}
}
+ // Handle selected page changes making sure they are in the doc.
PrintDocumentInfo info = mPrintedDocument.getDocumentInfo().info;
final int pageCount = (info != null) ? getAdjustedPageCount(info) : 0;
PageRange[] pageRanges = printJobInfo.getPages();
- updateSelectedPages(pageRanges, pageCount);
+ if (pageRanges != null && pageCount > 0) {
+ pageRanges = PageRangeUtils.normalize(pageRanges);
+
+ List<PageRange> validatedList = new ArrayList<>();
+ final int rangeCount = pageRanges.length;
+ for (int i = 0; i < rangeCount; i++) {
+ PageRange pageRange = pageRanges[i];
+ if (pageRange.getEnd() >= pageCount) {
+ final int rangeStart = pageRange.getStart();
+ final int rangeEnd = pageCount - 1;
+ if (rangeStart <= rangeEnd) {
+ pageRange = new PageRange(rangeStart, rangeEnd);
+ validatedList.add(pageRange);
+ }
+ break;
+ }
+ validatedList.add(pageRange);
+ }
+
+ if (!validatedList.isEmpty()) {
+ PageRange[] validatedArray = new PageRange[validatedList.size()];
+ validatedList.toArray(validatedArray);
+ updateSelectedPages(validatedArray, pageCount);
+ }
+ }
// Update the content if needed.
if (canUpdateDocument()) {