[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

caseq at chromium.org caseq at chromium.org
Wed Dec 22 14:17:09 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit f114d5932410318484b341ef9488b099b47c1652
Author: caseq at chromium.org <caseq at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 6 12:27:32 2010 +0000

    2010-10-05  Andrey Kosyakov  <caseq at chromium.org>
    
            Reviewed by Yury Semikhatsky.
    
            Web Inspector: [Extensions API] Expose access to resource bodies
            Added support for encoding resource in WebInspector.getResourceContent()
            https://bugs.webkit.org/show_bug.cgi?id=45953
    
            * inspector/Inspector.idl: Added encoding parameter to getResourceContent()
            * inspector/InspectorController.cpp:
            (WebCore::InspectorController::getResourceContent):
            * inspector/InspectorController.h:
            * inspector/InspectorResource.cpp: Added sourceBytes() to return encoded representation of resource's binary body.
            (WebCore::InspectorResource::sourceBytes):
            * inspector/InspectorResource.h:
            * inspector/front-end/ExtensionAPI.js:
            (WebInspector.injectedExtensionAPI.Resources.prototype.getContent):
            * inspector/front-end/ExtensionServer.js:
            (WebInspector.ExtensionServer):
            (WebInspector.ExtensionServer.prototype._onGetResourceContent):
            (WebInspector.ExtensionServer.prototype._onGetResourceContent.onContentAvailable):
            (WebInspector.getEncodedResourceContent):
            * inspector/front-end/NetworkPanel.js:
            (WebInspector.getResourceContent):
            * inspector/front-end/ResourcesPanel.js:
            (WebInspector.getResourceContent):
    
    2010-10-05  Andrey Kosyakov  <caseq at chromium.org>
    
            Reviewed by Yury Semikhatsky.
    
            Web Inspector: [Extensions API] Expose access to resource bodies
            https://bugs.webkit.org/show_bug.cgi?id=45953
    
            * inspector/extensions-api-expected.txt:
            * inspector/extensions-resources-expected.txt:
            * inspector/extensions-resources.html:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69185 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index aa68581..4d3f0b6 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,14 @@
+2010-10-05  Andrey Kosyakov  <caseq at chromium.org>
+
+        Reviewed by Yury Semikhatsky.
+
+        Web Inspector: [Extensions API] Expose access to resource bodies
+        https://bugs.webkit.org/show_bug.cgi?id=45953
+
+        * inspector/extensions-api-expected.txt:
+        * inspector/extensions-resources-expected.txt:
+        * inspector/extensions-resources.html:
+
 2010-10-06  David Hyatt  <hyatt at apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/LayoutTests/inspector/extensions-api-expected.txt b/LayoutTests/inspector/extensions-api-expected.txt
index fda0842..f4443f1 100644
--- a/LayoutTests/inspector/extensions-api-expected.txt
+++ b/LayoutTests/inspector/extensions-api-expected.txt
@@ -60,6 +60,7 @@ RUNNING TEST: extension_testAPI
         getAll : <function>
         get : <function>
         getPageTimings : <function>
+        getContent : <function>
     }
     onReset : {
         addListener : <function>
diff --git a/LayoutTests/inspector/extensions-resources-expected.txt b/LayoutTests/inspector/extensions-resources-expected.txt
index 179d3cc..75fc13d 100644
--- a/LayoutTests/inspector/extensions-resources-expected.txt
+++ b/LayoutTests/inspector/extensions-resources-expected.txt
@@ -21,6 +21,34 @@ Got callback from getPageTimings, pageTimings dump follows
     onContentLoad : <number>
     onLoad : <number>
 }
+RUNNING TEST: extension_testGetResourceContent
+{
+    0 : {
+        code : "E_NOTFOUND"
+        description : "Object not found: %s"
+        details : {
+            0 : 2126506
+        }
+        isError : true
+    }
+    1 : {
+        id : <number>
+        encoding : ""
+        content : ".some-style {
+    vertical-align: middle;
+}"
+    }
+    2 : {
+        id : <number>
+        encoding : "base64"
+        content : "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"
+    }
+    3 : {
+        id : <number>
+        encoding : "base64"
+        content : ""
+    }
+}
 RUNNING TEST: extension_testResourceNotification
 Resource finished: .../LayoutTests/inspector/extensions-resources.html
 All tests done.
