RESOLVED FIXED 49509
document.activeElement doesn't point to the focused frame
https://bugs.webkit.org/show_bug.cgi?id=49509
Summary document.activeElement doesn't point to the focused frame
Ojan Vafai
Reported 2010-11-14 07:38:32 PST
When a the contents of a frame have focus, document.activeElement in the parent should point to the frame. Right now it points to the body in the parent. Opera matches WebKit behavior. Firefox and IE have activeElement point to the frame.
Attachments
test case (856 bytes, text/html)
2010-11-16 16:54 PST, Ojan Vafai
no flags
Patch (7.45 KB, patch)
2011-05-16 15:03 PDT, Erik Arvidsson
webkit.review.bot: commit-queue-
Patch (7.45 KB, patch)
2011-05-16 15:46 PDT, Erik Arvidsson
no flags
Patch (8.34 KB, patch)
2011-05-16 19:45 PDT, Erik Arvidsson
no flags
Patch with updated ChangeLogs (8.63 KB, patch)
2011-05-17 12:22 PDT, Erik Arvidsson
rniwa: review+
Archive of layout-test-results from ec2-cr-linux-01 (1.22 MB, application/zip)
2011-05-17 12:39 PDT, WebKit Review Bot
no flags
Alexey Proskuryakov
Comment 1 2010-11-15 10:03:43 PST
Ojan Vafai
Comment 2 2010-11-16 16:54:57 PST
Created attachment 74063 [details] test case
Erik Arvidsson
Comment 3 2011-05-16 15:03:24 PDT
Collabora GTK+ EWS bot
Comment 4 2011-05-16 15:09:49 PDT
WebKit Review Bot
Comment 5 2011-05-16 15:11:24 PDT
WebKit Review Bot
Comment 6 2011-05-16 15:11:29 PDT
Comment on attachment 93699 [details] Patch Attachment 93699 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/8705117
Early Warning System Bot
Comment 7 2011-05-16 15:13:35 PDT
Erik Arvidsson
Comment 8 2011-05-16 15:46:51 PDT
WebKit Review Bot
Comment 9 2011-05-16 16:01:28 PDT
Comment on attachment 93699 [details] Patch Attachment 93699 [details] did not pass cr-mac-ews (chromium): Output: http://queues.webkit.org/results/8700943
Ojan Vafai
Comment 10 2011-05-16 16:45:23 PDT
Ryosuke Niwa
Comment 11 2011-05-16 16:50:32 PDT
Comment on attachment 93708 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=93708&action=review Looks sane to me but please fix nits. > LayoutTests/fast/dom/HTMLDocument/active-element-frames-expected.txt:9 > +PASS: doc0.activeElement is input0 > +PASS: doc1.activeElement is body1 > +PASS: doc2.activeElement is body2 > +PASS: doc3.activeElement is body3 > +PASS: doc4.activeElement is body4 All these outputs make little sense unless you know the test code. Could you show the structure of the document used in this test? > LayoutTests/fast/dom/HTMLDocument/active-element-frames-expected.txt:11 > +Focusing input1 This output isn't useful. What does input1 mean? You should explain that this is an input element inside a document. > Source/WebCore/html/HTMLDocument.cpp:144 > + } else { I would have added an early exit above the else to avoid adding the else clause. > Source/WebCore/html/HTMLDocument.cpp:146 > + Page* page = this->page(); > + if (page) { You should either declare page inside the if's condition or early exit when !page. > Source/WebCore/html/HTMLDocument.cpp:147 > + for (Frame* f = page->focusController()->focusedFrame(); f; f = f->tree()->parent()) { Please do not use one letter variable.
Alexey Proskuryakov
Comment 12 2011-05-16 17:29:03 PDT
Should we wait a little for responses on WhatWG? Searching through archives, there was an earlier discussion: <http://www.mail-archive.com/whatwg@lists.whatwg.org/msg12973.html>. I didn't actually read past the title, so I don't know how closely it's related.
Ojan Vafai
Comment 13 2011-05-16 18:04:14 PDT
(In reply to comment #12) > Should we wait a little for responses on WhatWG? > > Searching through archives, there was an earlier discussion: <http://www.mail-archive.com/whatwg@lists.whatwg.org/msg12973.html>. I didn't actually read past the title, so I don't know how closely it's related. This specific issue isn't addressed in any past discussion I could find. This doesn't seem especially controversial to me though since Firefox and IE already have this behavior. With WebKit matching, it's hard to imagine the spec would not follow.
Erik Arvidsson
Comment 14 2011-05-16 19:45:26 PDT
Ryosuke Niwa
Comment 15 2011-05-17 11:59:43 PDT
Comment on attachment 93732 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=93732&action=review > LayoutTests/ChangeLog:7 > + You should explain what kind of a test you're adding. > LayoutTests/fast/dom/HTMLDocument/active-element-frames.html:3 > + I don't think we want these blank lines. They clutter the test code. > LayoutTests/fast/dom/HTMLDocument/active-element-frames.html:40 > +var iframe1 = doc0.getElementById('frame-1'); > +var doc1 = iframe1.contentDocument; > +var input1 = doc1.body.appendChild(doc1.createElement('input')); > + > +var iframe2 = doc0.getElementById('frame-2'); > +var doc2 = iframe2.contentDocument; > +var input2 = doc2.body.appendChild(doc2.createElement('input')); > + > +var iframe3 = doc1.body.appendChild(doc1.createElement('iframe')); > +var doc3 = iframe3.contentDocument; > +var input3 = doc3.body.appendChild(doc3.createElement('input')); > + > +var iframe4 = doc2.body.appendChild(doc2.createElement('iframe')); > +var doc4 = iframe4.contentDocument; > +var input4 = doc4.body.appendChild(doc4.createElement('input')); > + > +// Set up IDs for logging. > +for (var i = 0; i < 5; i++) { > + window['doc' + i].body.id = 'body' + i; > + if (i > 0) > + window['iframe' + i].id = 'iframe' + i; > + window['input' + i].id = 'input' + i; > +} It's not obvious which iframe/doc/input gets which id from this code. Could you either hard-code everything or generate everything in the loop? > Source/WebCore/ChangeLog:7 > + You should refer to relevant spec. or justification as to why this behavior is desirable.
Ojan Vafai
Comment 16 2011-05-17 12:15:22 PDT
Comment on attachment 93732 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=93732&action=review >> LayoutTests/ChangeLog:7 >> + > > You should explain what kind of a test you're adding. What sort of explanation do you have in mind? It seems pretty self-explanatory to me. >> LayoutTests/fast/dom/HTMLDocument/active-element-frames.html:3 >> + > > I don't think we want these blank lines. They clutter the test code. I don't see what the problem here is. Making the test more readable at the cost of a few extra spaces in the expected.txt output doesn't seem bad to me.
Ryosuke Niwa
Comment 17 2011-05-17 12:18:18 PDT
Comment on attachment 93732 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=93732&action=review >>> LayoutTests/ChangeLog:7 >>> + >> >> You should explain what kind of a test you're adding. > > What sort of explanation do you have in mind? It seems pretty self-explanatory to me. Something like "Added a test to ensure WebKit returns the frame element as the active element when the focus is inside the frame." >>> LayoutTests/fast/dom/HTMLDocument/active-element-frames.html:3 >>> + >> >> I don't think we want these blank lines. They clutter the test code. > > I don't see what the problem here is. Making the test more readable at the cost of a few extra spaces in the expected.txt output doesn't seem bad to me. To me at least, these blank lines make the test less readable.
Erik Arvidsson
Comment 18 2011-05-17 12:20:26 PDT
Comment on attachment 93732 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=93732&action=review >> LayoutTests/fast/dom/HTMLDocument/active-element-frames.html:40 >> +} > > It's not obvious which iframe/doc/input gets which id from this code. Could you either hard-code everything or generate everything in the loop? It does not matter what ID they get. The ID is only used to distinguish the elements. The describe function is used to give you a meaningful description of where each element is in the DOM.
Erik Arvidsson
Comment 19 2011-05-17 12:22:20 PDT
Created attachment 93806 [details] Patch with updated ChangeLogs
WebKit Review Bot
Comment 20 2011-05-17 12:39:43 PDT
Comment on attachment 93806 [details] Patch with updated ChangeLogs Attachment 93806 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/8667025 New failing tests: fast/dom/HTMLDocument/active-element-frames.html
WebKit Review Bot
Comment 21 2011-05-17 12:39:49 PDT
Created attachment 93809 [details] Archive of layout-test-results from ec2-cr-linux-01 The attached test failures were seen while running run-webkit-tests on the chromium-ews. Bot: ec2-cr-linux-01 Port: Chromium Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Ian 'Hixie' Hickson
Comment 22 2011-05-17 14:52:26 PDT
Do what Firefox and IE do, I'll update the spec accordingly when I get to that feedback. (Sorry, I'm months behind at the moment due to the HTMLWG pre-last-call process.)
Erik Arvidsson
Comment 23 2011-05-17 15:06:26 PDT
Note You need to log in before you can comment on or make changes to this bug.