[OpenJDK 2D-Dev] [9] RFR JDK-8165947: One more page printed before the test page with OpenJDK.
Philip Race
philip.race at oracle.com
Thu Sep 22 17:39:08 UTC 2016
OK I see now.
The comment should be updated to remove mention of the dialog
and explain that instead.
But in that case do you still need the "else" in setAttributes?
-phil.
On 9/22/16, 10:32 AM, Prasanta Sadhukhan wrote:
>
>
> 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/cca7fe4c/attachment.html>
More information about the 2d-dev
mailing list