<AWT Dev> Review request for JDK-8038631: Create wrapper for awt.Robot with additional functionality
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Mon Mar 31 13:49:51 UTC 2014
Hi, Dmitriy.
Do I understand correctly that these methods will be added to the Robot
class in jdk9?
A few notes:
- Different javadoc formatting for different methods.
- There is no information about exceptions. At least waitForIdle will
throw an exception if will be called on edt.
On 31.03.2014 15:51, Dmitriy Ermashov wrote:
> Hi,
>
> Please, review the latest version of changeset for:
> https://bugs.openjdk.java.net/browse/JDK-8038631
>
> Webrev is here:
> http://cr.openjdk.java.net/~yan/8038631/webrev.01/
>
>
> On 31.03.2014 14:15, Petr Pchelko wrote:
>>>> 4. The default value for realSync additional delay doesn't seem
>>>> enough. We normally use 500 ms as the frame creation and first draw
>>>> could take more time.
>>> We have to use small delay between mousePress and mouseRelease
>>> events to emulate real mouse click event. And larger delay can be
>>> put after mouseRelease call, for ex. 500 ms, as you wrote.
>>> Don't you mind of this solution?
>> And couldn't you reuse DEFAULT_SPEED for sleeping in mouseClick? The
>> comment states it's used there but it's not..
>>
>>>> 5. The click method could be more consistent with others if called
>>>> "mouseClick". No strong opinion on this.
>>> For now we have several hundreds of functional tests, most of them
>>> use method named click(). It seems more reasonable to create method
>>> click() and use it than search the usage of it in all tests and fix
>>> to mouseClick() call.
>> Ok, no problem. I'm fine either way.
>>
>> With best regards. Petr.
>>
>> On 31.03.2014, at 14:11, Dmitriy Ermashov
>> <dmitriy.ermashov at oracle.com> wrote:
>>
>>> On 31.03.2014 13:12, Petr Pchelko wrote:
>>>> Hello, Dmitry.
>>>>
>>>> Some comments:
>>>>
>>>> 1. The name RobotWrapper does not fit in my opinion. The "Wrapper"
>>>> is more useful for delegation not extension and it feels like you
>>>> should pass the normal Robot to the wrapper constructor.. I think
>>>> something like "ExtendedRobot" would feel better. This is my
>>>> personal preference so it's arguable.
>>> No objections. Will rename it to ExtendedRobot.
>>>> 2. I'm not sure I understand why is this location of the util
>>>> works? in JavaDoc you state that it should be included from
>>>> regtesthelpers but you put it to the test lib. Is it some feature
>>>> of jtreg I'm not aware of?
>>> Will fix in next version of webrev.
>>>> 3. Could you please use @code instead of <code>
>>> Will fix in next version of webrev.
>>>> 4. The default value for realSync additional delay doesn't seem
>>>> enough. We normally use 500 ms as the frame creation and first draw
>>>> could take more time.
>>> We have to use small delay between mousePress and mouseRelease
>>> events to emulate real mouse click event. And larger delay can be
>>> put after mouseRelease call, for ex. 500 ms, as you wrote.
>>> Don't you mind of this solution?
>>>> 5. The click method could be more consistent with others if called
>>>> "mouseClick". No strong opinion on this.
>>> For now we have several hundreds of functional tests, most of them
>>> use method named click(). It seems more reasonable to create method
>>> click() and use it than search the usage of it in all tests and fix
>>> to mouseClick() call.
>>>> 6. "Clicks mouse button 1 with the default pause between Press and
>>>> Release." this statement does not seem clear. How to override the
>>>> default value? Why does this method click with the default pause
>>>> and the previous one does not? or does it? It's not clear from the
>>>> JavaDoc
>>> I believe, javadoc should be fixed.
>>> Will fix in next version of webrev.
>>>> 7. Could you please add @Override annotations where appropriate
>>>> (waitForIdle for example)
>>> Will fix in next version of webrev.
>>>> 8. "public void type" may be keyType would be better? For
>>>> consistency with other methods.
>>> Same as 5.
>>>> 9. Could the method you are using for converting KeyChar to KeyCode
>>>> be replaces with KeyEvent.getExtendedKeyCodeForChar? Or KeyStroke
>>>> API? This switch is ugly and it would be awesome to replace it.
>>> Will fix in next version of webrev.
>>>> Thank you.
>>>> With best regards. Petr.
>>>>
>>>> On 31.03.2014, at 12:40, Dmitriy Ermashov
>>>> <dmitriy.ermashov at oracle.com> wrote:
>>>>
>>>>> Hi,
>>>>> Please, review the changeset for:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8038631
>>>>>
>>>>> Webrev is here:
>>>>> http://cr.openjdk.java.net/~yan/8038631/webrev.00
>>>>>
>>>>> Presently for testing of JDK client we use test suites of two
>>>>> kinds, historically called regression and functional (internal).
>>>>> In JDK9 we plan an attempt to unify them and ultimately get rid of
>>>>> the functional suites.
>>>>>
>>>>> One of the first technical problems in this refactoring attempt is
>>>>> a multitude of the java.awt.Robot wrappers. There are some really
>>>>> elaborate libraries enhansing Robot which all we cannot and should
>>>>> not port to jtreg.
>>>>>
>>>>> Fortunately, test writers almost never use complex features of
>>>>> these wrappers. So here's our plan:
>>>>> (1) describe the real practice of the robot use in the functional
>>>>> tests (please don't worry, that's out of scope of this request);
>>>>> (2) write a minimal useful RobotWrapper extending java.awt.Robot;
>>>>> (3) start functional tests refactoring;
>>>>> (4) cautiously move enhancements to the java.awt.Robot trying not
>>>>> to break backward compatibility of thousands existing tests. For
>>>>> instance, waitForIdle should use realSync() but there definitely
>>>>> are plenty of tests using it on EDT: or maybe not -- we should
>>>>> spent some time for background research in parallel with (3).
>>>>>
>>>>> --
>>>>> Thanks,
>>>>> Dima
>>>>>
>>> --
>>> Thanks,
>>> Dima
>>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list