<?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>52916</bug_id>
          
          <creation_ts>2011-01-21 13:47:30 -0800</creation_ts>
          <short_desc>Expose &quot;suggested filename&quot; for a resource based on its resource response.</short_desc>
          <delta_ts>2011-06-18 11:53:18 -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>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338307</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-21 13:47:30 -0800</bug_when>
    <thetext>Expose &quot;suggested filename&quot; for a resource based on its resource response.

In radar as &lt;rdar://problem/8894125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338309</commentid>
    <comment_count>1</comment_count>
      <attachid>79784</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-21 13:49:25 -0800</bug_when>
    <thetext>Created attachment 79784
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338312</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 13:52:40 -0800</bug_when>
    <thetext>Attachment 79784 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/WebFrame.h:112:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338313</commentid>
    <comment_count>3</comment_count>
      <attachid>79784</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 13:54:01 -0800</bug_when>
    <thetext>Comment on attachment 79784
Patch v1

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:206
&gt; +WKStringRef WKBundleFrameCopySuggestedFilenameForResourceURL(WKBundleFrameRef frameRef, WKURLRef urlRef)

Maybe &quot;...ForSubresourceWithURL&quot; would be more accurate?

Are the &quot;Ref&quot; suffixes really needed on the parameters?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:208
&gt; +    return toCopiedAPI(toImpl(frameRef)-&gt;suggestedFilenameForResourceURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)-&gt;string())));

So we don&apos;t get to assume that all strings from WKURLRefs can be used with KURL&apos;s ParsedURLStringTag constructor?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.h:62
&gt; +WK_EXPORT WKStringRef WKBundleFrameCopySuggestedFilenameForResourceURL(WKBundleFrameRef page, WKURLRef url);

&quot;page&quot; seems wrong.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:538
&gt; +    if (DocumentLoader* loader = m_coreFrame-&gt;loader()-&gt;documentLoader()) {
&gt; +        if (RefPtr&lt;ArchiveResource&gt; subresource = loader-&gt;subresource(url))
&gt; +            return subresource-&gt;response().suggestedFilename();
&gt; +    }

I think early returns would be nicer.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.h:112
&gt; +    String suggestedFilenameForResourceURL(const WebCore::KURL&amp; url) const;

No need for &quot;url&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338317</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-01-21 13:56:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; So we don&apos;t get to assume that all strings from WKURLRefs can be used with KURL&apos;s ParsedURLStringTag constructor?

No. See for example &lt;http://trac.webkit.org/changeset/75355&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338318</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-21 13:57:36 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 79784 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79784&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:206
&gt; &gt; +WKStringRef WKBundleFrameCopySuggestedFilenameForResourceURL(WKBundleFrameRef frameRef, WKURLRef urlRef)
&gt; 
&gt; Maybe &quot;...ForSubresourceWithURL&quot; would be more accurate?

I&apos;ll go with &quot;ForResourceWithURL&quot;, because this would work on main resources, as well.
&gt; 
&gt; Are the &quot;Ref&quot; suffixes really needed on the parameters?

Talk to Sam and Anders.  :)

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:208
&gt; &gt; +    return toCopiedAPI(toImpl(frameRef)-&gt;suggestedFilenameForResourceURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)-&gt;string())));
&gt; 
&gt; So we don&apos;t get to assume that all strings from WKURLRefs can be used with KURL&apos;s ParsedURLStringTag constructor?

Correct, we don&apos;t.  Sad, but true.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.h:62
&gt; &gt; +WK_EXPORT WKStringRef WKBundleFrameCopySuggestedFilenameForResourceURL(WKBundleFrameRef page, WKURLRef url);
&gt; 
&gt; &quot;page&quot; seems wrong.

lol.  yup.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:538
&gt; &gt; +    if (DocumentLoader* loader = m_coreFrame-&gt;loader()-&gt;documentLoader()) {
&gt; &gt; +        if (RefPtr&lt;ArchiveResource&gt; subresource = loader-&gt;subresource(url))
&gt; &gt; +            return subresource-&gt;response().suggestedFilename();
&gt; &gt; +    }
&gt; 
&gt; I think early returns would be nicer.

Sure.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebFrame.h:112
&gt; &gt; +    String suggestedFilenameForResourceURL(const WebCore::KURL&amp; url) const;
&gt; 
&gt; No need for &quot;url&quot; here.