diff --git a/LayoutTests/inspector/extensions-resources.html b/LayoutTests/inspector/extensions-resources.html
index da9878f..b70f971 100755
--- a/LayoutTests/inspector/extensions-resources.html
+++ b/LayoutTests/inspector/extensions-resources.html
@@ -75,6 +75,46 @@ function extension_testResourceNotification(nextTest)
     extension_doXHR();
 }
 
+function extension_getResourceByUrl(urls, callback)
+{
+    function onGotResources(response)
+    {
+        var ids = [];
+        for (var i = 0; i < response.length; ++i) {
+            for (var url = 0; url < urls.length; ++url) {
+                if (urls[url].test(response[i].har.request.url))
+                    ids.push(response[i].id);
+            }
+        }
+        callback(ids);
+    }
+    webInspector.resources.getAll(onGotResources);
+}
+
+function extension_onResourceBodies(response)
+{
+    function compareBodies(a, b)
+    {
+        return ((a.response && a.response.content) || "").localeCompare((b.response && b.response.content) || "");
+    }
+    dumpObject(response, { id: 1 });
+}
+
+function extension_testGetResourceContent(nextTest)
+{
+    extension_getResourceByUrl([/audits-style1.css$/], function(ids) {
+        webInspector.resources.getContent(ids[0], callbackAndNextTest(extension_onResourceBodies, nextTest));
+    });
+}
+
+function extension_testGetResourceContent(nextTest)
+{
+    extension_getResourceByUrl([/abe.png$/, /missing-image.png$/, /audits-style1.css$/ ], function(ids) {
+        ids.push(2126506); // Non-existent resource id.
+        webInspector.resources.getContent(ids, callbackAndNextTest(extension_onResourceBodies, nextTest));
+    });
+}
+
 </script>
 </head>
 <body onload="runTest()">
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 2178ec2..8e47ef3 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,30 @@
+2010-10-05  Andrey Kosyakov  <caseq at chromium.org>
+
+        Reviewed by Yury Semikhatsky.
+
+        Web Inspector: [Extensions API] Expose access to resource bodies
+        Added support for encoding resource in WebInspector.getResourceContent()
+        https://bugs.webkit.org/show_bug.cgi?id=45953
+
+        * inspector/Inspector.idl: Added encoding parameter to getResourceContent()
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::getResourceContent):
+        * inspector/InspectorController.h:
+        * inspector/InspectorResource.cpp: Added sourceBytes() to return encoded representation of resource's binary body.
+        (WebCore::InspectorResource::sourceBytes):
+        * inspector/InspectorResource.h:
+        * inspector/front-end/ExtensionAPI.js:
+        (WebInspector.injectedExtensionAPI.Resources.prototype.getContent):
+        * inspector/front-end/ExtensionServer.js:
+        (WebInspector.ExtensionServer):
+        (WebInspector.ExtensionServer.prototype._onGetResourceContent):
+        (WebInspector.ExtensionServer.prototype._onGetResourceContent.onContentAvailable):
+        (WebInspector.getEncodedResourceContent):
+        * inspector/front-end/NetworkPanel.js:
+        (WebInspector.getResourceContent):
+        * inspector/front-end/ResourcesPanel.js:
+        (WebInspector.getResourceContent):
+
 2010-10-06  David Hyatt  <hyatt at apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/WebCore/inspector/Inspector.idl b/WebCore/inspector/Inspector.idl
index a08a622..8a160b8 100644
--- a/WebCore/inspector/Inspector.idl
+++ b/WebCore/inspector/Inspector.idl
@@ -108,7 +108,7 @@ module core {
         [handler=Controller] void setMonitoringXHREnabled(in boolean enable, out boolean newState);
 
         [handler=Controller] void setResourceTrackingEnabled(in boolean enabled, in boolean always, out boolean newState);
-        [handler=Controller] void getResourceContent(in unsigned long identifier, out String content);
+        [handler=Controller] void getResourceContent(in unsigned long identifier, in boolean encode, out String content);
         [handler=Controller] void reloadPage();
 
         [handler=Controller] void startTimelineProfiler();
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 6c6f9c0..5d93a50 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -2092,10 +2092,14 @@ void InspectorController::setInspectorExtensionAPI(const String& source)
     m_inspectorExtensionAPI = source;
 }
 
