Bug 199606

Summary: Make tabIndex IDL attribute reflect its content attribute
Product: WebKit Reporter: Ryosuke Niwa <rniwa>
Component: DOMAssignee: Ryosuke Niwa <rniwa>
Status: RESOLVED FIXED    
Severity: Normal CC: cdumez, cfleizach, cmarcelo, dbates, d, esprehn+autocc, ews-watchlist, gyuyoung.kim, jcraig, kangil.han, rniwa, webkit-bug-importer, wenson_hsieh
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=201294
Bug Depends on: 200806, 200834, 200943, 200944, 200997    
Bug Blocks:    
Attachments:
Description Flags
WIP
none
Archive of layout-test-results from ews100 for mac-highsierra
none
Archive of layout-test-results from ews117 for mac-highsierra
none
Archive of layout-test-results from ews213 for win-future
none
Patch
none
Archive of layout-test-results from ews212 for win-future
none
Updated for trunk
none
Rebaelined more tests
none
Rebaelined more tests
ews-watchlist: commit-queue-
Archive of layout-test-results from ews213 for win-future
none
Fix svg/custom/tabindex-order.html on Windows cdumez: review+

Attachments
WIP (21.44 KB, patch)
2019-08-15 16:45 PDT, Ryosuke Niwa
no flags
Archive of layout-test-results from ews100 for mac-highsierra (3.41 MB, application/zip)
2019-08-15 17:57 PDT, EWS Watchlist
no flags
Archive of layout-test-results from ews117 for mac-highsierra (3.19 MB, application/zip)
2019-08-15 19:19 PDT, EWS Watchlist
no flags
Archive of layout-test-results from ews213 for win-future (13.44 MB, application/zip)
2019-08-15 20:01 PDT, EWS Watchlist
no flags
Patch (28.43 KB, patch)
2019-08-21 20:07 PDT, Ryosuke Niwa
no flags
Archive of layout-test-results from ews212 for win-future (13.79 MB, application/zip)
2019-08-21 21:27 PDT, EWS Watchlist
no flags
Updated for trunk (28.60 KB, patch)
2019-08-21 21:40 PDT, Ryosuke Niwa
no flags
Rebaelined more tests (32.90 KB, patch)
2019-08-21 22:07 PDT, Ryosuke Niwa
no flags
Rebaelined more tests (33.42 KB, patch)
2019-08-21 22:10 PDT, Ryosuke Niwa
ews-watchlist: commit-queue-
Archive of layout-test-results from ews213 for win-future (13.86 MB, application/zip)
2019-08-21 23:41 PDT, EWS Watchlist
no flags
Fix svg/custom/tabindex-order.html on Windows (35.32 KB, patch)
2019-08-22 16:30 PDT, Ryosuke Niwa
cdumez: review+
Radar WebKit Bug Importer
Comment 1 2019-07-08 19:43:28 PDT
Domenic Denicola
Comment 2 2019-07-09 11:59:23 PDT
The spec PR was merged, but perhaps a bit prematurely. A follow up is being done at https://github.com/whatwg/html/pull/4759. According to the latest test results at https://github.com/web-platform-tests/wpt/pull/17657 WebKit is already very compliant in terms of observable behavior. The only failing tests as of this time are around summary elements that are not first-summary-children of details elements, and how they aren't respecting explicitly-set tabindex="" attribute values. That said, there may be opportunities for code simplification here, similar to in Blink. https://bugs.chromium.org/p/chromium/issues/detail?id=982350 is the counterpart Blink bug
Ryosuke Niwa
Comment 3 2019-08-15 16:45:26 PDT
EWS Watchlist
Comment 4 2019-08-15 17:57:14 PDT
Comment on attachment 376444 [details] WIP Attachment 376444 [details] did not pass mac-ews (mac): Output: https://webkit-queues.webkit.org/results/12920931 New failing tests: imported/w3c/web-platform-tests/html/dom/reflection-misc.html svg/custom/tabindex-order.html
EWS Watchlist
Comment 5 2019-08-15 17:57:16 PDT
Created attachment 376456 [details] Archive of layout-test-results from ews100 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-highsierra Platform: Mac OS X 10.13.6
EWS Watchlist
Comment 6 2019-08-15 19:19:34 PDT
Comment on attachment 376444 [details] WIP Attachment 376444 [details] did not pass mac-debug-ews (mac): Output: https://webkit-queues.webkit.org/results/12921299 New failing tests: svg/custom/tabindex-order.html
EWS Watchlist
Comment 7 2019-08-15 19:19:36 PDT
Created attachment 376466 [details] Archive of layout-test-results from ews117 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-highsierra Platform: Mac OS X 10.13.6
EWS Watchlist
Comment 8 2019-08-15 20:01:19 PDT
Comment on attachment 376444 [details] WIP Attachment 376444 [details] did not pass win-ews (win): Output: https://webkit-queues.webkit.org/results/12921617 New failing tests: svg/custom/tabindex-order.html
EWS Watchlist
Comment 9 2019-08-15 20:01:22 PDT
Created attachment 376469 [details] Archive of layout-test-results from ews213 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews213 Port: win-future Platform: CYGWIN_NT-10.0-17763-3.0.5-338.x86_64-x86_64-64bit
Ryosuke Niwa
Comment 10 2019-08-21 20:07:04 PDT
EWS Watchlist
Comment 11 2019-08-21 21:27:36 PDT
Comment on attachment 376970 [details] Patch Attachment 376970 [details] did not pass win-ews (win): Output: https://webkit-queues.webkit.org/results/12955051 New failing tests: fast/dom/tabindex-defaults.html svg/custom/tabindex-order.html
EWS Watchlist
Comment 12 2019-08-21 21:27:38 PDT
Created attachment 376980 [details] Archive of layout-test-results from ews212 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews212 Port: win-future Platform: CYGWIN_NT-10.0-17763-3.0.5-338.x86_64-x86_64-64bit
Ryosuke Niwa
Comment 13 2019-08-21 21:32:33 PDT
Hm... maybe Windows EWS didn't have https://trac.webkit.org/changeset/248983/webkit?
Ryosuke Niwa
Comment 14 2019-08-21 21:40:01 PDT
Created attachment 376981 [details] Updated for trunk
Ryosuke Niwa
Comment 15 2019-08-21 22:07:18 PDT
Created attachment 376983 [details] Rebaelined more tests
Ryosuke Niwa
Comment 16 2019-08-21 22:10:49 PDT
Created attachment 376984 [details] Rebaelined more tests
EWS Watchlist
Comment 17 2019-08-21 23:41:12 PDT
Comment on attachment 376984 [details] Rebaelined more tests Attachment 376984 [details] did not pass win-ews (win): Output: https://webkit-queues.webkit.org/results/12955418 New failing tests: svg/custom/tabindex-order.html
EWS Watchlist
Comment 18 2019-08-21 23:41:14 PDT
Created attachment 376992 [details] Archive of layout-test-results from ews213 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews213 Port: win-future Platform: CYGWIN_NT-10.0-17763-3.0.5-338.x86_64-x86_64-64bit
Ryosuke Niwa
Comment 19 2019-08-22 00:10:06 PDT
Hm... it looks like I'd have to tweak the test further.
Ryosuke Niwa
Comment 20 2019-08-22 16:30:15 PDT
Created attachment 377071 [details] Fix svg/custom/tabindex-order.html on Windows
Ryosuke Niwa
Comment 21 2019-08-23 19:27:14 PDT
Ping reviewers.
Ryosuke Niwa
Comment 22 2019-08-28 08:03:04 PDT
Ping?
Chris Dumez
Comment 23 2019-08-28 08:19:46 PDT
Comment on attachment 377071 [details] Fix svg/custom/tabindex-order.html on Windows View in context: https://bugs.webkit.org/attachment.cgi?id=377071&action=review r=me with nit. > Source/WebCore/dom/Element.cpp:270 > + auto tabIndex = tabIndexSetExplicitly(); nit: Could be: return tabIndexSetExplicitly().valueOr(defaultTabIndex());
Ryosuke Niwa
Comment 24 2019-08-28 08:22:06 PDT
Comment on attachment 377071 [details] Fix svg/custom/tabindex-order.html on Windows View in context: https://bugs.webkit.org/attachment.cgi?id=377071&action=review >> Source/WebCore/dom/Element.cpp:270 >> + auto tabIndex = tabIndexSetExplicitly(); > > nit: Could be: > return tabIndexSetExplicitly().valueOr(defaultTabIndex()); Oh, I specifically didn't do that to avoid calling defaultTabIndex(), which is a virtual function.
Ryosuke Niwa
Comment 25 2019-08-28 08:22:36 PDT
Maybe we should add a comment next to it explaining the reason we don't use valueOr(~)?
Chris Dumez
Comment 26 2019-08-28 08:35:41 PDT
Comment on attachment 377071 [details] Fix svg/custom/tabindex-order.html on Windows View in context: https://bugs.webkit.org/attachment.cgi?id=377071&action=review >>> Source/WebCore/dom/Element.cpp:270 >>> + auto tabIndex = tabIndexSetExplicitly(); >> >> nit: Could be: >> return tabIndexSetExplicitly().valueOr(defaultTabIndex()); > > Oh, I specifically didn't do that to avoid calling defaultTabIndex(), which is a virtual function. return tabIndexSetExplicitly().valueOrCompute([] { return defaultTabIndex(); }); :D
Chris Dumez
Comment 27 2019-08-28 08:36:15 PDT
(In reply to Ryosuke Niwa from comment #25) > Maybe we should add a comment next to it explaining the reason we don't use > valueOr(~)? We added valueOrCompute() specifically for this already, let's use it.
Chris Dumez
Comment 28 2019-08-28 08:38:26 PDT
(In reply to Chris Dumez from comment #26) > Comment on attachment 377071 [details] > Fix svg/custom/tabindex-order.html on Windows > > View in context: > https://bugs.webkit.org/attachment.cgi?id=377071&action=review > > >>> Source/WebCore/dom/Element.cpp:270 > >>> + auto tabIndex = tabIndexSetExplicitly(); > >> > >> nit: Could be: > >> return tabIndexSetExplicitly().valueOr(defaultTabIndex()); > > > > Oh, I specifically didn't do that to avoid calling defaultTabIndex(), which is a virtual function. > > return tabIndexSetExplicitly().valueOrCompute([] { return defaultTabIndex(); > }); > > :D Actually, it looks like the syntax is like so: return valueOrCompute(tabIndexSetExplicitly(), [] { return defaultTabIndex(); });
Ryosuke Niwa
Comment 29 2019-08-28 08:39:31 PDT
(In reply to Chris Dumez from comment #28) > (In reply to Chris Dumez from comment #26) > > Comment on attachment 377071 [details] > > Fix svg/custom/tabindex-order.html on Windows > > > > View in context: > > https://bugs.webkit.org/attachment.cgi?id=377071&action=review > > > > >>> Source/WebCore/dom/Element.cpp:270 > > >>> + auto tabIndex = tabIndexSetExplicitly(); > > >> > > >> nit: Could be: > > >> return tabIndexSetExplicitly().valueOr(defaultTabIndex()); > > > > > > Oh, I specifically didn't do that to avoid calling defaultTabIndex(), which is a virtual function. > > > > return tabIndexSetExplicitly().valueOrCompute([] { return defaultTabIndex(); > > }); > > > > :D > > Actually, it looks like the syntax is like so: > return valueOrCompute(tabIndexSetExplicitly(), [] { return > defaultTabIndex(); }); Oh neat!
Chris Dumez
Comment 30 2019-08-28 08:40:24 PDT
(In reply to Ryosuke Niwa from comment #29) > (In reply to Chris Dumez from comment #28) > > (In reply to Chris Dumez from comment #26) > > > Comment on attachment 377071 [details] > > > Fix svg/custom/tabindex-order.html on Windows > > > > > > View in context: > > > https://bugs.webkit.org/attachment.cgi?id=377071&action=review > > > > > > >>> Source/WebCore/dom/Element.cpp:270 > > > >>> + auto tabIndex = tabIndexSetExplicitly(); > > > >> > > > >> nit: Could be: > > > >> return tabIndexSetExplicitly().valueOr(defaultTabIndex()); > > > > > > > > Oh, I specifically didn't do that to avoid calling defaultTabIndex(), which is a virtual function. > > > > > > return tabIndexSetExplicitly().valueOrCompute([] { return defaultTabIndex(); > > > }); > > > > > > :D > > > > Actually, it looks like the syntax is like so: > > return valueOrCompute(tabIndexSetExplicitly(), [] { return > > defaultTabIndex(); }); > > Oh neat! Good catch on the virtual function call, I failed to notice :)
Ryosuke Niwa
Comment 31 2019-08-28 20:14:26 PDT
Alexey Proskuryakov
Comment 32 2019-08-29 11:41:21 PDT
This change made svg/custom/tabindex-order.html very flaky, slowing down EWS and commit queue.
Ryosuke Niwa
Comment 33 2019-08-29 12:23:31 PDT
(In reply to Alexey Proskuryakov from comment #32) > This change made svg/custom/tabindex-order.html very flaky, slowing down EWS > and commit queue. Hm... weird. Let me look into that.
Note You need to log in before you can comment on or make changes to this bug.