<?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>29537</bug_id>
          
          <creation_ts>2009-09-21 02:59:06 -0700</creation_ts>
          <short_desc>Web Inspector: Expose InspectorResource fields</short_desc>
          <delta_ts>2009-09-21 15:15:46 -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>Web Inspector (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>148619</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 02:59:06 -0700</bug_when>
    <thetext>Currently InspectorResource has all of its members private. Expose them via the API for potential processing in C++ (as agreed with Timothy long ago).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148620</commentid>
    <comment_count>1</comment_count>
      <attachid>39845</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 03:04:41 -0700</bug_when>
    <thetext>Created attachment 39845
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148840</commentid>
    <comment_count>2</comment_count>
      <attachid>39845</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-21 14:46:41 -0700</bug_when>
    <thetext>Comment on attachment 39845
patch


&gt; -
&gt; -    if (!buffer)
&gt; -        return String();
&gt; -
&gt; -    TextEncoding encoding(textEncodingName);
&gt; -    if (!encoding.isValid())
&gt; -        encoding = WindowsLatin1Encoding();
&gt; -    return encoding.decode(buffer-&gt;data(), buffer-&gt;size());
&gt;  }

I think an explicit return 0; would be good here, I think it happens anyway because PassRefPtr is uesed, but I had to think about where there was no final return here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148854</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 14:56:05 -0700</bug_when>
    <thetext>&gt; I think an explicit return 0; would be good here, I think it happens anyway
&gt; because PassRefPtr is uesed, but I had to think about where there was no final
&gt; return here.

Not sure what you are talking about (patch might look confusing). All branches have explicit returns. Here is the resulting snippet:

