New issue
Advanced search Search tips

Issue 910642 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 911776
Owner: ----
Closed: Dec 13
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug
Team-Accessibility



Sign in to add a comment

Web contents are not hooked up to the desktop tree in single process mash

Project Member Reported by dtseng@chromium.org, Nov 30

Issue description

- run chrome --enable-features=SingleProcessMash
- run ChromeVox
- print ChromeVox's view of the desktop tree by doing
chrome.automation.getDesktop((d) => console.log(d.toString())


result:
The entire ash tree is printed (including launcher, shelf) and the ChromeVox Panel (which points to a child tree)

However, no WebView exists in this tree. WebView (in classic) is the node which holds the child tree id of the root web area.


"tree id=0
node id=18 role=desktop state={"horizontal":true} parentID=null childIds=[39,19]
  node id=39 role=window state={} parentID=18 childIds=[38] name=Display--2094967296
    node id=38 role=window state={} parentID=39 childIds=[40,41,42,43,37,44,45]
      node id=40 role=window state={} parentID=38 childIds=[46]
        node id=46 role=window state={} parentID=40 childIds=[47]
          node id=47 role=window state={} parentID=46 childIds=[48]
            node id=48 role=window state={} parentID=47 childIds=[49]
              node id=49 role=unknown state={} parentID=48 childIds=[50]
                node id=50 role=unknown state={} parentID=49 childIds=[]
      node id=41 role=window state={} parentID=38 childIds=[51,52,53,54,55,56,57,58]
        node id=51 role=window state={} parentID=41 childIds=[]
        node id=52 role=window state={"invisible":true} parentID=41 childIds=[]
        node id=53 role=window state={} parentID=41 childIds=[59,60]
          node id=59 role=window state={} parentID=53 childIds=[140,61,62] name=Chromium - New Tab
            node id=140 role=window state={"invisible":true} parentID=59 childIds=[65] name=New Tab
              node id=65 role=window state={"invisible":true} parentID=140 childIds=[] name=New Tab
            node id=61 role=window state={} parentID=59 childIds=[142]
              node id=142 role=window state={} parentID=61 childIds=[141]
                node id=141 role=window state={} parentID=142 childIds=[138] name=New Tab
                  node id=138 role=window state={} parentID=141 childIds=[] name=New Tab
            node id=62 role=window state={} parentID=59 childIds=[66] name=Chromium - New Tab
              node id=66 role=window state={} parentID=62 childIds=[67] name=Chromium - New Tab
                node id=67 role=client state={} parentID=66 childIds=[68,69]
                  node id=68 role=client state={} parentID=67 childIds=[]
                  node id=69 role=client state={} parentID=67 childIds=[70]
                    node id=70 role=unknown state={"focused":true} parentID=69 childIds=[]
          node id=60 role=window state={} parentID=53 childIds=[71]
            node id=71 role=window state={} parentID=60 childIds=[]
        node id=54 role=window state={} parentID=41 childIds=[]
        node id=55 role=window state={} parentID=41 childIds=[]
        node id=56 role=window state={} parentID=41 childIds=[72]
          node id=72 role=window state={} parentID=56 childIds=[]
        node id=57 role=window state={} parentID=41 childIds=[]
        node id=58 role=window state={} parentID=41 childIds=[]
      node id=42 role=window state={} parentID=38 childIds=[]
      node id=43 role=window state={} parentID=38 childIds=[73,74,75]
        node id=73 role=window state={} parentID=43 childIds=[]
        node id=74 role=window state={} parentID=43 childIds=[]
        node id=75 role=window state={} parentID=43 childIds=[]
      node id=37 role=window state={} parentID=38 childIds=[76,36,77,78,79,80,81,82,83,84]
        node id=76 role=window state={} parentID=37 childIds=[85]
          node id=85 role=window state={} parentID=76 childIds=[31]
            node id=31 role=window state={} parentID=85 childIds=[86]
              node id=86 role=window state={} parentID=31 childIds=[87]
                node id=87 role=pane state={} parentID=86 childIds=[32]
                  node id=32 role=toolbar state={} parentID=87 childIds=[88,89,90,91] name=Shelf
                    node id=88 role=unknown state={} parentID=32 childIds=[]
                    node id=89 role=button state={} parentID=32 childIds=[] name=Back
                    node id=90 role=button state={"focusable":true} parentID=32 childIds=[] name=Launcher
                    node id=91 role=button state={"focusable":true} parentID=32 childIds=[92,93] name=Chromium
                      node id=92 role=unknown state={} parentID=91 childIds=[]
                      node id=93 role=image state={} parentID=91 childIds=[]
        node id=36 role=window state={} parentID=37 childIds=[35,94]
          node id=35 role=window state={} parentID=36 childIds=[20]
            node id=20 role=window state={} parentID=35 childIds=[21]
              node id=21 role=window state={} parentID=20 childIds=[22]
                node id=22 role=pane state={} parentID=21 childIds=[23,95]
                  node id=23 role=button state={"focusable":true} parentID=22 childIds=[24] name=Status tray, time 9:19 AM, Battery is 50% full.
                    node id=24 role=unknown state={} parentID=23 childIds=[25,27,29,30]
                      node id=25 role=unknown state={} parentID=24 childIds=[26]
                        node id=26 role=staticText state={} parentID=25 childIds=[] name=Using US keyboard
                      node id=27 role=unknown state={} parentID=24 childIds=[34]
                        node id=34 role=image state={} parentID=27 childIds=[] name=1 notification
                      node id=29 role=button state={} parentID=24 childIds=[97] name=Battery is 50% full. Time left until battery is empty, 5 hours
                        node id=97 role=image state={} parentID=29 childIds=[] name=Battery is 50% full. Time left until battery is empty, 5 hours
                      node id=30 role=unknown state={} parentID=24 childIds=[3]
                        node id=3 role=time state={} parentID=30 childIds=[4] name=9:20 AM, Friday, November 30, 2018
                          node id=4 role=staticText state={} parentID=3 childIds=[] name=9:20
                  node id=95 role=unknown state={} parentID=22 childIds=[98] name=SPM
                    node id=98 role=unknown state={} parentID=95 childIds=[2]
                      node id=2 role=button state={} parentID=98 childIds=[99,100,101] name=SPM
                        node id=99 role=image state={"offscreen":true} parentID=2 childIds=[]
                        node id=100 role=staticText state={} parentID=2 childIds=[] name=SPM
                        node id=101 role=unknown state={} parentID=2 childIds=[]
          node id=94 role=window state={} parentID=36 childIds=[102]
            node id=102 role=window state={} parentID=94 childIds=[103]
              node id=103 role=window state={} parentID=102 childIds=[104]
                node id=104 role=alertDialog state={} parentID=103 childIds=[105] name=Braille and ChromeVox are enabled
Press Ctrl + Alt + Z to disable spoken feedback.

                  node id=105 role=button state={"focusable":true} parentID=104 childIds=[106,107,108] name=Braille and ChromeVox are enabled
Press Ctrl + Alt + Z to disable spoken feedback.

                    node id=106 role=unknown state={} parentID=105 childIds=[]
                    node id=107 role=button state={"expanded":true,"focusable":true} parentID=105 childIds=[109,110,111] name=Chromium OS
                      node id=109 role=unknown state={} parentID=107 childIds=[112,113,114,115]
                        node id=112 role=image state={} parentID=109 childIds=[]
                        node id=113 role=staticText state={} parentID=109 childIds=[] name=Chromium OS
                        node id=114 role=staticText state={} parentID=109 childIds=[] name= • 
                        node id=115 role=staticText state={} parentID=109 childIds=[] name=now
                      node id=110 role=unknown state={} parentID=107 childIds=[]
                      node id=111 role=unknown state={} parentID=107 childIds=[116]
                        node id=116 role=button state={"focusable":true} parentID=111 childIds=[] name=Notification close
                    node id=108 role=unknown state={} parentID=105 childIds=[117]
                      node id=117 role=unknown state={} parentID=108 childIds=[118,119]
                        node id=118 role=staticText state={} parentID=117 childIds=[] name=Braille and ChromeVox are enabled
                        node id=119 role=staticText state={} parentID=117 childIds=[] name=Press Ctrl + Alt + Z to disable spoken feedback.
        node id=77 role=window state={} parentID=37 childIds=[]
        node id=78 role=window state={} parentID=37 childIds=[]
        node id=79 role=window state={} parentID=37 childIds=[120]
          node id=120 role=window state={} parentID=79 childIds=[121]
            node id=121 role=window state={} parentID=120 childIds=[122]
              node id=122 role=window state={} parentID=121 childIds=[123]
                node id=123 role=window state={} parentID=122 childIds=[124] name=ChromeVox Panel
                  node id=124 role=window state={} parentID=123 childIds=[1] childTreeID=7 name=ChromeVox Panel
                    tree id=7
                    node id=1 role=rootWebArea state={"focusable":true,"focused":true} parentID=124 childIds=[7,9] name=ChromeVox Panel
                      node id=7 role=genericContainer state={} parentID=1 childIds=[37,39,41]
                        node id=37 role=button state={"default":true,"focusable":true} parentID=7 childIds=[] name=ChromeVox Menus
                        node id=39 role=genericContainer state={} parentID=7 childIds=[51]
                          node id=51 role=genericContainer state={} parentID=39 childIds=[81]
                            node id=81 role=genericContainer state={} parentID=51 childIds=[]
                        node id=41 role=genericContainer state={} parentID=7 childIds=[87,93]
                          node id=87 role=button state={"default":true,"focusable":true} parentID=41 childIds=[] name=ChromeVox Options
                          node id=93 role=button state={"default":true,"focusable":true} parentID=41 childIds=[] name=Disable ChromeVox
                      node id=9 role=genericContainer state={} parentID=1 childIds=[96]
                        node id=96 role=menuBar state={"horizontal":true,"offscreen":true} parentID=9 childIds=[]
        node id=80 role=window state={} parentID=37 childIds=[125]
          node id=125 role=window state={} parentID=80 childIds=[]
        node id=81 role=window state={} parentID=37 childIds=[]
        node id=82 role=window state={} parentID=37 childIds=[]
        node id=83 role=window state={} parentID=37 childIds=[]
        node id=84 role=window state={} parentID=37 childIds=[]
      node id=44 role=window state={} parentID=38 childIds=[]
      node id=45 role=window state={} parentID=38 childIds=[]
  node id=19 role=window state={"invisible":true,"offscreen":true} parentID=18 childIds=[]
"

 
Yeah, this is the core problem. Ash has a tree of aura::Windows, and each top-level browser window has its own tree of aura::Windows, but they are different trees.

I'm guessing the "New Tab" nodes represent the ash-side views::Widget and aura::Window for a top-level browser window, but it's not connected to the views inside the browser window, since those only live on the browser side of the fence.

How many browser windows did you have open here? Two? I see several New Tab nodes, maybe more than I expect for one window.

Components: UI>Accessibility>ChromeVox
Labels: Proj-Mash-SingleProcess
That's correct; two browser windows were open.

As you can see though, the entire ash tree (including launcher and status tray) are also included in the same tree. This indicates that we need AXTreeSourceAura to continue being able to walk windows, widgets, and views.

The ChromeVox Panel (which is exposed as a child web contents), is also included correctly.

Cc: dmazz...@chromium.org
I don't understand why that implies we need one tree source that does windows, widgets, and views. Could there be one AXTreeSource for ash could that would just walk down until it encounters a widget, then something else that would serialize the widgets and views inside each browser window as a child tree?

Mergedinto: 911776
Status: Duplicate (was: Available)
This will get fixed by my SingleProcessMash "fence hopper" CL.

Sign in to add a comment