On Mon, Nov 17, 2014 at 5:31 PM, Anton V. Tarasov <anton.tara...@oracle.com> wrote: > On 17.11.2014 17:21, Oleg Sukhodolsky wrote: >> >> On Mon, Nov 17, 2014 at 4:34 PM, Anton V. Tarasov >> <anton.tara...@oracle.com> wrote: >>> >>> On 17.11.2014 15:01, Oleg Sukhodolsky wrote: >>>> >>>> Hi Anton, >>>> >>>> the bug was a regression introduced in 1.4 (comparing with 1.3.1) this >>>> is why it was fixed and the test was written. >>>> Indeed the spec doesn't guarantee that the test will work but at the >>>> time we were working on the ticket it was decided that we should not >>>> allow such regressions. >>>> If (according to the current policy) the spec is more important than >>>> compatibility in this case I'd suggest to remove the test completely >>>> since its new version doesn't test for the regression we had earlier >>>> but just test spec in a very strange/complicated way. >>> >>> >>> The test passes on Windows, but fails on Mac and I suppose Linux. I >>> recall I >>> made attemps to fix the failure on Linux (in 1.6 or 1.7) but that was >>> quite >>> complicated to make something reliable, due to the fact that in XToolkit >>> even native focus is asynchronous, like in CToolkit. So, from my point of >>> view hacking it doesn't worth the candles, taking into account all I've >>> said >>> below. >>> >>> I still like the idea of replacing requestFocus with >>> requestFocusInWindow. >>> We can add comments saying that the original test was modified to avoid >>> the >>> endless loop. It didn't actually test for the endless loop, as otherwise >>> it >>> would have had a timer. It tested for focus gains count per window, that >>> remains relevant even in its new form. That's my personal opinion, I >>> won't >>> insist on keeping it if you both vote for the opposite... >> >> if you do not plan to fix the problem the test reproduces then I'd >> vote for removing the test (you have enough tests in regression tests >> suite ;) > > > I'm afraid I don't, as I don't think this is a real problem :)
so just remove the test, you do not need it ;) Oleg. > > Regards, > Anton. > > >> >> Regards, Oleg. >>> >>> Thanks, >>> Anton. >>> >>> >>>> So, it is you whole should make the final decision but I just do not >>>> see a reason to keep a test which doesn't test for the particular >>>> regression in regression tests suite. >>>> >>>> Regards, Oleg. >>>> >>>> On Mon, Nov 17, 2014 at 2:01 PM, Anton V. Tarasov >>>> <anton.tara...@oracle.com> wrote: >>>>> >>>>> Hi Oleg, >>>>> >>>>> Glad to hear from you :) >>>>> >>>>> On 14.11.2014 18:24, Oleg Sukhodolsky wrote: >>>>>> >>>>>> Sorry to interrupt you but since I do know the test let me say that >>>>>> requestFocus() is an important part of the test, >>>>>> if you are going to replace it with requestFocusInWindow() you >>>>>> (effectively) remove it from list of regression tests. >>>>>> Please check 4369903 bug for more information. >>>>> >>>>> >>>>> In the bug I see the description of why the infinite loop happens and a >>>>> suggestion to use requestFocusInWindow to prevent it. From my point of >>>>> view, >>>>> the behavior is expected taking into account the asynchronous nature of >>>>> java >>>>> focus. >>>>> >>>>> By default, when a toplevel window gains activation, >>>>> KeyboardFocusManager >>>>> requests focus in it by means of calling the requestFocusInWindow >>>>> method. >>>>> Thus, the test case creates an artificial situation with unclear goals. >>>>> It >>>>> doesn't seem to reflect a real use case (I can see the bug was filed by >>>>> an >>>>> internal engineer, not refering to any customer or user application). >>>>> In >>>>> case a developer wants to alter the component receiving focus at the >>>>> toplevels's activation, he/she can achieve this by means of customizing >>>>> the >>>>> focus traversal policy, for instance. >>>>> >>>>> The javadoc [1] for the JComponent.requestFocus method warns developers >>>>> about its usage: >>>>> >>>>> <<Note that the use of this method is discouraged because its behavior >>>>> is >>>>> platform dependent. Instead we recommend the use of >>>>> requestFocusInWindow().>> >>>>> >>>>> What I'm trying to say is that we'd rather avoid hacking the focus >>>>> subsystem >>>>> in order to just solve the infinite loop problem. >>>>> >>>>> However, originally the reporter of the bug complains about the >>>>> following: >>>>> >>>>> <<Setting focus during window activation often sends focus to the wrong >>>>> place, or to multiple places.>> >>>>> >>>>> This behavior is incorrect, indeed. But we can verify it with the test >>>>> case. >>>>> When a component gains focus we can check that: >>>>> >>>>> 1. it is the current focus owner reported by KFM, and the current >>>>> focused >>>>> window is its container >>>>> 2. the opposite component has lost focus prior to that (that is, every >>>>> FOCUS_GAINED precedes a FOCUS_LOST received by the opposite component) >>>>> 3. the same about the WINDOW_LOST_FOCUS/WINDOW_GAINED_FOCUS pair >>>>> >>>>> The test should be ready for the infinite loop and I can suggest to >>>>> simply >>>>> stop requesting focus after a couple of iterations. >>>>> >>>>> This could be a compromize. What do you think, Oleg, Mikhail? >>>>> >>>>> Thanks, >>>>> Anton. >>>>> >>>>> [1] >>>>> >>>>> >>>>> https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#requestFocus-- >>>>> >>>>> >>>>>> Regards, Oleg. >>>>>> >>>>>> P.S. feel free to ask more questions if you need. >>>>>> >>>>>> On Fri, Nov 14, 2014 at 5:07 PM, Anton V. Tarasov >>>>>> <anton.tara...@oracle.com> wrote: >>>>>>> >>>>>>> Hi Mikhail, >>>>>>> >>>>>>> Looks fine for me. Thanks! This was an old one... Do you have any >>>>>>> plans >>>>>>> to >>>>>>> fix it in 8/9 as well? >>>>>>> >>>>>>> Regards, >>>>>>> Anton. >>>>>>> >>>>>>> >>>>>>> On 14.11.2014 18:57, mikhail cherkasov wrote: >>>>>>>> >>>>>>>> Hello all, >>>>>>>> >>>>>>>> Could you please review a simple fix of closed test, the test was >>>>>>>> moved >>>>>>>> to >>>>>>>> open repo >>>>>>>> and requestFocus was replaced requestFocusInWindow. >>>>>>>> >>>>>>>> Because "requestFocus" cause infinite war for focus between two >>>>>>>> windows, >>>>>>>> however this >>>>>>>> behavior is correct and doesn't violet spec. >>>>>>>> >>>>>>>> [TESTBUG] >>>>>>>> closed/java/awt/Focus/ActivateFocusTest/ActivateFocusTest.html >>>>>>>> fails intermittently >>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8047961 >>>>>>>> Webrev: http://cr.openjdk.java.net/~mcherkas/8047961/webrev.00/ >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Mikhail. >>>>>>>> >