mash: CoreOobeHandler accesses ash::Shell::GetPrimaryRootWindow()->GetHost()->event_sink() |
|||||
Issue description
Oobe uses an event sink to handle tab key events:
ui::KeyEvent event(ui::ET_KEY_PRESSED, ui::VKEY_TAB, ui::EF_NONE);
if (reverse)
event.set_flags(ui::EF_SHIFT_DOWN);
SendEventToSink(&event);
Using:
ui::EventSink* CoreOobeHandler::GetEventSink() {
return ash::Shell::GetPrimaryRootWindow()->GetHost()->event_sink();
}
Source:
https://cs.chromium.org/chromium/src/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc?l=506
,
Aug 8
I can't easily determine how this code is actually used but https://bugs.chromium.org/p/chromium/issues/detail?id=543865 makes me think jdufault might know, and perhaps the code can be removed once that bug is fixed
,
Aug 8
I'm not sure what this bug is for entirely, but OOBE is a full-screen webui. After tab events have cycled, the webui sends a message to C++ side telling it that it should focus the next widget (ie, login needs to focus shelf, and then shelf focuses status area, and then status area focuses login). iirc this code is the C++ side for this; it's been refactored since I last looked (ie, EventSink seems to be a new concept since I last looked at the code).
,
Aug 8
CoreOobeHandler is in src/chrome, but the code accesses src/ash code directly, which will become invalid when we transition to out-of-process ash (aka mash). CoreOobeHandler implements ui::EventSource which has the pure virtual method GetEventSink(). If we still need that behavior than we will need to implement GetEventSink() another way.
,
Aug 8
We will need tabbing to continue to work, however it is implemented.
,
Aug 13
,
Aug 15
This should work fine in single-process mash, but not multi-process.
,
Nov 12
<triage> Moving to P3 and marking available due to lack of target milestone and activity, please update if this is a priority. </triage> |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by sky@chromium.org
, Jul 9