Page MenuHomePhabricator

Next Gen Focus Testsuite
Updated 327 Days AgoPublic

Comparison with old focus movement

basically we have to keep backward compatibility. the goal is to ensure old and new focus movement are matched.

  • in case of arrow key ( Right / Left / Top / Down )
widgetoldnewsolution
scrollerscroller is focusable itself. in case of arrow key : if focusable content does not exist in viewport, scroll bar is moved by arrow key. otherwise, you can move focus to next object based on geometry.scroller is not focusable. you can't move scroll bar using arrow key. you can move focus to next object based on geometry.it need to rewrite _key_action_move in elm_scroller.c
toolbartoolbar is focusable itself.toolbar is not focusable. sometimes, you can't move focus to next item.we need solution for item focus..
  • in case of tab / shift tab key ( Next / Prev )
widgetoldnewsolution
scrollerif there are focusable content in viewport, you can move focus between them.you can move focus although focusable content does not exist in viewport.we may consider item focus movement
toolbaryou can't move focus using tab key between items.you can move focus using tab key between items.we may consider item focus movement
genlistyou can't move focus using tab key between items.you can move focus using tab key between items.we may consider item focus movement
popupcontent can't get focus using tab key ( THIS IS BUG )focus movement is same to general widget.

Automatic Next / Prev testing

The base idea of testing next/prev is serializing how the chain looks like when a widget is tested, for newer test runs we can just compare a old serialitation to a new one.

The idea of the automation for testing this is like this:

  • Create a window
  • Create a widget with a given class
  • (maybe execute some function that can set some properties on the widget that are needed for it to register correctly)
  • Add the widget to the window as resize object or whatever
  • wait some amount of time
  • take the api from efl.ui.focus.manager.fetch and fetch all nodes, so we can serialise all relations, match them to the classes, and maybe to the content, so we have some sort of identification.
  • match the old records and new runs of those relations from the focus tree.

Right / Left / Top / Down testing

The relations are not related to the widget (except scroller genlist gengrid and toolbar) so a generic test case for covering everything excet the exception should be fine. Then we still need testcases for scroller genlist gengrid and toolbar.

Testcases should look like:

  • Create a situation with
    • genlist
      • elm_widget as item
      • something else as item
    • gengrid
      • elm_widget as item
      • something else as item
    • scroller
      • elm_widget as item
      • something else as item
  • Scroll into different positions, check if the relations are still correct.
Last Author
YOhoho
Last Edited
Feb 26 2018, 10:29 PM
Projects
None
Subscribers
None