<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>138165</bug_id>
          
          <creation_ts>2014-10-28 18:15:17 -0700</creation_ts>
          <short_desc>[iOS] iPad: Occasional &lt;select&gt; crashes attempting to scroll to non-existing row 0 in viewWillAppear</short_desc>
          <delta_ts>2014-10-29 11:22:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>buildbot</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>enrica</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1044673</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-28 18:15:17 -0700</bug_when>
    <thetext>iPad: Occasional &lt;select&gt; crashes attempting to scroll to non-existing row 0 in viewWillAppear

&lt;Error&gt; *** Terminating app due to uncaught exception &apos;NSRangeException&apos;, reason: &apos;-[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:]: row (0) beyond bounds (0) for section (0).&apos;

Under: -[WKSelectTableViewController viewWillAppear:]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044674</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-28 18:15:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/18546075&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044675</commentid>
    <comment_count>2</comment_count>
      <attachid>240586</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-28 18:20:01 -0700</bug_when>
    <thetext>Created attachment 240586
[PATCH] Proposed Fix

Tested with many different &lt;select&gt;s. This still properly scrolls to the selected option in a &lt;select&gt; when displaying the table. I was unable to encounter a case that would have caused the original exception/crash though. Auditing the code I am not sure how it would be possible either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044686</commentid>
    <comment_count>3</comment_count>
      <attachid>240586</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-10-28 20:27:01 -0700</bug_when>
    <thetext>Comment on attachment 240586
[PATCH] Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=240586&amp;action=review

r=me.  Did you try using JavaScript to mutate the &lt;select&gt; element when trying to change it?  We now fire on change events, right?  Do we allow JavaScript to run while the wheel-of-time is up?

