RESOLVED FIXED Bug 38943
Input ::selection pseudo class does not work leading to hidden selection
https://bugs.webkit.org/show_bug.cgi?id=38943
Summary Input ::selection pseudo class does not work leading to hidden selection
Attachments
Patch (6.04 KB, patch)
2014-05-11 10:39 PDT, Svetlana Redchenko
no flags
Patch (6.09 KB, patch)
2014-05-12 01:43 PDT, Svetlana Redchenko
no flags
Patch (6.10 KB, patch)
2014-05-12 11:54 PDT, Svetlana Redchenko
no flags
Patch (6.33 KB, patch)
2014-05-13 00:23 PDT, Svetlana Redchenko
no flags
YousefCisco
Comment 1 2013-05-14 03:14:21 PDT
Has anything happened to this since it's been reported?
YousefCisco
Comment 2 2013-05-14 03:14:34 PDT
Has anything happened to this since it's been reported?
Svetlana Redchenko
Comment 3 2014-05-11 10:25:07 PDT
*** Bug 132804 has been marked as a duplicate of this bug. ***
Svetlana Redchenko
Comment 4 2014-05-11 10:39:49 PDT
Darin Adler
Comment 5 2014-05-11 11:08:19 PDT
Comment on attachment 231262 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=231262&action=review The substance of this patch looks OK, although I’m concerned it’s going to be a bit slow to walk up the shadow tree for every single selected node. Style wise it needs a bit of work. > Source/WebCore/ChangeLog:4 > + https://bugs.webkit.org/show_bug.cgi?id=38943 > + https://bugs.webkit.org/show_bug.cgi?id=132804 Need bug titles here, not just bug URLs. > Source/WebCore/ChangeLog:14 > + * rendering/RenderObject.cpp: > + (WebCore::RenderObject::selectionBackgroundColor): > + (WebCore::RenderObject::selectionColor): > + (WebCore::RenderObject::getSelectionPseudoStyle): > + * rendering/RenderObject.h: Need comments explaining the changes. Each function should have a brief phrase describing the change to that function. > Source/WebCore/rendering/RenderObject.cpp:26 > */ > - > #include "config.h" Please don’t delete this blank line. > Source/WebCore/rendering/RenderObject.cpp:1521 > + if (!node()) > + return nullptr; This is OK, but it would be better to say: if (isAnonymous()) return nullptr; But also, I’d like to be sure that this is the behavior we want. Is it actually important to skip this code for anonymous renderers? Is there a good way to make sure we’ve tested that case? > Source/WebCore/rendering/RenderObject.cpp:1528 > + if (ShadowRoot* root = node()->containingShadowRoot()) { > + if (root->type() == ShadowRoot::UserAgentShadowRoot) { > + if (Element* shadowHost = node()->shadowHost()) > + return shadowHost->renderer()->getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); > + } > + } This code should use m_node. rather than node()-> > Source/WebCore/rendering/RenderObject.h:273 > + PassRefPtr<RenderStyle> getSelectionPseudoStyle() const; This function should not have the word get in its name. See the WebKit coding style guidelines for a discussion of this. The function name getUncachedPseudoStyle does not follow WebKit coding style, and the mistake should not be repeated with this new function. This declaration should be farther down in the class, in the last private section; this earlier set of private functions is a bit of an anomaly and this function should not be added to it. I suggest putting it right near the selectionColor function declaration, maybe right after it. > Source/WebCore/rendering/RenderObject.h:274 > public: There should be a blank line between the function and the "public" below it (but that won't matter since we're moving it). > LayoutTests/ChangeLog:4 > + https://bugs.webkit.org/show_bug.cgi?id=38943 > + Need bug title here. Also, not clear why this mentions only one of the two bugs that are mentioned in the other change log. > LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:3 > + ::selection { background-color: rgba(63, 128, 33, 0.95); color: yellow; } Why does the green have a bit of alpha in it? It seems to complicate the test without adding value. Why not just "green"? > LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:7 > +<input id="inputText" type="text" value="Hello" style="border: 5px solid; > + width:100px; font-size: 16px; font-family:sans-serif; > + padding: 0; margin: 0; outline:none;"><br> Why the inconsistent formatting with spaces after some colons and not others? Also, I think it would be easier to read the test if the entire style attribute was on a single line even if the line got a little long. We don’t try to wrap everything to 80 columns in the WebKit project. > LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:8 > +<br>The above selected text in the input box should have green background and yellow color. Why the <br>? A better test would say a word or two about what it’s testing rather than simply describing what success looks like. > LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:10 > + window.onload = document.getElementById('inputText').select(); This is an unusual way to write the test. Why doesn’t this call select immediately? Is there some reason to wait for a load event?
Svetlana Redchenko
Comment 6 2014-05-12 01:43:56 PDT
Darin Adler
Comment 7 2014-05-12 10:43:20 PDT
Comment on attachment 231279 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=231279&action=review > Source/WebCore/rendering/RenderObject.cpp:1521 > + if (!node()) This should be: if (isAnonymous()) rather than if (!node())
Svetlana Redchenko
Comment 8 2014-05-12 11:54:52 PDT
Darin Adler
Comment 9 2014-05-12 17:54:12 PDT
Comment on attachment 231262 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=231262&action=review >> LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:3 >> + ::selection { background-color: rgba(63, 128, 33, 0.95); color: yellow; } > > Why does the green have a bit of alpha in it? It seems to complicate the test without adding value. Why not just "green"? This comment is still not addressed in the latest patch. >> LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:8 >> +<br>The above selected text in the input box should have green background and yellow color. > > Why the <br>? > > A better test would say a word or two about what it’s testing rather than simply describing what success looks like. Unfortunately you took my direction too literally. It’s great to also have the test describe what success looks like. I was suggesting including both.
Darin Adler
Comment 10 2014-05-12 17:54:47 PDT
Comment on attachment 231310 [details] Patch This is OK. Would be even better if you addressed the last two comments above.
Svetlana Redchenko
Comment 11 2014-05-13 00:10:10 PDT
(In reply to comment #9) > >> LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:3 > >> + ::selection { background-color: rgba(63, 128, 33, 0.95); color: yellow; } > > > > Why does the green have a bit of alpha in it? It seems to complicate the test without adding value. Why not just "green"? > > This comment is still not addressed in the latest patch. > The reason for that is pixel test - using of alpha equal 1 will fail it.
Svetlana Redchenko
Comment 12 2014-05-13 00:10:56 PDT
Comment on attachment 231262 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=231262&action=review >>> LayoutTests/fast/selectors/input-with-selection-pseudo-element.html:3 >>> + ::selection { background-color: rgba(63, 128, 33, 0.95); color: yellow; } >> >> Why does the green have a bit of alpha in it? It seems to complicate the test without adding value. Why not just "green"? > > This comment is still not addressed in the latest patch. The reason for that is pixel test - using of alpha equal 1 will fail it.
Svetlana Redchenko
Comment 13 2014-05-13 00:23:02 PDT
Svetlana Redchenko
Comment 14 2014-05-15 00:48:21 PDT
Can you take a look at my last patch (#4) and review it? You set "review +" for patch #3, but I made some changes and attached new patch. If it's OK - how to commit it in webkit tree?
Svetlana Redchenko
Comment 15 2014-05-16 13:49:17 PDT
Ping!
Zan Dobersek
Comment 16 2014-05-18 14:10:40 PDT
(In reply to comment #14) > Can you take a look at my last patch (#4) and review it? You set "review +" for patch #3, but I made some changes and attached new patch. If it's OK - how to commit it in webkit tree? CC-ing Darin so he can give this another look.
WebKit Commit Bot
Comment 17 2014-05-18 16:25:47 PDT
Comment on attachment 231362 [details] Patch Clearing flags on attachment: 231362 Committed r169024: <http://trac.webkit.org/changeset/169024>
WebKit Commit Bot
Comment 18 2014-05-18 16:25:51 PDT
All reviewed patches have been landed. Closing bug.
Alexey Proskuryakov
Comment 19 2014-10-13 17:21:51 PDT
This change caused bug 137679.
Note You need to log in before you can comment on or make changes to this bug.