<AWT Dev> Review request: 8010925: COPY AND PASTE TO AND FROM SIGNED APPLET FAILS AFTER FIRST INTERNAL COPY PRFRMD
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Apr 2 11:03:57 PDT 2013
Hi, Mikhail,
You should use ThreadUtilities pomt instead of JNFLoop. Commented NSloog
is unnecessary.
On 4/2/13 8:45 PM, mikhail cherkasov wrote:
> Hello again,
>
> http://cr.openjdk.java.net/~mcherkas/8010925/webrev.02/
> <http://cr.openjdk.java.net/%7Emcherkas/8010925/webrev.02/>
>
> Thanks,
> Mikhail.
> On 02.04.2013 20:16, Anthony Petrov wrote:
>> Hi Mikhail,
>>
>> Yes, I agree we should fix this issue. And as I said, the fix looks
>> good to me. Here's just a few minor, mostly stylistic comments:
>>
>> src/macosx/classes/sun/lwawt/macosx/CClipboard.java
>>> 114 // 1.7 peer method
>>> 115 // introduced for implementation fix for 8010925
>>> 116 public native void checkPasteboard();
>>
>> This comment might better be converted to a javadoc-style comment.
>> After all, this is a public method, even though it's in a private
>> package. And btw, the @since tag would look just fine then. Also, the
>> text should describe what this method actually do, not just mention
>> the bug id (which in most cases is useless since this information can
>> easily be retrieved using hg log/annotate).
>>
>>
>> src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java
>>> 115 if ( focused ) {
>>
>> This should read as "if (focused) {" - please note the spaces.
>>
>>
>> src/macosx/native/sun/awt/CClipboard.m
>>> 385 void (^checkPasteboardBlock)() = ^(){
>>> 386 [[CClipboard sharedClipboard] checkPasteboard:nil];
>>> 387 };
>>> 388 [JNFRunLoop performOnMainThreadWaiting:YES
>>> withBlock:checkPasteboardBlock];
>>
>> Again, there's an extra variable which doesn't add any value. How
>> about shortening this to simply:
>>
>> [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
>> [[CClipboard sharedClipboard] checkPasteboard:nil];
>> }];
>>
>> ? We use this pattern all over the lwawt native code.
>>
>> --
>> best regards,
>> Anthony
>>
>> On 4/2/2013 19:35, mikhail cherkasov wrote:
>>> Hello Anthony, All,
>>>
>>> There's new version:
>>> http://cr.openjdk.java.net/~mcherkas/8010925/webrev.01/
>>> <http://cr.openjdk.java.net/%7Emcherkas/8010925/webrev.01/>
>>>
>>> Apple JDK has the same bug, without fix jdk7 shows the same behavior
>>> as jdk6.
>>> Anyway this should be fixed.
>>>
>>> Thanks,
>>> Mikhail.
>>>
>>> On 01.04.2013 12:59, Anthony Petrov wrote:
>>>> I'm not sure if there's a reasonable way to test this fix. You can
>>>> use the Clipboard API w/o creating/showing any top-level windows
>>>> which would emulate the conditions where the bug is currently
>>>> reproduced in the browser environment. However, you'll never
>>>> receive the synthetic focus event then, so the fix won't help in
>>>> this case I guess...
>>>>
>>>> BTW, did you test compare behavior to Apple JDK? Is it any
>>>> different there?
>>>>
>>>> --
>>>> best regards,
>>>> Anthony
>>>>
>>>> On 3/29/2013 20:25, mikhail cherkasov wrote:
>>>>> Hi Anthony ,
>>>>>
>>>>> will fix, I thought that chain of method calls is something like
>>>>> code convention.
>>>>>
>>>>> BTW is someone have idea how test can be implemented to this?
>>>>>
>>>>> Thanks,
>>>>> Mikhail.
>>>>>
>>>>> On 29.03.2013 20:10, Anthony Petrov wrote:
>>>>>> Hi Mikhail,
>>>>>>
>>>>>> The idea of the fix looks good to me. Note that you don't need
>>>>>> the -javaCheckPasteboard helper method. There's a method in
>>>>>> ThreadUtilities that takes a block as an argument. This way you
>>>>>> can call the -checkPasteboard directly from the block right in
>>>>>> the JNI method implementation w/o any intermediate methods.
>>>>>>
>>>>>> --
>>>>>> best regards,
>>>>>> Anthony
>>>>>>
>>>>>> On 3/29/2013 19:43, mikhail cherkasov wrote:
>>>>>>> Hello all,
>>>>>>>
>>>>>>> Could you please review the following fix:
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8010925
>>>>>>> http://cr.openjdk.java.net/~mcherkas/8010925/webrev.00/
>>>>>>> <http://cr.openjdk.java.net/%7Emcherkas/8010925/webrev.00/>
>>>>>>>
>>>>>>> Applet doesn't receive any NSApplication*Notification because it
>>>>>>> doesn't create any windows, so if we have applet with windows -
>>>>>>> all works fine.
>>>>>>> But in this case all content are added to applet's ContentPane
>>>>>>> that is
>>>>>>> embedded to browser and hasn't any window.
>>>>>>> But AWT updates clipboard data only on
>>>>>>> NSApplicationDidBecameActiveNotification.
>>>>>>> So if we make copy action from applet , applet will never read
>>>>>>> new data from system pastboard,
>>>>>>> it just will use cached data.
>>>>>>> To fix this I added pasteboard check on CEmbeddedFrame focus
>>>>>>> receiving.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Mikhail.
>>>>>>>
>>>>>
>>>
>
--
Best regards, Sergey.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20130402/a1eebcf6/attachment.html
More information about the awt-dev
mailing list