[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.17-1283-gcf603cf
pfeldman at chromium.org
pfeldman at chromium.org
Tue Jan 5 23:49:59 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit e50c524d207552f4a5ab4d6bfb598f5ae0592300
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