[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

pfeldman at chromium.org pfeldman at chromium.org
Thu Apr 8 00:36:54 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit c2a3c6e567667df2fcc6c1e719456acd7a535f00
Author: pfeldman at chromium.org <pfeldman at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Dec 15 16:36:24 2009 +0000

    2009-12-15  Pavel Feldman  <pfeldman at chromium.org>
    
            Reviewed by Timothy Hatcher.
    
            Web Inspector: Do not lose HTTP redirect information, display it
            in the Resources Panel.
    
            https://bugs.webkit.org/show_bug.cgi?id=32551
    
            * inspector/InspectorController.cpp:
            (WebCore::InspectorController::populateScriptObjects):
            (WebCore::InspectorController::didCommitLoad):
            (WebCore::InspectorController::didLoadResourceFromMemoryCache):
            (WebCore::InspectorController::identifierForInitialRequest):
            (WebCore::InspectorController::willSendRequest):
            (WebCore::InspectorController::didReceiveResponse):
            (WebCore::InspectorController::didReceiveContentLength):
            (WebCore::InspectorController::didFinishLoading):
            (WebCore::InspectorController::didFailLoading):
            * inspector/InspectorFrontend.cpp:
            * inspector/InspectorFrontend.h:
            * inspector/InspectorResource.cpp:
            (WebCore::InspectorResource::InspectorResource):
            (WebCore::InspectorResource::appendRedirect):
            (WebCore::InspectorResource::updateScriptObject):
            (WebCore::InspectorResource::releaseScriptObject):
            (WebCore::InspectorResource::type):
            * inspector/InspectorResource.h:
            (WebCore::InspectorResource::):
            (WebCore::InspectorResource::Changes::setAll):
            * inspector/front-end/inspector.js:
            (WebInspector._addResource):
            (WebInspector.updateResource):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52154 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 4b8010a..e3d45ba 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,37 @@
+2009-12-15  Pavel Feldman  <pfeldman at chromium.org>
+
+        Reviewed by Timothy Hatcher.
+
+        Web Inspector: Do not lose HTTP redirect information, display it
+        in the Resources Panel.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32551
+
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::populateScriptObjects):
+        (WebCore::InspectorController::didCommitLoad):
+        (WebCore::InspectorController::didLoadResourceFromMemoryCache):
+        (WebCore::InspectorController::identifierForInitialRequest):
+        (WebCore::InspectorController::willSendRequest):
+        (WebCore::InspectorController::didReceiveResponse):
+        (WebCore::InspectorController::didReceiveContentLength):
+        (WebCore::InspectorController::didFinishLoading):
+        (WebCore::InspectorController::didFailLoading):
+        * inspector/InspectorFrontend.cpp:
+        * inspector/InspectorFrontend.h:
+        * inspector/InspectorResource.cpp:
+        (WebCore::InspectorResource::InspectorResource):
+        (WebCore::InspectorResource::appendRedirect):
+        (WebCore::InspectorResource::updateScriptObject):
+        (WebCore::InspectorResource::releaseScriptObject):
+        (WebCore::InspectorResource::type):
+        * inspector/InspectorResource.h:
+        (WebCore::InspectorResource::):
+        (WebCore::InspectorResource::Changes::setAll):
+        * inspector/front-end/inspector.js:
+        (WebInspector._addResource):
+        (WebInspector.updateResource):
+
 2009-12-15  Holger Hans Peter Freyther  <zecke at selfish.org>
 
         Reviewed by Simon Hausmann.
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index fd319a4..659a23e 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -648,7 +648,7 @@ void InspectorController::populateScriptObjects()
 
     ResourcesMap::iterator resourcesEnd = m_resources.end();
     for (ResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it)
-        it->second->createScriptObject(m_frontend.get());
+        it->second->updateScriptObject(m_frontend.get());
 
     unsigned messageCount = m_consoleMessages.size();
     for (unsigned i = 0; i < messageCount; ++i)