PassRefPtr&lt;SharedBuffer&gt; InspectorResource::resourceData(String* textEncodingName) const {
    if (m_requestURL == m_loader-&gt;requestURL()) {
        *textEncodingName = m_frame-&gt;document()-&gt;inputEncoding();
        return m_loader-&gt;mainResourceData();
    } else {
        CachedResource* cachedResource = m_frame-&gt;document()-&gt;docLoader()-&gt;cachedResource(requestURL());
        if (!cachedResource)
            return 0;

        if (cachedResource-&gt;isPurgeable()) {
            // If the resource is purgeable then make it unpurgeable to get
            // get its data. This might fail, in which case we return an
            // empty String.
            // FIXME: should we do something else in the case of a purged
            // resource that informs the user why there is no data in the
            // inspector?
            if (!cachedResource-&gt;makePurgeable(false))
                return 0;
        }

        *textEncodingName = cachedResource-&gt;encoding();
        return cachedResource-&gt;data();
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148858</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-21 15:01:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; I think an explicit return 0; would be good here, I think it happens anyway
&gt; &gt; because PassRefPtr is uesed, but I had to think about where there was no final
&gt; &gt; return here.
&gt; 
&gt; Not sure what you are talking about (patch might look confusing). All branches
&gt; have explicit returns. Here is the resulting snippet:
&gt; 
&gt; PassRefPtr&lt;SharedBuffer&gt; InspectorResource::resourceData(String*
&gt; textEncodingName) const {
&gt;     if (m_requestURL == m_loader-&gt;requestURL()) {
&gt;         *textEncodingName = m_frame-&gt;document()-&gt;inputEncoding();
&gt;         return m_loader-&gt;mainResourceData();
&gt;     } else {
&gt;         CachedResource* cachedResource =
&gt; m_frame-&gt;document()-&gt;docLoader()-&gt;cachedResource(requestURL());
&gt;         if (!cachedResource)
&gt;             return 0;
&gt; 
&gt;         if (cachedResource-&gt;isPurgeable()) {
&gt;             // If the resource is purgeable then make it unpurgeable to get
&gt;             // get its data. This might fail, in which case we return an
&gt;             // empty String.
&gt;             // FIXME: should we do something else in the case of a purged
&gt;             // resource that informs the user why there is no data in the
&gt;             // inspector?
&gt;             if (!cachedResource-&gt;makePurgeable(false))
&gt;                 return 0;
&gt;         }
&gt; 
&gt;         *textEncodingName = cachedResource-&gt;encoding();
&gt;         return cachedResource-&gt;data();
&gt;     }
&gt; }

OK, I see. Then that else should be removed. We don&apos;t do &quot;else&quot; after a return in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148861</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 15:07:06 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; OK, I see. Then that else should be removed. We don&apos;t do &quot;else&quot; after a return
&gt; in WebKit.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148864</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-21 15:15:46 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorResource.cpp
	M	WebCore/inspector/InspectorResource.h
Committed r48606</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39845</attachid>
            <date>2009-09-21 03:04:41 -0700</date>
            <delta_ts>2009-09-21 14:46:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>expose_api</filename>
            <type>text/plain</type>
            <size>4475</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTIxMzVlMS4uMDljMzc2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOS0yMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXhwb3NlIEluc3BlY3RvclJlc291
cmNlIGZpZWxkcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjk1MzcKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZXNvdXJjZURhdGEpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2U6OnJlcXVlc3RIZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2U6OnJlc3BvbnNlSGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlOjpyZXNwb25zZVN0YXR1c0NvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnJlcXVlc3RNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnJlcXVlc3RGb3JtRGF0YSk6CisKIDIwMDktMDktMjAgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNp
ZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRl
eCA1NGQ5ZjkyLi43M2UyMGNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2Uu
Y3BwCkBAIC0yNjQsMTYgKzI2NCwyNSBAQCBTdHJpbmcgSW5zcGVjdG9yUmVzb3VyY2U6OnNvdXJj
ZVN0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX3htbEh0dHBSZXNwb25zZVRleHQuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcobV94bWxIdHRwUmVzcG9uc2VUZXh0KTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSByZXNvdXJjZURhdGEoJnRleHRFbmNv
ZGluZ05hbWUpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBUZXh0RW5jb2RpbmcgZW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7CisgICAgaWYgKCFl
bmNvZGluZy5pc1ZhbGlkKCkpCisgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29k
aW5nKCk7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworfQogCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5zcGVjdG9yUmVzb3Vy
Y2U6OnJlc291cmNlRGF0YShTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpIGNvbnN0IHsKICAgICBp
ZiAobV9yZXF1ZXN0VVJMID09IG1fbG9hZGVyLT5yZXF1ZXN0VVJMKCkpIHsKLSAgICAgICAgYnVm
ZmVyID0gbV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgdGV4dEVuY29kaW5n
TmFtZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKTsKKyAgICAgICAgKnRl
eHRFbmNvZGluZ05hbWUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7Cisg
ICAgICAgIHJldHVybiBtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmRvY0xvYWRlcigpLT5jYWNoZWRSZXNvdXJjZShyZXF1ZXN0VVJMKCkpOwogICAgICAg
ICBpZiAoIWNhY2hlZFJlc291cmNlKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlLT5pc1B1cmdl
YWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgaXMgcHVyZ2VhYmxlIHRo
ZW4gbWFrZSBpdCB1bnB1cmdlYWJsZSB0byBnZXQKQEAgLTI4MywyMCArMjkyLDEyIEBAIFN0cmlu
ZyBJbnNwZWN0b3JSZXNvdXJjZTo6c291cmNlU3RyaW5nKCkgY29uc3QKICAgICAgICAgICAgIC8v
IHJlc291cmNlIHRoYXQgaW5mb3JtcyB0aGUgdXNlciB3aHkgdGhlcmUgaXMgbm8gZGF0YSBpbiB0
aGUKICAgICAgICAgICAgIC8vIGluc3BlY3Rvcj8KICAgICAgICAgICAgIGlmICghY2FjaGVkUmVz
b3VyY2UtPm1ha2VQdXJnZWFibGUoZmFsc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGJ1
ZmZlciA9IGNhY2hlZFJlc291cmNlLT5kYXRhKCk7Ci0gICAgICAgIHRleHRFbmNvZGluZ05hbWUg
PSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKKyAgICAgICAgKnRleHRFbmNvZGluZ05hbWUg
PSBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RpbmcoKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlZFJlc291
cmNlLT5kYXRhKCk7CiAgICAgfQotCi0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLQotICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsK
LSAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKLSAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dz
TGF0aW4xRW5jb2RpbmcoKTsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnN0YXJ0
VGltaW5nKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCmluZGV4IDRjODUzMTUu
LjVlMzdlNDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApAQCAtODcsMTIg
Kzg3LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRYTUxIdHRwUmVz
cG9uc2VUZXh0KGNvbnN0IFNjcmlwdFN0cmluZyYgZGF0YSk7CiAKICAgICAgICAgU3RyaW5nIHNv
dXJjZVN0cmluZygpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhKFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSkgY29uc3Q7CisKICAgICAgICAgYm9v
bCBpc1NhbWVMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgY29uc3QgeyByZXR1cm4gbG9h
ZGVyID09IG1fbG9hZGVyOyB9CiAgICAgICAgIHZvaWQgbWFya01haW5SZXNvdXJjZSgpIHsgbV9p
c01haW5SZXNvdXJjZSA9IHRydWU7IH0KICAgICAgICAgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICAgICAgU3RyaW5nIHJlcXVlc3RVUkwo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RVUkwuc3RyaW5nKCk7IH0KICAgICAgICAgRnJhbWUq
IGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQogICAgICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQorICAgICAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVyRmllbGRzKCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0SGVhZGVyRmllbGRzOyB9CisgICAgICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJl
c3BvbnNlSGVhZGVyRmllbGRzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUhlYWRlckZpZWxk
czsgfQorICAgICAgICBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZVN0YXR1c0NvZGU7IH0KKyAgICAgICAgU3RyaW5nIHJlcXVlc3RNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX3JlcXVlc3RNZXRob2Q7IH0KKyAgICAgICAgU3RyaW5nIHJlcXVlc3RGb3Jt
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdEZvcm1EYXRhOyB9CisKICAgICAgICAgdm9p
ZCBzdGFydFRpbWluZygpOwogICAgICAgICB2b2lkIG1hcmtSZXNwb25zZVJlY2VpdmVkVGltZSgp
OwogICAgICAgICB2b2lkIGVuZFRpbWluZygpOwo=
</data>
<flag name="review"
          id="20982"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>