[OpenJDK 2D-Dev] [9] RFR: JDK-8154057, , [macosx] getPrintJob doesn't throw NPE if Frame is null AND type is COMMON
Philip Race
philip.race at oracle.com
Wed Apr 13 15:59:52 UTC 2016
Ok, so +1 to this fix but file a new bug to track the non-usage of the
owner frame.
-phil.
On 4/13/16, 1:13 AM, prasanta sadhukhan wrote:
> Hi Phil,
>
> Yes, it seems code does not use this frame as parent/owner.
> Actually, xxxToolkit will call initPrintJob2D() after checking for
> frame==null, followed by PrintJob2D.printDialog() which will just
> store the frame in the attribute
> if (frame != null) {
> attributes.add(new DialogOwner(frame));
> }
> and then call ServiceUI.printDialog()
> which just pass null as owner to ServiceDialog() for now.
>
> // For now we set owner to null. In the future, it may be passed
> // as an argument.
> Window owner = null;
>
> dialog = new ServiceDialog(gc,
> x,
> y,
> services, defaultIndex,
> flavor, attributes,
> (Dialog)owner);
> and so this behaviour is common to all platforms.
>
> I guess we should populate WIndow owner with this frame object.
>
> But since this NPE problem is specific to mac,can we fix this bug first
> as the other platforms has same null check code in
> Toolkit.getPrintJob() and create another bug for this frame usage.
> Please let me know your thoughts.
>
> BTW,
> It was not seen (ie NPE is thrown) for native dialog in mac as in
> initPrintJob2D() we have this check
> if (frame == null &&
> (jobAttributes == null ||
> jobAttributes.getDialog() == DialogType.NATIVE)) {
> throw new NullPointerException("Frame must not be null");
> }
>
> Regards
> Prasanta
> On 4/12/2016 10:43 PM, Phil Race wrote:
>> hmm .. if it does not throw NPE when the dialog type is common that
>> could mean
>> that the code is not referencing the frame as a modal parent /owner
>> in that case which could
>> be another bug.
>> Did you check into how this is used relative to other platforms ?
>>
>> -phil.
>>
>>
>> On 04/12/2016 04:16 AM, prasanta sadhukhan wrote:
>>> Hi All,
>>>
>>> Please review a fix for jdk9.
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8154057
>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8154057/webrev.00/
>>>
>>> As per spec, Toolkit.getPrintJob() should throw NPE if null frame
>>> object is passed to it.
>>> But on macos, it seems getPrintJob() does not check for null frame
>>> and show the print dialog.
>>>
>>> Fix is to check for null frame which is same as what we do in
>>> windows (WToolkit) and linux (XToolkit).
>>>
>>> Regards
>>> Prasanta
>>
>
More information about the 2d-dev
mailing list