The terms "activation" and "focus" are often used in the chromium code base with
different semantics depending on platform [windows, macOS, etc.] or component
[e.g. views, blink]. For legacy reasons, sometimes even in a given component
[e.g. views] the semantics are unclear.
The goal of this document is to outline the intended definition of these terms.
This is not a one-size fits all solution. It fails to capture some
platform-specific nuances -- e.g. key vs main windows on macOS -- but it
provides a common lexicon for discussion.
Activation: Only applies to windows - boundary that applies to focusable
elements.
Focus: Only applies to leaf controls - Keyboard focus is sent and generally
processed by the targeted leaf element.
Activation and focus are not interchangeable. Windows are required to managed
focus within themselves (adjusting as necessary, even when not activated!).
Likewise, each tab/web-contents remembers its focused leaf control, even when
the tab is not showing because it's backgrounded.
Focusing a window is not a valid concept -- usually the intention is activation.
Focusing a control within a window is fine, and will also activate the window.
Activating a window brings it to the front, and gives the window priority [but
not exclusivity] for handling input events.