[OpenJDK 2D-Dev] RFR 6870661 : Setting a custom PrintService on a PrinterJob leads to a PrinterException

Patrick Reinhart patrick at reini.net
Wed Jun 19 20:40:00 UTC 2013


Hi Phil,

I implemented your suggested changes in the class WPrinterJob now. I 
also created a simple test for showing a print dialog after register the 
custom PrintService on the PrintServiceLookup class and setting it to 
the PrinterJob using setPrintService().

http://reinharts.dyndns.org/6870661/webrev.01/

According to the manual test. I did found different implementations 
where sometimes the instructions where just printed to the console and 
others where a applet was used. Could you point me out a existing test 
where it is done the way you want it to be?

Cheers

Patrick



On 06/18/2013 11:35 PM, Phil Race wrote:
> Yes, the driverDoes* fields should be reset, even though
> I am not sure we need them any more because I think
> that ever since XP drivers always do their own collation.
> But some of this code was written when win9x/win nt was supported.
>
>
> @run main/manual=yesno
> Can be used to write a manual test for dialogs.
>
> The test then generally has to have a window with instructions in it,
> and the tester has to tell the harness if it passed based on 
> understanding
> and following the instructions.
>
> -phil.
>
>
> On 6/18/2013 2:04 PM, Patrick Reinhart wrote:
>> Hi Phil,
>>
>> I will do the suggested changes and check the dialog and enhance my 
>> test accordingly.
>>
>> Do you think that the fields driverDoesMultipleCopies and 
>> driverDoesCollation should be reset on setPrintService() as follows, 
>> because the actual native settings will be obsolete in that case anyway?
>>
>>
>> @@ -587,11 +586,11 @@
>>      public void setPrintService(PrintService service)
>>          throws PrinterException {
>>          super.setPrintService(service);
>> -        if (service instanceof StreamPrintService) {
>> +        driverDoesMultipleCopies = false;
>> +        driverDoesCollation = false;
>> +        if (!(service instanceof Win32PrintService)) {
>>              return;
>>          }
>> -        driverDoesMultipleCopies = false;
>> -        driverDoesCollation = false;
>>          setNativePrintService(service.getName());
>>      }
>>
>>
>> At last could you give me a hint, how you do a test for dialogs with 
>> Jtreg?
>>
>> Cheers
>>
>> Patrick
>>
>> Am 17.06.13 23:51, schrieb Phil Race:
>>> The superclass does check that the service will (claims to) support 
>>> printable/pageable.
>>>
>>> I've looked at what we did in the implementation when it comes to 
>>> print which
>>> is that for such a custom service we implicitly head it off to the 
>>> javax.print API
>>> so it probably could work.
>>>
>>> But the dialog code probably does need to be tweaked to always invoke
>>> the cross-platform dialog in this case. Right now its bailing from 
>>> native
>>> only if it sees a StreamPrintService.
>>>
>>> So line 560 and maybe line 590 should be
>>> if (!(service instanceof Win32PrintService)) ...
>>>
>>> pageDialog() needs similar treatment.
>>>
>>> Try those and see if you get sensible behaviour when showing the 
>>> dialog.
>>>
>>> -phil.




More information about the 2d-dev mailing list