Created attachment 297772 [details] A web page to reproduce the problem Overview: As specified in the shadow dom specification (http://w3c.github.io/webcomponents/spec/shadow/#focus): "A shadow host can delegate focus to its shadow root by assigning a boolean delegatesFocus flag to be true in ShadowRootInit dictionary". But this feature is not working. Steps to Reproduce: - open the attached file (delegateFocus.html) in the latest nightly build - click on the text "Hello world" Actual Results: nothing happens Expected Results: The input field should receive focus. Build date: December 20, 2016 5:14 PM GMT Platform: macOS Sierra 10.12.2 (16C67)
<rdar://problem/29816058>
Created attachment 376241 [details] WIP
Attachment 376241 [details] did not pass style-queue: ERROR: Source/WebCore/dom/Element.cpp:2837: 'newTarget' is incorrectly named. It should be named 'protectedThis'. [readability/naming/protected] [4] Total errors found: 1 in 30 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 380813 [details] Adds the support
Comment on attachment 380813 [details] Adds the support View in context: https://bugs.webkit.org/attachment.cgi?id=380813&action=review > Source/WebCore/dom/ShadowRoot.cpp:59 > +ShadowRoot::ShadowRoot(Document& document, ShadowRootMode type, bool delegatesFocus) Please use enum in the interface. The member can be bool. > Source/WebCore/dom/ShadowRoot.h:45 > + enum class FocusDelegation { Yes, No }; You even have one, you are just not using it!
(In reply to Antti Koivisto from comment #5) > Comment on attachment 380813 [details] > Adds the support > > View in context: > https://bugs.webkit.org/attachment.cgi?id=380813&action=review > > > Source/WebCore/dom/ShadowRoot.cpp:59 > > +ShadowRoot::ShadowRoot(Document& document, ShadowRootMode type, bool delegatesFocus) > > Please use enum in the interface. The member can be bool. Yeah, I guess I added enum after I had added this argument! > > > Source/WebCore/dom/ShadowRoot.h:45 > > + enum class FocusDelegation { Yes, No }; > > You even have one, you are just not using it! Will do. I also forgot to specify the width again (uint8_t) :( Will fix that.
Committed r251043: <https://trac.webkit.org/changeset/251043>
Landed the windows build fix in https://trac.webkit.org/changeset/251044.
FYI there's one new addition for the spec, to keep the focused element if it's a flat-tree descendant of the host: https://github.com/whatwg/html/pull/5039
(In reply to Rakina Zata Amni from comment #9) > FYI there's one new addition for the spec, to keep the focused element if > it's a flat-tree descendant of the host: > https://github.com/whatwg/html/pull/5039 This kind of already works in WebKit but fixing it fully in https://bugs.webkit.org/show_bug.cgi?id=203869.