Implement :focus-visible pseudo class.

Spec: https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo
Intent to Implement: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/-wN72ESFsyo

Adds :focus-visible to the list of known CSS pseudo classes. This change also adds a flag,
WasFocusedByMouse(), to UserActionElementSet which is exposed as Node.WasFocusedByMouse().
SelectorChecker will use this flag to check if a node matching :focus should also match
:focus-visible. By default, any node focused by mouse will NOT match :focus-visible. Any
node focused by keyboard will match :focus-visible.

Bug: 817199
R=aboxhall@chromium.org

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I1a0aadc8ea653afc964865a277b2d4d2ccabe540
Reviewed-on: https://chromium-review.googlesource.com/897002
Commit-Queue: Rob Dodson <robdodson@chromium.org>
Reviewed-by: Kent Tamura <tkent@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540537}
20 files changed