RESOLVED FIXED 95169
[ShadowDOM] Shadow elements in the input element should be focusable.
https://bugs.webkit.org/show_bug.cgi?id=95169
Summary [ShadowDOM] Shadow elements in the input element should be focusable.
yosin
Reported 2012-08-27 21:35:44 PDT
The implementation of multiple fields time input UI wants to have focusable shadow elements for focus navigation. For this purpose, FocusController should walk through shadow elements for "time" input type. Although, current implementation of focus navigation in FocusController class introduced by r112511 treats all input types in same way.
Attachments
Patch 1 (10.48 KB, patch)
2012-08-27 22:17 PDT, yosin
no flags
Patch 2 (8.99 KB, patch)
2012-08-27 22:34 PDT, yosin
no flags
yosin
Comment 1 2012-08-27 22:17:19 PDT
yosin
Comment 2 2012-08-27 22:18:03 PDT
Comment on attachment 160898 [details] Patch 1 Could you review this patch? Thanks in advance.
Kent Tamura
Comment 3 2012-08-27 22:28:23 PDT
Comment on attachment 160898 [details] Patch 1 View in context: https://bugs.webkit.org/attachment.cgi?id=160898&action=review > Source/WebCore/html/HTMLAudioElement.h:51 > + virtual bool hasCustomFocusLogic() const OVERRIDE; This should be defined at HTMLMediaElement instead of HTMLAudioElement and HTMLVideoElement because HTMLMediaElement is responsible to build shadow sub tree for media control UI.
yosin
Comment 4 2012-08-27 22:34:47 PDT
yosin
Comment 5 2012-08-27 22:36:19 PDT
Comment on attachment 160901 [details] Patch 2 Could you review this patch? Thanks in advance. = Changes since the last review = * Add hasCustomFocusLogic() to HTMLMediaElement instead of HTMLAudioElement and HTMLVideoElement
Kent Tamura
Comment 6 2012-08-27 22:40:11 PDT
Comment on attachment 160901 [details] Patch 2 ok
yosin
Comment 7 2012-08-27 22:41:23 PDT
Comment on attachment 160901 [details] Patch 2 Clearing flags on attachment: 160901 Committed r126842: <http://trac.webkit.org/changeset/126842>
yosin
Comment 8 2012-08-27 22:41:27 PDT
All reviewed patches have been landed. Closing bug.
Eric Carlson
Comment 9 2012-08-28 09:18:00 PDT
(In reply to comment #5) > (From update of attachment 160901 [details]) > * Add hasCustomFocusLogic() to HTMLMediaElement instead of HTMLAudioElement and HTMLVideoElement What is "multiple fields time input UI" and what does it have to do with HTMLMediaElement?
yosin
Comment 10 2012-08-28 18:21:33 PDT
(In reply to comment #9) > (In reply to comment #5) > > (From update of attachment 160901 [details] [details]) > > * Add hasCustomFocusLogic() to HTMLMediaElement instead of HTMLAudioElement and HTMLVideoElement > > What is "multiple fields time input UI"? Multiple fields time input UI is introduced by bug 88970. It is text field like UI but it has fields for hour, minute and second. It is similar to platform provided DateTime control. >what does it have to do with HTMLMediaElement? "audio" and "video" elements uses shadow DOM for implementing their UI, focus controller hasn't supported their detail of focus navigation yet. "input" element is same situation. But, I would like to override this focus navigation behavior based on input type.
Eric Carlson
Comment 11 2012-08-29 16:57:25 PDT
(In reply to comment #10) > (In reply to comment #9) > > (In reply to comment #5) > > > > What is "multiple fields time input UI"? > Multiple fields time input UI is introduced by bug 88970. > It is text field like UI but it has fields for hour, minute and second. It is similar to platform provided DateTime control. > > >what does it have to do with HTMLMediaElement? > "audio" and "video" elements uses shadow DOM for implementing their UI, focus controller hasn't supported their detail of focus navigation yet. "input" element is same situation. But, I would like to override this focus navigation behavior based on input type. I am sorry, but I still don't understand - maybe because I don't know what the focus controller or focus navigation are. Can you please explain in more detail or point me to something I can read to educate myself?
yosin
Comment 12 2012-08-30 01:38:25 PDT
(In reply to comment #11) > (In reply to comment #10) > > (In reply to comment #9) > > > (In reply to comment #5) > > > > > > What is "multiple fields time input UI"? > > Multiple fields time input UI is introduced by bug 88970. > > It is text field like UI but it has fields for hour, minute and second. It is similar to platform provided DateTime control. > > > > >what does it have to do with HTMLMediaElement? > > "audio" and "video" elements uses shadow DOM for implementing their UI, focus controller hasn't supported their detail of focus navigation yet. "input" element is same situation. But, I would like to override this focus navigation behavior based on input type. > > I am sorry, but I still don't understand - maybe because I don't know what the focus controller or focus navigation are. Can you please explain in more detail or point me to something I can read to educate myself? Actually, I'm not familiar with FocusController. When I study how Shift+Tab handled, I saw page/EventHandler.cpp, then I reached page/FocusController.cpp My trouble was FocusController didn't walk into shadow DOM tree hosted by "input" element. My experiment proofs FocusController walks into the "span" element. Simple search "input" gave me what I need to change.
Hayato Ito
Comment 13 2012-08-30 05:56:52 PDT
Let me comment briefly. I'll take a look at the patch tomorrow. When I supported Shadow DOM in regard to focus navigations, I found that input element has a special focus logic. That caused me to exclude input elements from general focus navigation. So we cannot enter a shadow DOM of input elements in focus navigations. I think we need to update input elements somehow before we get rid of such special treatment. Let me take a look at the patch tomorrow. (In reply to comment #12) > (In reply to comment #11) > > (In reply to comment #10) > > > (In reply to comment #9) > > > > (In reply to comment #5) > > > > > > > > What is "multiple fields time input UI"? > > > Multiple fields time input UI is introduced by bug 88970. > > > It is text field like UI but it has fields for hour, minute and second. It is similar to platform provided DateTime control. > > > > > > >what does it have to do with HTMLMediaElement? > > > "audio" and "video" elements uses shadow DOM for implementing their UI, focus controller hasn't supported their detail of focus navigation yet. "input" element is same situation. But, I would like to override this focus navigation behavior based on input type. > > > > I am sorry, but I still don't understand - maybe because I don't know what the focus controller or focus navigation are. Can you please explain in more detail or point me to something I can read to educate myself? > > Actually, I'm not familiar with FocusController. When I study how Shift+Tab handled, I saw page/EventHandler.cpp, then I reached page/FocusController.cpp > > My trouble was FocusController didn't walk into shadow DOM tree hosted by "input" element. My experiment proofs FocusController walks into the "span" element. Simple search "input" gave me what I need to change.
Note You need to log in before you can comment on or make changes to this bug.