DescriptionOOPIF: Send page-level focus messages to all processes rendering a page.
Previously, when a window gains or loses focus (such as when
alt-tabbing to/from it), page-level focus would only be updated in
top-level frame's process. This caused issues when cross-process
subframes checked page-level focus via FocusController::isFocused(),
for example when processing keyboard events for input fields.
This CL adds logic to replicate the focus update to processes created
for cross-process frames. This is used to update the focus state
inside each RenderView (has_focus_) as well as
page()->focusController().isFocused() state in each process. Some
discussion about this is at https://goo.gl/B9S5ou.
Note that the isActive() bit (set by ViewMsg_SetActive) will probably
need to be similarly replicated as well, but this will be done in a
separate CL.
BUG=530663, 339659
Committed: https://crrev.com/3fcd0cae4e0cdd067ef5d8a2f3bd1c3b12da3109
Cr-Commit-Position: refs/heads/master@{#355833}
Patch Set 1 #Patch Set 2 : #Patch Set 3 : #Patch Set 4 : Fix test failures #Patch Set 5 : Another test fix #
Total comments: 21
Patch Set 6 : Send one message per subframe process; address Charlie's comments. #Patch Set 7 : Rebase #
Total comments: 12
Patch Set 8 : Fix Charlie's nits #
Total comments: 5
Patch Set 9 : Rebase #Patch Set 10 : Move ReplicatePageFocus to FrameTree #
Total comments: 4
Patch Set 11 : Address Nasko's comments #Patch Set 12 : Rebase #Patch Set 13 : Rebase #Dependent Patchsets: Messages
Total messages: 28 (7 generated)
|