<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
Tue Apr 2 09:45:54 PDT 2013


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.
>>>>>>
>>>>
>>




More information about the awt-dev mailing list