&gt; Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:147
&gt; +    if (_singleSelectionIndex != NSNotFound &amp;&amp; _singleSelectionSection &lt; (NSUInteger)[self.tableView numberOfSections] &amp;&amp; _singleSelectionIndex &lt; (NSUInteger)[self.tableView numberOfRowsInSection:_singleSelectionSection]) {

This would read better if new test conditions were pulled out into their own descriptively named BOOL variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044786</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-29 10:57:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 240586 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240586&amp;action=review
&gt; 
&gt; r=me.  Did you try using JavaScript to mutate the &lt;select&gt; element when
&gt; trying to change it?  We now fire on change events, right?  Do we allow
&gt; JavaScript to run while the wheel-of-time is up?

I did test this as much as I could. The UI gets the list once, never updates it (even if JavaScript modifies the &lt;select&gt; in the background) and this scroll-to within the select is only within the list of items we&apos;ve already gotten.


&gt; &gt; Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:147
&gt; &gt; +    if (_singleSelectionIndex != NSNotFound &amp;&amp; _singleSelectionSection &lt; (NSUInteger)[self.tableView numberOfSections] &amp;&amp; _singleSelectionIndex &lt; (NSUInteger)[self.tableView numberOfRowsInSection:_singleSelectionSection]) {
&gt; 
&gt; This would read better if new test conditions were pulled out into their own
&gt; descriptively named BOOL variables.

Each condition builds off of the previous condition. I don&apos;t think we should run any of the later ones if an earlier one failed. I may restructure with early returns then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044788</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-10-29 11:22:51 -0700</bug_when>
    <thetext>https://trac.webkit.org/r175334</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240586</attachid>
            <date>2014-10-28 18:20:01 -0700</date>
            <delta_ts>2014-10-28 20:27:01 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>scroll-to-row.patch</filename>
            <type>text/plain</type>
            <size>2254</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiNmEyOTQ4Li42MDEwN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTQtMTAtMjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbaU9TXSBpUGFkOiBPY2Nhc2lvbmFsIDxzZWxlY3Q+IGNyYXNoZXMgYXR0ZW1wdGlu
ZyB0byBzY3JvbGwgdG8gbm9uLWV4aXN0aW5nIHJvdyAwIGluIHZpZXdXaWxsQXBwZWFyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxNjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgc3Bl
Y3VsYXRpdmUgZml4IGZvciBhIGNyYXNoIGF0dGVtcHRpbmcgdG8gc2Nyb2xsIHRvIGEgcm93IGlu
IGEKKyAgICAgICAgc2VsZWN0IHBpY2tlciBvbiBpUGFkLiBJbiB0aGVzZSBjYXNlcyB3ZSBhcmUg
dHJ5aW5nIHRvIHNjcm9sbCB0byB0aGUgZmlyc3QKKyAgICAgICAgcm93IG9mIHRoZSBmaXJzdCBz
ZWN0aW9uLCBidXQgbm8gc3VjaCByb3cgYXBwZWFycyB0byBleGlzdC4gSSB3YXMgdW5hYmxlCisg
ICAgICAgIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUsIGJ1dCBpZiBpdCBpcyBoYXBwZW5pbmcgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gcHJvdGVjdAorICAgICAgICBzYWZlbHkgcHJvdGVjdCBhZ2FpbnN0
IGNyYXNoaW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQ
b3BvdmVyLm1tOgorICAgICAgICAoLVtXS1NlbGVjdFRhYmxlVmlld0NvbnRyb2xsZXIgdmlld1dp
bGxBcHBlYXI6XSk6CisgICAgICAgIFByb3RlY3QgYWdhaW5zdCB0cnlpbmcgdG8gc2Nyb2xsIHRv
IGEgc2VjdGlvbi9yb3cgdGhhdCBkb2VzIG5vdCBleGlzdAorICAgICAgICBieSBwcmUtY2hlY2tp
bmcgdGhhdCB0aGUgc2VjdGlvbi9yb3cgaXMgdmFsaWQuCisKKzIwMTQtMTAtMjggIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBbaU9TXSBpUGhvbmUgc2hv
dWxkIG5vdCBhbGxvdyBzZWxlY3RpbmcgPG9wdGdyb3VwPiBpbiA8c2VsZWN0IG11bHRpcGxlPgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3OTkxCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2Vs
ZWN0UG9wb3Zlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3Jt
U2VsZWN0UG9wb3Zlci5tbQppbmRleCA2NzkyMGNiLi5jMDYzOWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBvcG92ZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVy
Lm1tCkBAIC0xNDMsOCArMTQzLDggQEAgc3RhdGljIE5TU3RyaW5nICpzdHJpbmdXaXRoV3JpdGlu
Z0RpcmVjdGlvbihOU1N0cmluZyAqc3RyaW5nLCBVSVRleHRXcml0aW5nRGlyZWMKIC0gKHZvaWQp
dmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKIHsKICAgICBbc3VwZXIgdmlld1dpbGxBcHBl
YXI6YW5pbWF0ZWRdOwotICAgIAotICAgIGlmIChfc2luZ2xlU2VsZWN0aW9uSW5kZXggIT0gTlNO
b3RGb3VuZCkgeworCisgICAgaWYgKF9zaW5nbGVTZWxlY3Rpb25JbmRleCAhPSBOU05vdEZvdW5k
ICYmIF9zaW5nbGVTZWxlY3Rpb25TZWN0aW9uIDwgKE5TVUludGVnZXIpW3NlbGYudGFibGVWaWV3
IG51bWJlck9mU2VjdGlvbnNdICYmIF9zaW5nbGVTZWxlY3Rpb25JbmRleCA8IChOU1VJbnRlZ2Vy
KVtzZWxmLnRhYmxlVmlldyBudW1iZXJPZlJvd3NJblNlY3Rpb246X3NpbmdsZVNlbGVjdGlvblNl
Y3Rpb25dKSB7CiAgICAgICAgIE5TSW5kZXhQYXRoICppbmRleFBhdGggPSBbTlNJbmRleFBhdGgg
aW5kZXhQYXRoRm9yUm93Ol9zaW5nbGVTZWxlY3Rpb25JbmRleCBpblNlY3Rpb246X3NpbmdsZVNl
bGVjdGlvblNlY3Rpb25dOwogICAgICAgICBbc2VsZi50YWJsZVZpZXcgc2Nyb2xsVG9Sb3dBdElu
ZGV4UGF0aDppbmRleFBhdGggYXRTY3JvbGxQb3NpdGlvbjpVSVRhYmxlVmlld1Njcm9sbFBvc2l0
aW9uTWlkZGxlIGFuaW1hdGVkOk5PXTsKICAgICB9Cg==
</data>
<flag name="review"
          id="265360"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="265361"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>