changeset 25779:86b8de4f7d09

8048583: CustomMediaSizeName class matching to standard media is too loose Reviewed-by: bae, jgodinez
author prr
date Mon, 14 Jul 2014 11:11:13 -0700
parents 998b49cac7e9
children 9ece64e7ca1a
files jdk/src/share/classes/sun/print/CustomMediaSizeName.java
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/jdk/src/share/classes/sun/print/CustomMediaSizeName.java	Mon Jul 14 10:29:23 2014 -0700
+++ b/jdk/src/share/classes/sun/print/CustomMediaSizeName.java	Mon Jul 14 11:11:13 2014 -0700
@@ -67,6 +67,22 @@
                                             MediaSize.INCH);
         } catch (IllegalArgumentException iae) {
         }
+        // The public API method finds a closest match even if it not
+        // all that close. Here we want to be sure its *really* close.
+        if (mediaName != null) {
+            MediaSize sz = MediaSize.getMediaSizeForName(mediaName);
+            if (sz == null) {
+                mediaName = null;
+            } else {
+                float w = sz.getX(MediaSize.INCH);
+                float h = sz.getY(MediaSize.INCH);
+                float dw = Math.abs(w - width);
+                float dh = Math.abs(h - length);
+                if (dw > 0.1 || dh > 0.1) {
+                    mediaName = null;
+                }
+            }
+        }
     }
 
     /**