RFR: 8335231: [macos] Test java/awt/print/PrinterJob/Cancel/PrinterJobCancel.java failed on macOS because the case didn't get the expected PrintAbortException
Phil Race
prr at openjdk.org
Sun Jul 28 22:28:34 UTC 2024
On Thu, 4 Jul 2024 10:34:24 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:
> When a printjob is cancelled midway, `PrinterAbortException `was not thrown in macos. because
> firstly,` cancelCheck` invokes` LWCToolkit.invokeLater` with null as parameter causing it to fail with NPE and
> secondly PrinterAbortException was consumed silently when `printLoop` throws any exception
> which is rectified to throw the PrinterAbortException when encountered..
src/java.desktop/macosx/classes/sun/lwawt/macosx/CPrinterJob.java line 375:
> 373: printLoop(true, firstPage, lastPage);
> 374: } catch (PrinterAbortException pex) {
> 375: throw new PrinterAbortException(pex.getMessage());
Why not re-throw the original exception ?
src/java.desktop/macosx/classes/sun/lwawt/macosx/CPrinterJob.java line 756:
> 754: boolean cancelled = (performingPrinting && userCancelled);
> 755: if (cancelled) {
> 756: cancelDoc();
The comments about deadlock refer to isCancelled() but is that not also why there was an invokeLater() ?
It is not at all clear to me. Perhaps you can explain how the deadlock would occur and why it is not a problem for calling cancelDoc() ?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20027#discussion_r1694347933
PR Review Comment: https://git.openjdk.org/jdk/pull/20027#discussion_r1694348907
More information about the client-libs-dev
mailing list