Style bot got me already.

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79784</attachid>
            <date>2011-01-21 13:49:25 -0800</date>
            <delta_ts>2011-01-21 13:54:01 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4219</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MzkwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDEtMjEgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODk0MTI1PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTE2CisgICAgICAgIEV4cG9zZSAic3Vn
Z2VzdGVkIGZpbGVuYW1lIiBmb3IgYSByZXNvdXJjZSBiYXNlZCBvbiBpdHMgcmVzb3VyY2UgcmVz
cG9uc2UuCisKKyAgICAgICAgQVBJIHBpZWNlczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFt
ZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlVVJMKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaDoKKyAgICAgICAgCisgICAg
ICAgIEltcGxlbWVudGF0aW9uOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJl
c291cmNlVVJMKTogU2VlIGlmIHRoZSBEb2N1bWVudExvYWRlciBoYXMKKyAgICAgICAgICBhIHJl
c291cmNlIGZvciB0aGlzIFVSTCBhbmQsIGlmIHNvLCByZXR1cm4gdGhlIHJlc3BvbnNlJ3Mgc3Vn
Z2VzdGVkIGZpbGVuYW1lLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
OgorCiAyMDExLTAxLTIxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
RnJhbWUuY3BwCShyZXZpc2lvbiA3NjI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwMiwzICsyMDIsOCBAQCBXS19FWFBPUlQgV0tTaXplIFdLQnVuZGxlRnJhbWVHZXRTY3JvbGxP
CiAgICAgCiAgICAgcmV0dXJuIHRvQVBJKHZpZXctPnNjcm9sbE9mZnNldCgpKTsKIH0KKworV0tT
dHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlVVJM
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKK3sKKyAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNv
dXJjZVVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9JbXBsKHVybFJlZiktPnN0
cmluZygpKSkpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgJKHJldmlzaW9u
IDc2MjYwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgV0tfRVhQ
T1JUIFdLUmVjdCBXS0J1bmRsZUZyYW1lR2V0Q29udGVudAogV0tfRVhQT1JUIFdLUmVjdCBXS0J1
bmRsZUZyYW1lR2V0VmlzaWJsZUNvbnRlbnRCb3VuZHMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7
CiBXS19FWFBPUlQgV0tTaXplIFdLQnVuZGxlRnJhbWVHZXRTY3JvbGxPZmZzZXQoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSk7CiAKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29w
eVN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VVUkwoV0tCdW5kbGVGcmFtZVJlZiBwYWdlLCBX
S1VSTFJlZiB1cmwpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lv
biA3NjI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb25Db250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudExvYWRlci5oPgpAQCAtNTI2LDQgKzUyNywxOSBAQCBTdHJpbmcgV2ViRnJh
bWU6OnByb3Zpc2lvbmFsVVJMKCkgY29uc3QKICAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmxvYWRl
cigpLT5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpOwogfQogCitT
dHJpbmcgV2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VVUkwoY29uc3QgS1VS
TCYgdXJsKSBjb25zdAoreworICAgIGlmICghbV9jb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIGlmIChEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9jb3JlRnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IGxvYWRlci0+c3VicmVzb3VyY2UodXJsKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdWJyZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
OworICAgIH0KKyAgICAKKyAgICAvLyBJZiB3ZSBjYW4ndCBxdWVyeSB0aGUgUmVzb3VyY2VSZXNw
b25zZSBmb3IgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBh
bmQgbGV0IHRoZSBhcHAKKyAgICAvLyBjaG9vc2UgaXRzIG93biBiYWNrdXAgYmFzZWQgb2ZmIHRo
ZSBVUkwuCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShy
ZXZpc2lvbiA3NjI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIGJv
b2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CiAKICAg
ICBTdHJpbmcgcHJvdmlzaW9uYWxVUkwoKSBjb25zdDsKKyAgICBTdHJpbmcgc3VnZ2VzdGVkRmls
ZW5hbWVGb3JSZXNvdXJjZVVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpIGNvbnN0OwogCiAg
ICAgLy8gU2ltcGxlIGxpc3RlbmVyIGNsYXNzIHVzZWQgYnkgcGx1Zy1pbnMgdG8ga25vdyB3aGVu
IGZyYW1lcyBmaW5pc2ggb3IgZmFpbCBsb2FkaW5nLgogICAgIGNsYXNzIExvYWRMaXN0ZW5lciB7
Cg==
</data>
<flag name="review"
          id="71217"
          type_id="1"
          status="+"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="71218"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>