[OpenJDK 2D-Dev] [9] RFR JDK-8165947: One more page printed before the test page with OpenJDK.
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Thu Sep 22 17:32:09 UTC 2016
On 9/22/2016 10:59 PM, Philip Race wrote:
> Your comment refers only (and explicitly) to the print dialog :-
> 1484 * printing Banner page through print dialog via setAttributes().
> So if we get into that code afterwards why do we need this new code ?
>
The new code is needed because if we have null attributes, then
setAttributes() will return
1177 if (attributes == null || service == null) {
1178 return;
1179 }
even before it reaches
1271 JobSheets jobSheets =
(JobSheets)attributes.get(JobSheets.class);
1272 if (jobSheets != null) {
1273 noJobSheet = jobSheets == JobSheets.NONE;
1274 } else {
1275 JobSheets js = (JobSheets)getPrintService().
1276 getDefaultAttributeValue(JobSheets.class);
1277 if (js != null && js.equals(JobSheets.NONE)) {
1278 noJobSheet = true;
1279 }
1280 }
Regards
Prasanta
> I do see that call to setAttributes() but I am assuming it does not
> get in there, else why does it not work already for this case?
> It looks identical to your new code.
>
> Put another way I don't see how the bug even manifests if it works as
> you describe.
>
> -phil.
>
> On 9/22/16, 10:10 AM, Prasanta Sadhukhan wrote:
>> That's why I call the new code before setAttributes() so that user's
>> selection is not overridden. I put a comment regarding that in the fix.
>>
>> Regards
>> Prasanta
>> On 9/22/2016 10:38 PM, Philip Race wrote:
>>> What happens if the application does not display a dialog but
>>> instead the application code explicitly does this:
>>>
>>> aset.add(JobSheets.STANDARD);
>>> print(aset)
>>>
>>> ?
>>>
>>> It appears to me you will over-ride that.
>>>
>>> -phil.
>>>
>>> On 9/22/16, 9:54 AM, Prasanta Sadhukhan wrote:
>>>> Hi Phil,
>>>>
>>>> My new code takes care of the problem when attribute is not set by
>>>> the user who directly calls PrinterJob.print(). If no print dialog
>>>> is shown, then print(attr) seems to be called with Null attribute
>>>> and since noJobSheet was false, it used to print the banner page.
>>>> I now checked only the
>>>> PrintService.getDefaultAttributeValue(JobSheets.class) and if IPP
>>>> returns "none", I change the default noJobSheet to true so that no
>>>> banner page is printed (to honor system default).
>>>>
>>>> Regards
>>>> Prasanta
>>>> On 9/22/2016 10:16 PM, Philip Race wrote:
>>>>> This looks wrong to me. Shouldn't the logic look like the one you
>>>>> have earlier in
>>>>> the file ? ie this :
>>>>>
>>>>> 1271 JobSheets jobSheets =
>>>>> (JobSheets)attributes.get(JobSheets.class);
>>>>> 1272 if (jobSheets != null) {
>>>>> 1273 noJobSheet = jobSheets == JobSheets.NONE;
>>>>> 1274 } else {
>>>>> 1275 JobSheets js = (JobSheets)getPrintService().
>>>>> 1276 getDefaultAttributeValue(JobSheets.class);
>>>>> 1277 if (js != null && js.equals(JobSheets.NONE)) {
>>>>> 1278 noJobSheet = true;
>>>>> 1279 }
>>>>> 1280 }
>>>>>
>>>>> As it is your new code seems to completely disregard any setting by
>>>>> the application in the attribute set - which *does not* have
>>>>> anything to do with
>>>>> whether a dialog was set.
>>>>>
>>>>> Also I reject that this can be a TCK failure.
>>>>> "I got a banner page" is something that can be a system configuration
>>>>> parameter and is wholly outside anything JCK can (or should) care
>>>>> about.
>>>>> You could fix this but it could then behave the same on a
>>>>> different system.
>>>>> In fact my reading of the bug is simply that they noticed this
>>>>> when running
>>>>> a TCK test. That does not make it a TCK failure.
>>>>> I have removed the tck labels from the bug and JCK can argue with
>>>>> me if they want to ..
>>>>>
>>>>> -phil.
>>>>>
>>>>> On 9/16/16, 3:21 AM, Prasanta Sadhukhan wrote:
>>>>>> Hi All,
>>>>>>
>>>>>> Please review a fix for a tck failure in jdk9 whereby "banner
>>>>>> page" (cover page) is printed by default when print() is called
>>>>>> directly without any print dialog being shown.
>>>>>>
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8165947
>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8165947/webrev.00/
>>>>>>
>>>>>> Issue was in RasterPrinterJob, "noJobSheet" variable was set to
>>>>>> false which when passed to PSPrinterJob#printExecCmd(), it
>>>>>> results in adding "-o job-sheets=standard" to lpr command and
>>>>>> therefore, Banner page was getting printed by default.
>>>>>> Proposed fix is to check for defaultAttributeValue for JobSheets
>>>>>> attribute so that we can find what is the default value reported
>>>>>> by underlying platform and set "noJobSheet" value to default
>>>>>> jobsheet native value
>>>>>> (like CUPS report job-sheet=none so that no banner page is to be
>>>>>> printed by default even though it supports jobsheet)
>>>>>>
>>>>>> I tested "6575247:Banner checkbox in PrinterJob print dialog
>>>>>> doesn't work" testcase in windows, solaris, linux and it works as
>>>>>> expected.
>>>>>>
>>>>>> JCK test api/javax_swing/interactive/PrintTest.html#PrintTest via
>>>>>> command
>>>>>> "/jdk-9/bin/java -showversion
>>>>>> -Dswing.defaultlaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel
>>>>>> -cp /root/jck/JCK-runtime-9/classes:
>>>>>> -Djava.security.policy=/root/jck/JCK-runtime-9/lib/jck.policy
>>>>>> javasoft.sqe.tests.api.java.awt.interactive.PrintTest
>>>>>> -platform.hasPrinter true -TestCaseID ALL"
>>>>>> also works ie no banner page is printed by default.
>>>>>>
>>>>>> Regards
>>>>>> Prasanta
>>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160922/cf39d7da/attachment.html>
More information about the 2d-dev
mailing list