<AWT Dev> Review request: 8010925: COPY AND PASTE TO AND FROM SIGNED APPLET FAILS AFTER FIRST INTERNAL COPY PRFRMD

mikhail cherkasov mikhail.cherkasov at oracle.com
Wed Apr 3 05:35:34 PDT 2013


Hello Anthony, Sergey,

JNFLoop was replaced with ThreadUtilities:
http://cr.openjdk.java.net/~mcherkas/8010925/webrev.03/ 
<http://cr.openjdk.java.net/%7Emcherkas/8010925/webrev.03/>

Thanks,
Mikhail.

On 03.04.2013 15:11, Anthony Petrov wrote:
> I agree with Sergey. That's what I was originally suggesting, too.
>
> Otherwise the fix looks fine.
>
> -- 
> best regards,
> Anthony
>
> On 4/2/2013 22:03, Sergey Bylokhov wrote:
>>
>> 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.




More information about the awt-dev mailing list