@@ -758,7 +758,7 @@ void InspectorController::didCommitLoad(DocumentLoader* loader)
                 // needed to keep the load for a user-entered URL from showing up in the
                 // list of resources for the page they are navigating away from.
                 if (windowVisible())
-                    m_mainResource->createScriptObject(m_frontend.get());
+                    m_mainResource->updateScriptObject(m_frontend.get());
             } else {
                 // Pages loaded from the page cache are committed before
                 // m_mainResource is the right resource for this load, so we
@@ -853,7 +853,7 @@ void InspectorController::didLoadResourceFromMemoryCache(DocumentLoader* loader,
     if (!isMainResource && !m_resourceTrackingEnabled)
         return;
 
-    RefPtr<InspectorResource> resource = InspectorResource::createCached(m_inspectedPage->progress()->createUniqueIdentifier() , loader, cachedResource);
+    RefPtr<InspectorResource> resource = InspectorResource::createCached(m_inspectedPage->progress()->createUniqueIdentifier(), loader, cachedResource);
 
     if (isMainResource) {
         m_mainResource = resource;
@@ -863,7 +863,7 @@ void InspectorController::didLoadResourceFromMemoryCache(DocumentLoader* loader,
     addResource(resource.get());
 
     if (windowVisible())
-        resource->createScriptObject(m_frontend.get());
+        resource->updateScriptObject(m_frontend.get());
 }
 
 void InspectorController::identifierForInitialRequest(unsigned long identifier, DocumentLoader* loader, const ResourceRequest& request)
@@ -889,7 +889,7 @@ void InspectorController::identifierForInitialRequest(unsigned long identifier,
     addResource(resource.get());
 
     if (windowVisible() && loader->frameLoader()->isLoadingFromCachedPage() && resource == m_mainResource)
-        resource->createScriptObject(m_frontend.get());
+        resource->updateScriptObject(m_frontend.get());
 }
 
 void InspectorController::mainResourceFiredDOMContentEvent(DocumentLoader* loader, const KURL& url)
@@ -931,15 +931,22 @@ void InspectorController::willSendRequest(unsigned long identifier, const Resour
     if (!resource)
         return;
 
-    resource->startTiming();
-
     if (!redirectResponse.isNull()) {
-        resource->updateRequest(request);
-        resource->updateResponse(redirectResponse);
+        // We always store last redirect by the original id key. Rest of the redirects are stored within the last one.
+        unsigned long id = m_inspectedPage->progress()->createUniqueIdentifier();
+        RefPtr<InspectorResource> withRedirect = resource->appendRedirect(id, request, redirectResponse);
+        removeResource(resource.get());
+        addResource(withRedirect.get());
+        if (isMainResource) {
+            m_mainResource = withRedirect;
+            withRedirect->markMainResource();
+        }
+        resource = withRedirect;
     }
 
+    resource->startTiming();
     if (resource != m_mainResource && windowVisible())
-        resource->createScriptObject(m_frontend.get());
+        resource->updateScriptObject(m_frontend.get());
 }
 
 void InspectorController::didReceiveResponse(unsigned long identifier, const ResourceResponse& response)
@@ -954,7 +961,7 @@ void InspectorController::didReceiveResponse(unsigned long identifier, const Res
     resource->updateResponse(response);
     resource->markResponseReceivedTime();
 
-    if (windowVisible())
+    if (resource != m_mainResource && windowVisible())
         resource->updateScriptObject(m_frontend.get());
 }
 
@@ -966,7 +973,7 @@ void InspectorController::didReceiveContentLength(unsigned long identifier, int
 
     resource->addLength(lengthReceived);
 
-    if (windowVisible())
+    if (resource != m_mainResource && windowVisible())
         resource->updateScriptObject(m_frontend.get());
 }
 
@@ -979,13 +986,9 @@ void InspectorController::didFinishLoading(unsigned long identifier)
     if (!resource)
         return;
 
-    removeResource(resource.get());
-
     resource->endTiming();
 
-    addResource(resource.get());
-
-    if (windowVisible())
+    if (resource != m_mainResource && windowVisible())
         resource->updateScriptObject(m_frontend.get());
 }
 
@@ -998,14 +1001,10 @@ void InspectorController::didFailLoading(unsigned long identifier, const Resourc
     if (!resource)
         return;
 
-    removeResource(resource.get());
-
     resource->markFailed();
     resource->endTiming();
 
-    addResource(resource.get());
-
-    if (windowVisible())
+    if (resource != m_mainResource && windowVisible())
         resource->updateScriptObject(m_frontend.get());
 }
 
diff --git a/WebCore/inspector/InspectorFrontend.cpp b/WebCore/inspector/InspectorFrontend.cpp
index 70f4868..35f6ab2 100644
--- a/WebCore/inspector/InspectorFrontend.cpp
+++ b/WebCore/inspector/InspectorFrontend.cpp
@@ -106,17 +106,6 @@ void InspectorFrontend::clearConsoleMessages()
     callSimpleFunction("clearConsoleMessages");
 }
 
-bool InspectorFrontend::addResource(unsigned long identifier, const ScriptObject& resourceObj)
-{
-    ScriptFunctionCall function(m_scriptState, m_webInspector, "dispatch"); 
-    function.appendArgument("addResource");
-    function.appendArgument(identifier);
-    function.appendArgument(resourceObj);
-    bool hadException = false;
-    function.call(hadException);
-    return !hadException;
-}
-
 bool InspectorFrontend::updateResource(unsigned long identifier, const ScriptObject& resourceObj)
 {
     ScriptFunctionCall function(m_scriptState, m_webInspector, "dispatch"); 
diff --git a/WebCore/inspector/InspectorFrontend.h b/WebCore/inspector/InspectorFrontend.h
index 03dac14..547762f 100644
--- a/WebCore/inspector/InspectorFrontend.h
+++ b/WebCore/inspector/InspectorFrontend.h
@@ -67,7 +67,6 @@ namespace WebCore {
         void updateConsoleMessageRepeatCount(const int count);
         void clearConsoleMessages();
 
-        bool addResource(unsigned long identifier, const ScriptObject& resourceObj);
         bool updateResource(unsigned long identifier, const ScriptObject& resourceObj);
         void removeResource(unsigned long identifier);
 
diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
index 0a4cb73..2e83d02 100644
--- a/WebCore/inspector/InspectorResource.cpp
+++ b/WebCore/inspector/InspectorResource.cpp
@@ -50,7 +50,6 @@ InspectorResource::InspectorResource(unsigned long identifier, DocumentLoader* l
     : m_identifier(identifier)
     , m_loader(loader)
     , m_frame(loader->frame())
-    , m_scriptObjectCreated(false)
     , m_expectedContentLength(0)
     , m_cached(false)
     , m_finished(false)
@@ -70,6 +69,23 @@ InspectorResource::~InspectorResource()
 {
 }
 
+PassRefPtr<InspectorResource> InspectorResource::appendRedirect(unsigned long identifier, const ResourceRequest& request, const ResourceResponse& redirectResponse)
+{
+    // Last redirect is always a container of all previous ones. Pass this container here.
+    RefPtr<InspectorResource> redirect = InspectorResource::create(m_identifier, m_loader.get());
+    redirect->m_redirects = m_redirects;
+    redirect->m_redirects.append(this);
+    redirect->m_changes.set(RedirectsChange);
+    redirect->updateRequest(request);
+
+    m_identifier = identifier;
+    m_redirects.clear();
+    updateResponse(redirectResponse);
+    markResponseReceivedTime();
+    endTiming();
+    return redirect;
+}
+
 PassRefPtr<InspectorResource> InspectorResource::createCached(unsigned long identifier, DocumentLoader* loader, const CachedResource* cachedResource)
 {
     PassRefPtr<InspectorResource> resource = create(identifier, loader);
@@ -126,36 +142,9 @@ static void populateHeadersObject(ScriptObject* object, const HTTPHeaderMap& hea
     }
 }
 
-void InspectorResource::createScriptObject(InspectorFrontend* frontend)
-{
-    if (!m_scriptObjectCreated) {
-        ScriptObject jsonObject = frontend->newScriptObject();
-        ScriptObject requestHeaders = frontend->newScriptObject();
-        populateHeadersObject(&requestHeaders, m_requestHeaderFields);
-        jsonObject.set("requestHeaders", requestHeaders);
-        jsonObject.set("documentURL", m_frame->document()->url().string());
-        jsonObject.set("requestURL", requestURL());
-        jsonObject.set("host", m_requestURL.host());
-        jsonObject.set("path", m_requestURL.path());
-        jsonObject.set("lastPathComponent", m_requestURL.lastPathComponent());
-        jsonObject.set("isMainResource", m_isMainResource);
-        jsonObject.set("cached", m_cached);
-        jsonObject.set("requestMethod", m_requestMethod);
-        jsonObject.set("requestFormData", m_requestFormData);
-        if (!frontend->addResource(m_identifier, jsonObject))
-            return;
-
-        m_scriptObjectCreated = true;
-        m_changes.clear(RequestChange);
-    }
-    updateScriptObject(frontend);
-}
 
 void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
 {
-    if (!m_scriptObjectCreated)
-        return;
-
     if (m_changes.hasChange(NoChange))
         return;
 
@@ -163,7 +152,7 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
     if (m_changes.hasChange(RequestChange)) {
         jsonObject.set("url", requestURL());
         jsonObject.set("documentURL", m_frame->document()->url().string());
-        jsonObject.set("domain", m_requestURL.host());
+        jsonObject.set("host", m_requestURL.host());
         jsonObject.set("path", m_requestURL.path());
         jsonObject.set("lastPathComponent", m_requestURL.lastPathComponent());
         ScriptObject requestHeaders = frontend->newScriptObject();
@@ -173,6 +162,7 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
         jsonObject.set("requestMethod", m_requestMethod);
         jsonObject.set("requestFormData", m_requestFormData);
         jsonObject.set("didRequestChange", true);
+        jsonObject.set("cached", m_cached);
     }
 
     if (m_changes.hasChange(ResponseChange)) {
@@ -216,23 +206,27 @@ void InspectorResource::updateScriptObject(InspectorFrontend* frontend)
             jsonObject.set("domContentEventTime", m_domContentEventTime);
         jsonObject.set("didTimingChange", true);
     }
-    if (!frontend->updateResource(m_identifier, jsonObject))
-        return;
-    m_changes.clearAll();
+
+    if (m_changes.hasChange(RedirectsChange)) {
+        for (size_t i = 0; i < m_redirects.size(); ++i)
+            m_redirects[i]->updateScriptObject(frontend);
+    }
+
+    if (frontend->updateResource(m_identifier, jsonObject))
+        m_changes.clearAll();
 }
 
 void InspectorResource::releaseScriptObject(InspectorFrontend* frontend, bool callRemoveResource)
 {
-    if (!m_scriptObjectCreated)
-        return;
-
-    m_scriptObjectCreated = false;
     m_changes.setAll();
 
     if (!callRemoveResource)
         return;
 
     frontend->removeResource(m_identifier);
+
+    for (size_t i = 0; i < m_redirects.size(); ++i)
+        m_redirects[i]->releaseScriptObject(frontend, callRemoveResource);
 }
 
 CachedResource* InspectorResource::cachedResource() const
@@ -288,7 +282,6 @@ InspectorResource::Type InspectorResource::type() const
         return Image;
 
     return cachedResourceType();
-
 }
 
 void InspectorResource::setXMLHttpResponseText(const ScriptString& data)
diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h
index 7d9b977..438a3d6 100644
--- a/WebCore/inspector/InspectorResource.h
+++ b/WebCore/inspector/InspectorResource.h
@@ -77,7 +77,7 @@ namespace WebCore {
 
         ~InspectorResource();
 
-        void createScriptObject(InspectorFrontend* frontend);
+        PassRefPtr<InspectorResource> appendRedirect(unsigned long identifier, const ResourceRequest&, const ResourceResponse& redirectResponse);
         void updateScriptObject(InspectorFrontend* frontend);
         void releaseScriptObject(InspectorFrontend* frontend, bool callRemoveResource);
 
@@ -118,7 +118,8 @@ namespace WebCore {
             TypeChange = 4,
             LengthChange = 8,
             CompletionChange = 16,
-            TimingChange = 32
+            TimingChange = 32,
+            RedirectsChange = 64
         };
 
         class Changes {
@@ -138,7 +139,7 @@ namespace WebCore {
                 m_change = static_cast<ChangeType>(static_cast<unsigned>(m_change) & ~static_cast<unsigned>(change));
             }
 
-            inline void setAll() { m_change = static_cast<ChangeType>(63); }
+            inline void setAll() { m_change = static_cast<ChangeType>(127); }
             inline void clearAll() { m_change = NoChange; }
 
         private:
@@ -159,7 +160,6 @@ namespace WebCore {
         HTTPHeaderMap m_responseHeaderFields;
         String m_mimeType;
         String m_suggestedFilename;
-        bool m_scriptObjectCreated;
         long long m_expectedContentLength;
         bool m_cached;
         bool m_finished;
@@ -176,6 +176,7 @@ namespace WebCore {
         bool m_isMainResource;
         String m_requestMethod;
         String m_requestFormData;
+        Vector<RefPtr<InspectorResource> > m_redirects;
     };
 
 } // namespace WebCore
diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js
index 20d8c35..2ed1e77 100644
--- a/WebCore/inspector/front-end/inspector.js
+++ b/WebCore/inspector/front-end/inspector.js
@@ -962,17 +962,17 @@ WebInspector.showConsolePanel = function()
     this.currentPanel = this.panels.console;
 }
 
-WebInspector.addResource = function(identifier, payload)
+WebInspector._addResource = function(identifier, payload)
 {
     var resource = new WebInspector.Resource(
         payload.requestHeaders,
-        payload.requestURL,
+        payload.url,
         payload.documentURL,
         payload.host,
         payload.path,
         payload.lastPathComponent,
         identifier,
-        payload.isMainResource,
+        payload.mainResource,
         payload.cached,
         payload.requestMethod,
         payload.requestFormData);
@@ -988,6 +988,8 @@ WebInspector.addResource = function(identifier, payload)
     var match = payload.documentURL.match(/^(http[s]?|file):\/\/([\/]*[^\/]+)/i);
     if (match)
         this.addCookieDomain(match[1].toLowerCase() === "file" ? "" : match[2]);
+
+    return resource;
 }
 
 WebInspector.clearConsoleMessages = function()
@@ -1010,12 +1012,15 @@ WebInspector.selectDOMStorage = function(o)
 WebInspector.updateResource = function(identifier, payload)
 {
     var resource = this.resources[identifier];
-    if (!resource)
-        return;
+    if (!resource) {
+        resource = this._addResource(identifier, payload);
+        // Request info is already populated in constructor.
+        payload.didRequestChange = false;
+    }
 
     if (payload.didRequestChange) {
         resource.url = payload.url;
-        resource.domain = payload.domain;
+        resource.host = payload.domain;
         resource.path = payload.path;
         resource.lastPathComponent = payload.lastPathComponent;
         resource.requestHeaders = payload.requestHeaders;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list