<?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>157440</bug_id>
          
          <creation_ts>2016-05-06 17:39:21 -0700</creation_ts>
          <short_desc>Download progress on attachment elements sometimes exceeds element bounds</short_desc>
          <delta_ts>2016-05-09 11:05:03 -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>New Bugs</component>
          <version>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1190845</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-06 17:39:21 -0700</bug_when>
    <thetext>Download progress on attachment elements sometimes exceeds element bounds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190846</commentid>
    <comment_count>1</comment_count>
      <attachid>278298</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-06 17:39:52 -0700</bug_when>
    <thetext>Created attachment 278298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190847</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-06 17:43:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/25245440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190964</commentid>
    <comment_count>3</comment_count>
      <attachid>278298</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-07 12:47:41 -0700</bug_when>
    <thetext>Comment on attachment 278298
Patch

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

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1400
&gt; +    void buildTitleLines(const RenderAttachment&amp;, unsigned maximumLines);

Not a great argument name; its name is &quot;maximum lines&quot;, but its value is a maximum number of lines or a count of lines. I find that slight cognitive dissonance a little annoying.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1449
&gt; +    for (; lineIndex &lt; std::min(maximumLines - 1, static_cast&lt;unsigned&gt;(lineCount)); ++lineIndex) {

Do have some guarantee that maximumLines is not zero?

Looks like this fails to compile on iOS because CFIndex is a signed type. So should probably write something more like this:

    std::min&lt;CFIndex&gt;(maximumLines - 1, lineCount)

Maybe also compute this limit outside the loop?

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1451
&gt;          CTLineRef line = (CTLineRef)CFArrayGetValueAtIndex(ctLines, lineIndex);
&gt;          addLine(line);

Better without the local variable I think.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1576
&gt; +    BOOL forceSingleLineTitle = !action.isEmpty() || !subtitle.isEmpty() || hasProgress;

bool, not BOOL, please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191199</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-09 09:52:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 278298 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278298&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:1400
&gt; &gt; +    void buildTitleLines(const RenderAttachment&amp;, unsigned maximumLines);
&gt; 
&gt; Not a great argument name; its name is &quot;maximum lines&quot;, but its value is a
&gt; maximum number of lines or a count of lines. I find that slight cognitive
&gt; dissonance a little annoying.

Will rename!

&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:1449
&gt; &gt; +    for (; lineIndex &lt; std::min(maximumLines - 1, static_cast&lt;unsigned&gt;(lineCount)); ++lineIndex) {
&gt; 
&gt; Do have some guarantee that maximumLines is not zero?

We do, at the callsite; it&apos;s only ever 1 or 2.

&gt; Looks like this fails to compile on iOS because CFIndex is a signed type. So
&gt; should probably write something more like this:
&gt; 
&gt;     std::min&lt;CFIndex&gt;(maximumLines - 1, lineCount)

OK.

&gt; Maybe also compute this limit outside the loop?

Sure.

&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:1451
&gt; &gt;          CTLineRef line = (CTLineRef)CFArrayGetValueAtIndex(ctLines, lineIndex);
&gt; &gt;          addLine(line);
&gt; 
&gt; Better without the local variable I think.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:1576
&gt; &gt; +    BOOL forceSingleLineTitle = !action.isEmpty() || !subtitle.isEmpty() || hasProgress;
&gt; 
&gt; bool, not BOOL, please

I&apos;ve been writing too much ObjC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191220</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-09 11:05:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/200582</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278298</attachid>
            <date>2016-05-06 17:39:52 -0700</date>
            <delta_ts>2016-05-07 12:47:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157440-20160506174034.patch</filename>
            <type>text/plain</type>
            <size>5337</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM0NDM2MzFmZjYxZDFj
ZjdlYzdlNGM4ZTE2OGRiMTM5M2I2MTU1Yy4uMWE3MWE2ZGY5ZWY1NThlNmJjNDg3ZmQ4YjJmOTk5
YzY3MDRhNjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTA1LTA2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIERvd25sb2FkIHBy
b2dyZXNzIG9uIGF0dGFjaG1lbnQgZWxlbWVudHMgc29tZXRpbWVzIGV4Y2VlZHMgZWxlbWVudCBi
b3VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NzQ0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjUyNDU0NDA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2YgdmVyeSBsYXJn
ZSBkeW5hbWljIHR5cGUgc2l6ZXMsIHdlIGNhbiBvdmVyZmxvdyB0aGUKKyAgICAgICAgYm91bmRz
IG9mIHRoZSBhdHRhY2htZW50LiBJdCB0dXJucyBvdXQgdGhhdCB3ZSB1c2VkIHRvIGxpbWl0IHRv
IG9uZQorICAgICAgICBsaW5lIGluIG1hbnkgY2FzZXMgYW55d2F5LCBzbyBvbmx5IHdyYXAgaWYg
d2UgaGF2ZSBvbmx5IGEgdGl0bGUgYW5kL29yIGljb24uCisgICAgICAgIFRoaXMgbG9va3MgYmV0
dGVyIHdoZW4geW91IGhhdmUgbWFueSBvZiB0aGUgb3RoZXIgZWxlbWVudHMgZXZlbiBpbgorICAg
ICAgICBub24tbGFyZ2UtdHlwZSBtb2Rlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvOjpidWlsZFRpdGxl
TGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm86OkF0dGFjaG1lbnRJbmZv
KToKKyAgICAgICAgTGltaXQgdGhlIHRpdGxlIHRvIGEgc2luZ2xlIGxpbmUgaWYgd2UgaGF2ZSBh
bnl0aGluZworICAgICAgICBvdGhlciB0aGFuIGEgdGl0bGUgYW5kIGljb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OmF0dGFjaG1lbnRCb3JkZXJQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QXR0YWNobWVudEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRBdHRhY2htZW50KToKKyAgICAgICAgQ2xpcCB0byB0aGUgYm9yZGVyLCBzbyB0aGF0IGV2ZW4g
aWYgc29tZWhvdyB3ZSBwYWludCBvdXRzaWRlIG9mCisgICAgICAgIHRoZSBib3VuZHMsIHdlIGRv
bid0IHBhaW50IG92ZXIgb3RoZXIgcGFydHMgb2YgdGhlIHBhZ2UuCisKKzIwMTYtMDUtMDYgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgPGF0dGFjaG1l
bnQ+IGVsZW1lbnQgc2hvdWxkIHVuZGVyc3RhbmQgVVRJcwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NDI1CiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTU4NTQwMT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpp
bmRleCBkMjAzZjAxZmI3NzM4OTgyMzYxMjBkNzZhNDI2NWRmYjViZTgwYzhlLi43MmEwNzg2ZWJh
Mjc4YjEyNzljYWFlYTRhNDU5YWJhOGM5ZjNiNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xMzk3LDcgKzEzOTcsNyBAQCBzdHJ1Y3QgQXR0YWNo
bWVudEluZm8gewogICAgIENHRmxvYXQgY29udGVudFlPcmlnaW4geyAwIH07CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBidWlsZFRpdGxlTGluZXMoY29uc3QgUmVuZGVyQXR0YWNobWVudCYpOworICAg
IHZvaWQgYnVpbGRUaXRsZUxpbmVzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmLCB1bnNpZ25lZCBt
YXhpbXVtTGluZXMpOwogICAgIHZvaWQgYnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYsIENU
Rm9udFJlZiwgVUlDb2xvciAqKTsKIAogICAgIHZvaWQgYWRkTGluZShDVExpbmVSZWYpOwpAQCAt
MTQxOCw3ICsxNDE4LDcgQEAgdm9pZCBBdHRhY2htZW50SW5mbzo6YWRkTGluZShDVExpbmVSZWYg
bGluZSkKICAgICBsaW5lcy5hcHBlbmQobGFiZWxMaW5lKTsKIH0KIAotdm9pZCBBdHRhY2htZW50
SW5mbzo6YnVpbGRUaXRsZUxpbmVzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQp
Cit2b2lkIEF0dGFjaG1lbnRJbmZvOjpidWlsZFRpdGxlTGluZXMoY29uc3QgUmVuZGVyQXR0YWNo
bWVudCYgYXR0YWNobWVudCwgdW5zaWduZWQgbWF4aW11bUxpbmVzKQogewogICAgIFJldGFpblB0
cjxDVEZvbnRSZWY+IGZvbnQgPSBhdHRhY2htZW50VGl0bGVGb250KCk7CiAKQEAgLTE0NDQsOSAr
MTQ0NCw5IEBAIHZvaWQgQXR0YWNobWVudEluZm86OmJ1aWxkVGl0bGVMaW5lcyhjb25zdCBSZW5k
ZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogICAgIGlmICghbGluZUNvdW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBMYXkgb3V0IGFuZCByZWNvcmQgdGhlIGZpcnN0IChhdHRhY2htZW50
VGl0bGVNYXhpbXVtTGluZUNvdW50IC0gMSkgbGluZXMuCisgICAgLy8gTGF5IG91dCBhbmQgcmVj
b3JkIHRoZSBmaXJzdCAobWF4aW11bUxpbmVzIC0gMSkgbGluZXMuCiAgICAgQ0ZJbmRleCBsaW5l
SW5kZXggPSAwOwotICAgIGZvciAoOyBsaW5lSW5kZXggPCBzdGQ6Om1pbihhdHRhY2htZW50VGl0
bGVNYXhpbXVtTGluZUNvdW50IC0gMSwgbGluZUNvdW50KTsgKytsaW5lSW5kZXgpIHsKKyAgICBm
b3IgKDsgbGluZUluZGV4IDwgc3RkOjptaW4obWF4aW11bUxpbmVzIC0gMSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGxpbmVDb3VudCkpOyArK2xpbmVJbmRleCkgewogICAgICAgICBDVExpbmVSZWYg
bGluZSA9IChDVExpbmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5lSW5k
ZXgpOwogICAgICAgICBhZGRMaW5lKGxpbmUpOwogICAgIH0KQEAgLTE0NTQsNyArMTQ1NCw3IEBA
IHZvaWQgQXR0YWNobWVudEluZm86OmJ1aWxkVGl0bGVMaW5lcyhjb25zdCBSZW5kZXJBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQogICAgIGlmIChsaW5lSW5kZXggPT0gbGluZUNvdW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBXZSBoYWQgdGV4dCB0aGF0IGRpZG4ndCBmaXQgaW4gdGhlIGZp
cnN0IChhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50IC0gMSkgbGluZXMuCisgICAgLy8g
V2UgaGFkIHRleHQgdGhhdCBkaWRuJ3QgZml0IGluIHRoZSBmaXJzdCAobWF4aW11bUxpbmVzIC0g
MSkgbGluZXMuCiAgICAgLy8gQ29tYmluZSBpdCBpbnRvIG9uZSBsYXN0IGxpbmUsIGFuZCBjZW50
ZXItdHJ1bmNhdGUgaXQuCiAgICAgQ1RMaW5lUmVmIGZpcnN0UmVtYWluaW5nTGluZSA9IChDVExp
bmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5lSW5kZXgpOwogICAgIENG
SW5kZXggcmVtYWluaW5nUmFuZ2VTdGFydCA9IENUTGluZUdldFN0cmluZ1JhbmdlKGZpcnN0UmVt
YWluaW5nTGluZSkubG9jYXRpb247CkBAIC0xNTczLDcgKzE1NzMsOCBAQCBBdHRhY2htZW50SW5m
bzo6QXR0YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAg
ICB9IGVsc2UKICAgICAgICAgYnVpbGRTaW5nbGVMaW5lKGFjdGlvbiwgYXR0YWNobWVudEFjdGlv
bkZvbnQoKS5nZXQoKSwgYXR0YWNobWVudEFjdGlvbkNvbG9yKGF0dGFjaG1lbnQpKTsKIAotICAg
IGJ1aWxkVGl0bGVMaW5lcyhhdHRhY2htZW50KTsKKyAgICBCT09MIGZvcmNlU2luZ2xlTGluZVRp
dGxlID0gIWFjdGlvbi5pc0VtcHR5KCkgfHwgIXN1YnRpdGxlLmlzRW1wdHkoKSB8fCBoYXNQcm9n
cmVzczsKKyAgICBidWlsZFRpdGxlTGluZXMoYXR0YWNobWVudCwgZm9yY2VTaW5nbGVMaW5lVGl0
bGUgPyAxIDogYXR0YWNobWVudFRpdGxlTWF4aW11bUxpbmVDb3VudCk7CiAgICAgYnVpbGRTaW5n
bGVMaW5lKHN1YnRpdGxlLCBhdHRhY2htZW50U3VidGl0bGVGb250KCkuZ2V0KCksIGF0dGFjaG1l
bnRTdWJ0aXRsZUNvbG9yKCkpOwogCiAgICAgaWYgKCFsaW5lcy5pc0VtcHR5KCkpIHsKQEAgLTE2
NDMsMTAgKzE2NDQsMTUgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50SW5mbyYgaW4KICAgICBjb250ZXh0LmZp
bGxQYXRoKHByb2dyZXNzUGF0aCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEJv
cmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3Rh
dGljIFBhdGggYXR0YWNobWVudEJvcmRlclBhdGgoQXR0YWNobWVudEluZm8mIGluZm8pCiB7CiAg
ICAgUGF0aCBib3JkZXJQYXRoOwogICAgIGJvcmRlclBhdGguYWRkUm91bmRlZFJlY3QoaW5mby5h
dHRhY2htZW50UmVjdCwgRmxvYXRTaXplKGF0dGFjaG1lbnRCb3JkZXJSYWRpdXMsIGF0dGFjaG1l
bnRCb3JkZXJSYWRpdXMpKTsKKyAgICByZXR1cm4gYm9yZGVyUGF0aDsKK30KKworc3RhdGljIHZv
aWQgcGFpbnRBdHRhY2htZW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGF0aCYg
Ym9yZGVyUGF0aCkKK3sKICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGF0dGFjaG1lbnRCb3Jk
ZXJDb2xvcigpKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKICAgICBjb250
ZXh0LnN0cm9rZVBhdGgoYm9yZGVyUGF0aCk7CkBAIC0xNjY2LDcgKzE2NzIsOSBAQCBib29sIFJl
bmRlclRoZW1lSU9TOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29uc3QgUGFpbnRJbgogCiAgICAgY29udGV4dC50cmFuc2xhdGUodG9GbG9hdFNpemUocGFp
bnRSZWN0LmxvY2F0aW9uKCkpKTsKIAotICAgIHBhaW50QXR0YWNobWVudEJvcmRlcihjb250ZXh0
LCBpbmZvKTsKKyAgICBQYXRoIGJvcmRlclBhdGggPSBhdHRhY2htZW50Qm9yZGVyUGF0aChpbmZv
KTsKKyAgICBwYWludEF0dGFjaG1lbnRCb3JkZXIoY29udGV4dCwgYm9yZGVyUGF0aCk7CisgICAg
Y29udGV4dC5jbGlwUGF0aChib3JkZXJQYXRoKTsKIAogICAgIGNvbnRleHQudHJhbnNsYXRlKEZs
b2F0U2l6ZSgwLCBpbmZvLmNvbnRlbnRZT3JpZ2luKSk7CiAK
</data>
<flag name="review"
          id="302415"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>