-void InspectorController::getResourceContent(unsigned long identifier, String* content)
+void InspectorController::getResourceContent(unsigned long identifier, bool encode, String* content)
 {
     RefPtr<InspectorResource> resource = m_resources.get(identifier);
-    *content = resource ? resource->sourceString() : String();
+    if (!resource) {
+        *content = String();
+        return;
+    }
+    *content = encode ? resource->sourceBytes() : resource->sourceString();
 }
 
 bool InspectorController::resourceContentForURL(const KURL& url, Document* frameDocument, String* result)
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 41a030b..5e6c7de 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -321,7 +321,7 @@ private:
     void addResource(InspectorResource*);
     void removeResource(InspectorResource*);
     InspectorResource* getTrackedResource(unsigned long identifier);
-    void getResourceContent(unsigned long identifier, String* content);
+    void getResourceContent(unsigned long identifier, bool encode, String* content);
 
     void pruneResources(ResourcesMap*, DocumentLoader* loaderToKeep = 0);
     void removeAllResources(ResourcesMap* map) { pruneResources(map); }
diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
index 066cff4..570a4fb 100644
--- a/WebCore/inspector/InspectorResource.cpp
+++ b/WebCore/inspector/InspectorResource.cpp
@@ -33,6 +33,7 @@
 
 #if ENABLE(INSPECTOR)
 
+#include "Base64.h"
 #include "Cache.h"
 #include "CachedResource.h"
 #include "CachedResourceLoader.h"
@@ -433,6 +434,24 @@ String InspectorResource::sourceString() const
     return encoding.decode(buffer->data(), buffer->size());
 }
 
