Created attachment 81378 [details] testcase Downstream bug - http://code.google.com/p/chromium/issues/detail?id=71398 See the attached html. It has a simple <select> element which has a display:none on it. It does not have multiple=true on it initially, which is set later programmatically onload. By default single selects as above have a selectedIndex = 0 as per w3c spec. When this select's mutiple attribute is set to true via javascript, it should retain its selectedIndex = 0. So converting that select to multiple select should still output selectedIndex = 0. However this doesn't work as expected in webkit when there is display:none on the select. Webkit outputs -1 while FF, IE, Opera output 0. Removal of the display:none gives consistent behavior among all browsers. So it seems the display style is affecting the selects initial selectedIndex. Also, when the display is none, and selectedIndex is accessed prior to making multiple = true, then it works fine.
Created attachment 84640 [details] Patch This patch changes the behavior of <select> elements with display: none to match the behavior of elements that are displayed.
Comment on attachment 84640 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=84640&action=review engage the tractor beam. > Source/WebCore/ChangeLog:5 > + style.display affecting the initial selectedIndex value of a <select> when it's multiple attribute is set programatically it's -> its > Source/WebCore/html/HTMLSelectElement.cpp:437 > + int oldSelectedIndex = selectedIndex(); Can you add a comment on why we're doing this here? Out of context, the reasoning behind this line is hard to guess.
Created attachment 85089 [details] Patch Made suggested changes, PTAL.
Comment on attachment 85089 [details] Patch excellent!
Comment on attachment 85089 [details] Patch Clearing flags on attachment: 85089 Committed r80808: <http://trac.webkit.org/changeset/80808>