+String InspectorResource::sourceBytes() const
+{
+    Vector<char> out;
+    if (!m_overrideContent.isNull()) {
+        Vector<char> data;
+        String overrideContent = m_overrideContent;
+        data.append(overrideContent.characters(), overrideContent.length());
+        base64Encode(data, out);
+    } else {
+        String textEncodingName;
+        RefPtr<SharedBuffer> data = resourceData(&textEncodingName);
+        if (!data)
+            return String();
+        base64Encode(data->buffer(), out);
+    }
+    return String(out.data(), out.size());
+}
+
 PassRefPtr<SharedBuffer> InspectorResource::resourceData(String* textEncodingName) const
 {
     if (m_loader && equalIgnoringFragmentIdentifier(m_requestURL, m_loader->requestURL())) {
diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h
index 914232e..7f71e6a 100644
--- a/WebCore/inspector/InspectorResource.h
+++ b/WebCore/inspector/InspectorResource.h
@@ -101,6 +101,7 @@ namespace WebCore {
         void setOverrideContent(const ScriptString& data, Type);
 
         String sourceString() const;
+        String sourceBytes() const;
         PassRefPtr<SharedBuffer> resourceData(String* textEncodingName) const;
 
         bool isSameLoader(DocumentLoader* loader) const { return loader == m_loader; }
diff --git a/WebCore/inspector/front-end/ExtensionAPI.js b/WebCore/inspector/front-end/ExtensionAPI.js
index 9062126..5d090b0 100644
--- a/WebCore/inspector/front-end/ExtensionAPI.js
+++ b/WebCore/inspector/front-end/ExtensionAPI.js
@@ -128,6 +128,11 @@ Resources.prototype = {
     getPageTimings: function(callback)
     {
         return extensionServer.sendRequest({ command: "getPageTimings" }, callback);
+    },
+
+    getContent: function(ids, callback)
+    {
+        return extensionServer.sendRequest({ command: "getResourceContent", ids: ids }, callback);
     }
 }
 
diff --git a/WebCore/inspector/front-end/ExtensionServer.js b/WebCore/inspector/front-end/ExtensionServer.js
index 72d9a89..479cc02 100644
--- a/WebCore/inspector/front-end/ExtensionServer.js
+++ b/WebCore/inspector/front-end/ExtensionServer.js
@@ -38,6 +38,7 @@ WebInspector.ExtensionServer = function()
     this._registerHandler("subscribe", this._onSubscribe.bind(this));
     this._registerHandler("unsubscribe", this._onUnsubscribe.bind(this));
     this._registerHandler("getResources", this._onGetResources.bind(this));
+    this._registerHandler("getResourceContent", this._onGetResourceContent.bind(this));
     this._registerHandler("getPageTimings", this._onGetPageTimings.bind(this));
     this._registerHandler("createPanel", this._onCreatePanel.bind(this));
     this._registerHandler("createSidebarPane", this._onCreateSidebar.bind(this));
@@ -266,6 +267,45 @@ WebInspector.ExtensionServer.prototype = {
         return response;
     },
 
+    _onGetResourceContent: function(message, port)
+    {
+        var ids;
+        var response = [];
+
+        function onContentAvailable(id, encoded, content)
+        {
+            var resourceContent = {
+                id: id,
+                encoding: encoded ? "base64" : "",
+                content: content
+            };
+            response.push(resourceContent);
+            if (response.length === ids.length)
+                this._dispatchCallback(message.requestId, port, response);
+        }
+
+        if (typeof message.ids === "number") {
+            ids = [ message.ids ];
+        } else if (message.ids instanceof Array) {
+            ids = message.ids;
+        } else {
+            return this._status.E_BADARGTYPE("message.ids", "Array", typeof message.ids);
+        }
+
+        for (var i = 0; i < ids.length; ++i) {
+            var id = ids[i];
+            var resource = WebInspector.resources[id];
+            if (!resource)
+                response.push(this._status.E_NOTFOUND(id));
+            else {
+                var encode = !WebInspector.Resource.Type.isTextType(resource.type);
+                WebInspector.getEncodedResourceContent(id, encode, onContentAvailable.bind(this, id, encode));
+            }
+        }
+        if (response.length === ids.length)
+            this._dispatchCallback(message.requestId, port, response);
+    },
+
     _onGetPageTimings: function()
     {
         return (new WebInspector.HARLog()).buildMainResourceTimings();
@@ -407,3 +447,8 @@ WebInspector.addExtensions = function(extensions)
 }
 
 WebInspector.extensionServer = new WebInspector.ExtensionServer();
+
+WebInspector.getEncodedResourceContent = function(identifier, encode, callback)
+{
+    InspectorBackend.getResourceContent(identifier, encode, callback);
+}
diff --git a/WebCore/inspector/front-end/NetworkPanel.js b/WebCore/inspector/front-end/NetworkPanel.js
index d3d345c..0e356ae 100644
--- a/WebCore/inspector/front-end/NetworkPanel.js
+++ b/WebCore/inspector/front-end/NetworkPanel.js
@@ -1011,7 +1011,7 @@ WebInspector.NetworkPanel.prototype.__proto__ = WebInspector.Panel.prototype;
 
 WebInspector.getResourceContent = function(identifier, callback)
 {
-    InspectorBackend.getResourceContent(identifier, callback);
+    InspectorBackend.getResourceContent(identifier, false, callback);
 }
 
 WebInspector.NetworkBaseCalculator = function()
diff --git a/WebCore/inspector/front-end/ResourcesPanel.js b/WebCore/inspector/front-end/ResourcesPanel.js
index 1c65da3..b38b069 100644
--- a/WebCore/inspector/front-end/ResourcesPanel.js
+++ b/WebCore/inspector/front-end/ResourcesPanel.js
@@ -1293,7 +1293,7 @@ WebInspector.ResourcesPanel.prototype.__proto__ = WebInspector.Panel.prototype;
 
 WebInspector.getResourceContent = function(identifier, callback)
 {
-    InspectorBackend.getResourceContent(identifier, callback);
+    InspectorBackend.getResourceContent(identifier, false, callback);
 }
 
 WebInspector.ResourceBaseCalculator = function()

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list