[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
pfeldman at chromium.org
pfeldman at chromium.org
Wed Dec 22 13:26:24 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 88e0487f6f1aeae220b0dbf9f8ebb9e777a69d3a
Author: pfeldman at chromium.org <pfeldman at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Sep 15 13:25:59 2010 +0000
2010-09-14 Pavel Feldman <pfeldman at chromium.org>
Reviewed by Yury Semikhatsky.
Web Inspector: Provide network-based load timing.
Before this change, inspector used timers taken from
within WebCore notifications (that are by definition
synchronous and serialized). As a result, timing was
affected by the routines running on the main thread
(JavaScript and such).
https://bugs.webkit.org/show_bug.cgi?id=45664
* inspector/InspectorController.cpp:
(WebCore::InspectorController::willSendRequest):
(WebCore::InspectorController::didFinishLoading):
(WebCore::InspectorController::didFailLoading):
* inspector/InspectorController.h:
* inspector/InspectorResource.cpp:
(WebCore::InspectorResource::endTiming):
* inspector/InspectorResource.h:
* loader/PingLoader.h:
(WebCore::PingLoader::didFinishLoading):
* loader/ResourceLoadNotifier.cpp:
(WebCore::ResourceLoadNotifier::dispatchDidFinishLoading):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::didFinishLoading):
* loader/ResourceLoader.h:
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::didFinishLoading):
* loader/appcache/ApplicationCacheGroup.h:
* loader/icon/IconFetcher.cpp:
(WebCore::IconFetcher::didFinishLoading):
* loader/icon/IconFetcher.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(StreamingClient::didFinishLoading):
* platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::notifyFinish):
* platform/network/ResourceHandleClient.h:
(WebCore::ResourceHandleClient::didFinishLoading):
* platform/network/ResourceLoadTiming.h:
(WebCore::ResourceLoadTiming::deepCopy):
(WebCore::ResourceLoadTiming::operator==):
(WebCore::ResourceLoadTiming::ResourceLoadTiming):
* platform/network/cf/ResourceHandleCFNet.cpp:
(WebCore::didFinishLoading):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::WebCoreSynchronousLoader::didFinishLoading):
* platform/network/curl/ResourceHandleManager.cpp:
(WebCore::ResourceHandleManager::downloadTimerCallback):
(WebCore::parseDataUrl):
* platform/network/mac/ResourceHandleMac.mm:
(-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):
(WebCoreSynchronousLoaderClient::didFinishLoading):
* platform/network/qt/QNetworkReplyHandler.cpp:
(WebCore::QNetworkReplyHandler::finish):
* platform/network/qt/ResourceHandleQt.cpp:
(WebCore::WebCoreSynchronousLoader::didFinishLoading):
* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::WebCoreSynchronousLoader::didFinishLoading):
(WebCore::WebCoreSynchronousLoader::didFail):
* platform/network/win/ResourceHandleWin.cpp:
(WebCore::WebCoreSynchronousLoader::didFinishLoading):
(WebCore::ResourceHandle::onRequestComplete):
(WebCore::ResourceHandle::fileLoadTimer):
(WebCore::ResourceHandle::cancel):
2010-09-14 Pavel Feldman <pfeldman at chromium.org>
Reviewed by Yury Semikhatsky.
Web Inspector: Provide network-based load timing.
Before this change, inspector used timers taken from
within WebCore notifications (that are by definition
synchronous and serialized). As a result, timing was
affected by the routines running on the main thread
(JavaScript and such).
https://bugs.webkit.org/show_bug.cgi?id=45664
* public/WebURLLoadTiming.h:
* public/WebURLLoaderClient.h:
(WebKit::WebURLLoaderClient::didFinishLoading):
* src/ResourceHandle.cpp:
(WebCore::ResourceHandleInternal::didFinishLoading):
* src/WebDevToolsAgentImpl.cpp:
(WebKit::WebDevToolsAgentImpl::didFinishLoading):
* src/WebURLLoadTiming.cpp:
(WebKit::WebURLLoadTiming::receiveHeadersStart):
(WebKit::WebURLLoadTiming::setReceiveHeadersStart):
2010-09-14 Pavel Feldman <pfeldman at chromium.org>
Reviewed by Yury Semikhatsky.
Web Inspector: Provide network-based load timing.
Before this change, inspector used timers taken from
within WebCore notifications (that are by definition
synchronous and serialized). As a result, timing was
affected by the routines running on the main thread
(JavaScript and such).
https://bugs.webkit.org/show_bug.cgi?id=45664
* webkit/webkitdownload.cpp:
(DownloadClient::didFinishLoading):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67553 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 3a2e1d9..e598277 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,69 @@
+2010-09-14 Pavel Feldman <pfeldman at chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ (Take 2). Web Inspector: Provide network-based load timing.
+ Before this change, inspector used timers taken from
+ within WebCore notifications (that are by definition
+ synchronous and serialized). As a result, timing was
+ affected by the routines running on the main thread
+ (JavaScript and such).
+ https://bugs.webkit.org/show_bug.cgi?id=45664
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::willSendRequest):
+ (WebCore::InspectorController::didFinishLoading):
+ (WebCore::InspectorController::didFailLoading):
+ * inspector/InspectorController.h:
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::endTiming):
+ * inspector/InspectorResource.h:
+ * loader/PingLoader.h:
+ (WebCore::PingLoader::didFinishLoading):
+ * loader/ResourceLoadNotifier.cpp:
+ (WebCore::ResourceLoadNotifier::dispatchDidFinishLoading):
+ * loader/ResourceLoader.cpp:
+ (WebCore::ResourceLoader::didFinishLoading):
+ * loader/ResourceLoader.h:
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::didFinishLoading):
+ * loader/appcache/ApplicationCacheGroup.h:
+ * loader/icon/IconFetcher.cpp:
+ (WebCore::IconFetcher::didFinishLoading):
+ * loader/icon/IconFetcher.h:
+ * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+ (StreamingClient::didFinishLoading):
+ * platform/network/BlobResourceHandle.cpp:
+ (WebCore::BlobResourceHandle::notifyFinish):
+ * platform/network/ResourceHandleClient.h:
+ (WebCore::ResourceHandleClient::didFinishLoading):
+ * platform/network/ResourceLoadTiming.h:
+ (WebCore::ResourceLoadTiming::deepCopy):
+ (WebCore::ResourceLoadTiming::operator==):
+ (WebCore::ResourceLoadTiming::ResourceLoadTiming):
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::didFinishLoading):
+ * platform/network/curl/ResourceHandleCurl.cpp:
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ * platform/network/curl/ResourceHandleManager.cpp:
+ (WebCore::ResourceHandleManager::downloadTimerCallback):
+ (WebCore::parseDataUrl):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (-[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:]):
+ (WebCoreSynchronousLoaderClient::didFinishLoading):
+ * platform/network/qt/QNetworkReplyHandler.cpp:
+ (WebCore::QNetworkReplyHandler::finish):
+ * platform/network/qt/ResourceHandleQt.cpp:
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ (WebCore::WebCoreSynchronousLoader::didFail):
+ * platform/network/win/ResourceHandleWin.cpp:
+ (WebCore::WebCoreSynchronousLoader::didFinishLoading):
+ (WebCore::ResourceHandle::onRequestComplete):
+ (WebCore::ResourceHandle::fileLoadTimer):
+ (WebCore::ResourceHandle::cancel):
+
2010-09-15 Sheriff Bot <webkit.review.bot at gmail.com>
Unreviewed, rolling out r67551.
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 6e48fd0..3e8815e 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -964,7 +964,7 @@ void InspectorController::willSendRequest(unsigned long identifier, ResourceRequ
// Redirect may have empty URL and we'd like to not crash with invalid HashMap entry.
// See http/tests/misc/will-send-request-returns-null-on-redirect.html
if (!request.url().isEmpty()) {
- resource->endTiming();
+ resource->endTiming(0);
resource->updateResponse(redirectResponse);
// We always store last redirect by the original id key. Rest of the redirects are stored within the last one.
@@ -1021,7 +1021,7 @@ void InspectorController::didReceiveContentLength(unsigned long identifier, int
resource->updateScriptObject(m_frontend.get());
}
-void InspectorController::didFinishLoading(unsigned long identifier)
+void InspectorController::didFinishLoading(unsigned long identifier, double finishTime)
{
if (!enabled())
return;
@@ -1033,7 +1033,7 @@ void InspectorController::didFinishLoading(unsigned long identifier)
if (!resource)
return;
- resource->endTiming();
+ resource->endTiming(finishTime);
// No need to mute this event for main resource since it happens after did commit load.
if (m_frontend)
@@ -1058,7 +1058,7 @@ void InspectorController::didFailLoading(unsigned long identifier, const Resourc
return;
resource->markFailed();
- resource->endTiming();
+ resource->endTiming(0);
// No need to mute this event for main resource since it happens after did commit load.
if (m_frontend)
@@ -1493,7 +1493,7 @@ void InspectorController::didCloseWebSocket(unsigned long identifier)
if (!resource)
return;
- resource->endTiming();
+ resource->endTiming(0);
if (m_frontend)
resource->updateScriptObject(m_frontend.get());
}
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 13b6b4e..8801847 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -165,7 +165,7 @@ public:
void willSendRequest(unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse);
void didReceiveResponse(unsigned long identifier, const ResourceResponse&);
void didReceiveContentLength(unsigned long identifier, int lengthReceived);
- void didFinishLoading(unsigned long identifier);
+ void didFinishLoading(unsigned long identifier, double finishTime);
void didFailLoading(unsigned long identifier, const ResourceError&);
void resourceRetrievedByXMLHttpRequest(unsigned long identifier, const ScriptString& sourceString, const String& url, const String& sendURL, unsigned sendLineNumber);
void scriptImported(unsigned long identifier, const String& sourceString);
diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
index 9bc01c8..2d24c4e 100644
--- a/WebCore/inspector/InspectorResource.cpp
+++ b/WebCore/inspector/InspectorResource.cpp
@@ -455,9 +455,9 @@ void InspectorResource::startTiming()
m_changes.set(TimingChange);
}
-void InspectorResource::endTiming()
+void InspectorResource::endTiming(double actualEndTime)
{
- m_endTime = currentTime();
+ m_endTime = actualEndTime ? actualEndTime : currentTime();
m_finished = true;
m_changes.set(TimingChange);
m_changes.set(CompletionChange);
diff --git a/WebCore/inspector/InspectorResource.h b/WebCore/inspector/InspectorResource.h
index 3fd5a69..8a207b0 100644
--- a/WebCore/inspector/InspectorResource.h
+++ b/WebCore/inspector/InspectorResource.h
@@ -117,7 +117,7 @@ namespace WebCore {
void startTiming();
void markLoadEventTime();
void markDOMContentEventTime();
- void endTiming();
+ void endTiming(double actualEndTime);
void markFailed();
void addLength(int lengthReceived);
diff --git a/WebCore/loader/DocumentLoader.cpp b/WebCore/loader/DocumentLoader.cpp
index b88c89e..cf9541a 100644
--- a/WebCore/loader/DocumentLoader.cpp
+++ b/WebCore/loader/DocumentLoader.cpp
@@ -559,7 +559,7 @@ void DocumentLoader::substituteResourceDeliveryTimerFired(Timer<DocumentLoader>*
loader->didReceiveResponse(resource->response());
loader->didReceiveData(data->data(), data->size(), data->size(), true);
- loader->didFinishLoading();
+ loader->didFinishLoading(0);
} else {
// A null resource means that we should fail the load.
// FIXME: Maybe we should use another error here - something like "not in cache".
diff --git a/WebCore/loader/MainResourceLoader.cpp b/WebCore/loader/MainResourceLoader.cpp
index 6a821ca..d976841 100644
--- a/WebCore/loader/MainResourceLoader.cpp
+++ b/WebCore/loader/MainResourceLoader.cpp
@@ -275,9 +275,9 @@ void MainResourceLoader::continueAfterContentPolicy(PolicyAction contentPolicy,
if (m_substituteData.content()->size())
didReceiveData(m_substituteData.content()->data(), m_substituteData.content()->size(), m_substituteData.content()->size(), true);
if (frameLoader() && !frameLoader()->isStopping())
- didFinishLoading();
+ didFinishLoading(0);
} else if (shouldLoadAsEmptyDocument(url) || frameLoader()->representationExistsForURLScheme(url.protocol()))
- didFinishLoading();
+ didFinishLoading(0);
}
}
@@ -420,7 +420,7 @@ void MainResourceLoader::didReceiveData(const char* data, int length, long long
ResourceLoader::didReceiveData(data, length, lengthReceived, allAtOnce);
}
-void MainResourceLoader::didFinishLoading()
+void MainResourceLoader::didFinishLoading(double finishTime)
{
// There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred.
// See <rdar://problem/6304600> for more details.
@@ -439,7 +439,7 @@ void MainResourceLoader::didFinishLoading()
ASSERT(!documentLoader()->timing()->responseEnd);
documentLoader()->timing()->responseEnd = m_timeOfLastDataReceived;
frameLoader()->finishedLoading();
- ResourceLoader::didFinishLoading();
+ ResourceLoader::didFinishLoading(finishTime);
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
dl->applicationCacheHost()->finishedLoadingMainResource();
diff --git a/WebCore/loader/MainResourceLoader.h b/WebCore/loader/MainResourceLoader.h
index e2d075c..35eab2f 100644
--- a/WebCore/loader/MainResourceLoader.h
+++ b/WebCore/loader/MainResourceLoader.h
@@ -58,7 +58,7 @@ namespace WebCore {
virtual void willSendRequest(ResourceRequest&, const ResourceResponse& redirectResponse);
virtual void didReceiveResponse(const ResourceResponse&);
virtual void didReceiveData(const char*, int, long long lengthReceived, bool allAtOnce);
- virtual void didFinishLoading();
+ virtual void didFinishLoading(double finishTime);
virtual void didFail(const ResourceError&);
#if HAVE(RUNLOOP_TIMER)
diff --git a/WebCore/loader/NetscapePlugInStreamLoader.cpp b/WebCore/loader/NetscapePlugInStreamLoader.cpp
index 9d0e81b..1225652 100644
--- a/WebCore/loader/NetscapePlugInStreamLoader.cpp
+++ b/WebCore/loader/NetscapePlugInStreamLoader.cpp
@@ -95,13 +95,13 @@ void NetscapePlugInStreamLoader::didReceiveData(const char* data, int length, lo
ResourceLoader::didReceiveData(data, length, lengthReceived, allAtOnce);
}
-void NetscapePlugInStreamLoader::didFinishLoading()
+void NetscapePlugInStreamLoader::didFinishLoading(double finishTime)
{
RefPtr<NetscapePlugInStreamLoader> protect(this);
m_documentLoader->removePlugInStreamLoader(this);
m_client->didFinishLoading(this);
- ResourceLoader::didFinishLoading();
+ ResourceLoader::didFinishLoading(finishTime);
}
void NetscapePlugInStreamLoader::didFail(const ResourceError& error)
diff --git a/WebCore/loader/NetscapePlugInStreamLoader.h b/WebCore/loader/NetscapePlugInStreamLoader.h
index 092c6fc..c8c4cb6 100644
--- a/WebCore/loader/NetscapePlugInStreamLoader.h
+++ b/WebCore/loader/NetscapePlugInStreamLoader.h
@@ -55,7 +55,7 @@ namespace WebCore {
private:
virtual void didReceiveResponse(const ResourceResponse&);
virtual void didReceiveData(const char*, int, long long lengthReceived, bool allAtOnce);
- virtual void didFinishLoading();
+ virtual void didFinishLoading(double finishTime);
virtual void didFail(const ResourceError&);
virtual void releaseResources();
diff --git a/WebCore/loader/PingLoader.h b/WebCore/loader/PingLoader.h
index 1d8a2d8..e26a9c9 100644
--- a/WebCore/loader/PingLoader.h
+++ b/WebCore/loader/PingLoader.h
@@ -60,7 +60,7 @@ private:
void didReceiveResponse(ResourceHandle*, const ResourceResponse&) { delete this; }
void didReceiveData(ResourceHandle*, const char*, int) { delete this; }
- void didFinishLoading(ResourceHandle*) { delete this; }
+ void didFinishLoading(ResourceHandle*, double) { delete this; }
void didFail(ResourceHandle*, const ResourceError&) { delete this; }
RefPtr<ResourceHandle> m_handle;
diff --git a/WebCore/loader/ResourceLoadNotifier.cpp b/WebCore/loader/ResourceLoadNotifier.cpp
index d225cb8..c43a1da 100644
--- a/WebCore/loader/ResourceLoadNotifier.cpp
+++ b/WebCore/loader/ResourceLoadNotifier.cpp
@@ -82,11 +82,11 @@ void ResourceLoadNotifier::didReceiveData(ResourceLoader* loader, const char* da
dispatchDidReceiveContentLength(loader->documentLoader(), loader->identifier(), lengthReceived);
}
-void ResourceLoadNotifier::didFinishLoad(ResourceLoader* loader)
+void ResourceLoadNotifier::didFinishLoad(ResourceLoader* loader, double finishTime)
{
if (Page* page = m_frame->page())
page->progress()->completeProgress(loader->identifier());
- dispatchDidFinishLoading(loader->documentLoader(), loader->identifier());
+ dispatchDidFinishLoading(loader->documentLoader(), loader->identifier(), finishTime);
}
void ResourceLoadNotifier::didFailToLoad(ResourceLoader* loader, const ResourceError& error)
@@ -150,13 +150,13 @@ void ResourceLoadNotifier::dispatchDidReceiveContentLength(DocumentLoader* loade
#endif
}
-void ResourceLoadNotifier::dispatchDidFinishLoading(DocumentLoader* loader, unsigned long identifier)
+void ResourceLoadNotifier::dispatchDidFinishLoading(DocumentLoader* loader, unsigned long identifier, double finishTime)
{
m_frame->loader()->client()->dispatchDidFinishLoading(loader, identifier);
#if ENABLE(INSPECTOR)
if (Page* page = m_frame->page())
- page->inspectorController()->didFinishLoading(identifier);
+ page->inspectorController()->didFinishLoading(identifier, finishTime);
#endif
}
@@ -169,7 +169,7 @@ void ResourceLoadNotifier::sendRemainingDelegateMessages(DocumentLoader* loader,
dispatchDidReceiveContentLength(loader, identifier, length);
if (error.isNull())
- dispatchDidFinishLoading(loader, identifier);
+ dispatchDidFinishLoading(loader, identifier, 0);
else
m_frame->loader()->client()->dispatchDidFailLoading(loader, identifier, error);
}
diff --git a/WebCore/loader/ResourceLoadNotifier.h b/WebCore/loader/ResourceLoadNotifier.h
index b0a5cbf..758e414 100644
--- a/WebCore/loader/ResourceLoadNotifier.h
+++ b/WebCore/loader/ResourceLoadNotifier.h
@@ -53,14 +53,14 @@ public:
void willSendRequest(ResourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse);
void didReceiveResponse(ResourceLoader*, const ResourceResponse&);
void didReceiveData(ResourceLoader*, const char*, int, int lengthReceived);
- void didFinishLoad(ResourceLoader*);
+ void didFinishLoad(ResourceLoader*, double finishTime);
void didFailToLoad(ResourceLoader*, const ResourceError&);
void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&);
void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse);
void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&);
void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int length);
- void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier);
+ void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier, double finishTime);
void sendRemainingDelegateMessages(DocumentLoader*, unsigned long identifier, const ResourceResponse&, int length, const ResourceError&);
diff --git a/WebCore/loader/ResourceLoader.cpp b/WebCore/loader/ResourceLoader.cpp
index e1d331e..490bc30 100644
--- a/WebCore/loader/ResourceLoader.cpp
+++ b/WebCore/loader/ResourceLoader.cpp
@@ -36,6 +36,7 @@
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
+#include "InspectorController.h"
#include "InspectorTimelineAgent.h"
#include "Page.h"
#include "ProgressTracker.h"
@@ -276,7 +277,7 @@ void ResourceLoader::willStopBufferingData(const char* data, int length)
m_resourceData = SharedBuffer::create(data, length);
}
-void ResourceLoader::didFinishLoading()
+void ResourceLoader::didFinishLoading(double finishTime)
{
// If load has been cancelled after finishing (which could happen with a
// JavaScript that changes the window location), do nothing.
@@ -284,11 +285,11 @@ void ResourceLoader::didFinishLoading()
return;
ASSERT(!m_reachedTerminalState);
- didFinishLoadingOnePart();
+ didFinishLoadingOnePart(finishTime);
releaseResources();
}
-void ResourceLoader::didFinishLoadingOnePart()
+void ResourceLoader::didFinishLoadingOnePart(double finishTime)
{
if (m_cancelled)
return;
@@ -298,7 +299,7 @@ void ResourceLoader::didFinishLoadingOnePart()
return;
m_calledDidFinishLoad = true;
if (m_sendResourceLoadCallbacks)
- frameLoader()->notifier()->didFinishLoad(this);
+ frameLoader()->notifier()->didFinishLoad(this, finishTime);
}
void ResourceLoader::didFail(const ResourceError& error)
@@ -440,9 +441,9 @@ void ResourceLoader::didReceiveData(ResourceHandle*, const char* data, int lengt
#endif
}
-void ResourceLoader::didFinishLoading(ResourceHandle*)
+void ResourceLoader::didFinishLoading(ResourceHandle*, double finishTime)
{
- didFinishLoading();
+ didFinishLoading(finishTime);
}
void ResourceLoader::didFail(ResourceHandle*, const ResourceError& error)
diff --git a/WebCore/loader/ResourceLoader.h b/WebCore/loader/ResourceLoader.h
index 9513fdb..920e3c2 100644
--- a/WebCore/loader/ResourceLoader.h
+++ b/WebCore/loader/ResourceLoader.h
@@ -82,7 +82,7 @@ namespace WebCore {
virtual void didReceiveData(const char*, int, long long lengthReceived, bool allAtOnce);
virtual void didReceiveCachedMetadata(const char*, int) { }
void willStopBufferingData(const char*, int);
- virtual void didFinishLoading();
+ virtual void didFinishLoading(double finishTime);
virtual void didFail(const ResourceError&);
virtual bool shouldUseCredentialStorage();
@@ -99,7 +99,7 @@ namespace WebCore {
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
virtual void didReceiveCachedMetadata(ResourceHandle*, const char* data, int length) { didReceiveCachedMetadata(data, length); }
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double finishTime);
virtual void didFail(ResourceHandle*, const ResourceError&);
virtual void wasBlocked(ResourceHandle*);
virtual void cannotShowURL(ResourceHandle*);
@@ -135,7 +135,7 @@ namespace WebCore {
#endif
virtual void didCancel(const ResourceError&);
- void didFinishLoadingOnePart();
+ void didFinishLoadingOnePart(double finishTime);
const ResourceRequest& request() const { return m_request; }
bool reachedTerminalState() const { return m_reachedTerminalState; }
diff --git a/WebCore/loader/SubresourceLoader.cpp b/WebCore/loader/SubresourceLoader.cpp
index e5cec88..7e1ea8b 100644
--- a/WebCore/loader/SubresourceLoader.cpp
+++ b/WebCore/loader/SubresourceLoader.cpp
@@ -140,7 +140,7 @@ void SubresourceLoader::didReceiveResponse(const ResourceResponse& r)
// After the first multipart section is complete, signal to delegates that this load is "finished"
m_documentLoader->subresourceLoaderFinishedLoadingOnePart(this);
- didFinishLoadingOnePart();
+ didFinishLoadingOnePart(0);
}
}
@@ -168,7 +168,7 @@ void SubresourceLoader::didReceiveCachedMetadata(const char* data, int length)
m_client->didReceiveCachedMetadata(this, data, length);
}
-void SubresourceLoader::didFinishLoading()
+void SubresourceLoader::didFinishLoading(double finishTime)
{
if (cancelled())
return;
@@ -185,7 +185,7 @@ void SubresourceLoader::didFinishLoading()
if (cancelled())
return;
m_documentLoader->removeSubresourceLoader(this);
- ResourceLoader::didFinishLoading();
+ ResourceLoader::didFinishLoading(finishTime);
}
void SubresourceLoader::didFail(const ResourceError& error)
diff --git a/WebCore/loader/SubresourceLoader.h b/WebCore/loader/SubresourceLoader.h
index 4a58345..cb7ed81 100644
--- a/WebCore/loader/SubresourceLoader.h
+++ b/WebCore/loader/SubresourceLoader.h
@@ -52,7 +52,7 @@ namespace WebCore {
virtual void didReceiveResponse(const ResourceResponse&);
virtual void didReceiveData(const char*, int, long long lengthReceived, bool allAtOnce);
virtual void didReceiveCachedMetadata(const char*, int);
- virtual void didFinishLoading();
+ virtual void didFinishLoading(double finishTime);
virtual void didFail(const ResourceError&);
virtual bool shouldUseCredentialStorage();
virtual void didReceiveAuthenticationChallenge(const AuthenticationChallenge&);
diff --git a/WebCore/loader/appcache/ApplicationCacheGroup.cpp b/WebCore/loader/appcache/ApplicationCacheGroup.cpp
index 92723c4..d89f819 100644
--- a/WebCore/loader/appcache/ApplicationCacheGroup.cpp
+++ b/WebCore/loader/appcache/ApplicationCacheGroup.cpp
@@ -602,11 +602,11 @@ void ApplicationCacheGroup::didReceiveData(ResourceHandle* handle, const char* d
m_loadedSize += length;
}
-void ApplicationCacheGroup::didFinishLoading(ResourceHandle* handle)
+void ApplicationCacheGroup::didFinishLoading(ResourceHandle* handle, double finishTime)
{
#if ENABLE(INSPECTOR)
if (Page* page = m_frame->page())
- page->inspectorController()->didFinishLoading(m_currentResourceIdentifier);
+ page->inspectorController()->didFinishLoading(m_currentResourceIdentifier, finishTime);
#endif
if (handle == m_manifestHandle) {
diff --git a/WebCore/loader/appcache/ApplicationCacheGroup.h b/WebCore/loader/appcache/ApplicationCacheGroup.h
index b5cdf7b..99ab71a 100644
--- a/WebCore/loader/appcache/ApplicationCacheGroup.h
+++ b/WebCore/loader/appcache/ApplicationCacheGroup.h
@@ -113,7 +113,7 @@ private:
#endif
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int length, int lengthReceived);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double finishTime);
virtual void didFail(ResourceHandle*, const ResourceError&);
void didReceiveManifestResponse(const ResourceResponse&);
diff --git a/WebCore/loader/icon/IconFetcher.cpp b/WebCore/loader/icon/IconFetcher.cpp
index b33122a..f6b80fa 100644
--- a/WebCore/loader/icon/IconFetcher.cpp
+++ b/WebCore/loader/icon/IconFetcher.cpp
@@ -202,7 +202,7 @@ void IconFetcher::didReceiveData(ResourceHandle* handle, const char* data, int l
m_entries[m_currentEntry].buffer()->append(data, length);
}
-void IconFetcher::didFinishLoading(ResourceHandle* handle)
+void IconFetcher::didFinishLoading(ResourceHandle* handle, double)
{
ASSERT_UNUSED(handle, m_handle == handle);
diff --git a/WebCore/loader/icon/IconFetcher.h b/WebCore/loader/icon/IconFetcher.h
index 5327693..387e1c3 100644
--- a/WebCore/loader/icon/IconFetcher.h
+++ b/WebCore/loader/icon/IconFetcher.h
@@ -62,12 +62,12 @@ private:
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
-
+
Frame* m_frame;
IconFetcherClient* m_client;
-
+
unsigned m_currentEntry;
RefPtr<ResourceHandle> m_handle;
Vector<IconLinkEntry> m_entries;
diff --git a/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp b/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
index 061fa85..4e57193 100644
--- a/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
+++ b/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
@@ -44,7 +44,7 @@ class StreamingClient : public Noncopyable, public ResourceHandleClient {
virtual void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse&);
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
virtual void wasBlocked(ResourceHandle*);
virtual void cannotShowURL(ResourceHandle*);
@@ -766,7 +766,7 @@ void StreamingClient::didReceiveData(ResourceHandle* handle, const char* data, i
GST_ELEMENT_ERROR(m_src, CORE, FAILED, (0), (0));
}
-void StreamingClient::didFinishLoading(ResourceHandle*)
+void StreamingClient::didFinishLoading(ResourceHandle*, double)
{
WebKitWebSrcPrivate* priv = m_src->priv;
diff --git a/WebCore/platform/network/BlobResourceHandle.cpp b/WebCore/platform/network/BlobResourceHandle.cpp
index 8767b55..48ac2c0 100644
--- a/WebCore/platform/network/BlobResourceHandle.cpp
+++ b/WebCore/platform/network/BlobResourceHandle.cpp
@@ -80,7 +80,7 @@ public:
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int /*lengthReceived*/);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
private:
@@ -116,7 +116,7 @@ void BlobResourceSynchronousLoader::didReceiveData(ResourceHandle*, const char*,
{
}
-void BlobResourceSynchronousLoader::didFinishLoading(ResourceHandle*)
+void BlobResourceSynchronousLoader::didFinishLoading(ResourceHandle*, double)
{
}
@@ -581,7 +581,7 @@ void BlobResourceHandle::notifyFail(int errorCode)
void BlobResourceHandle::notifyFinish()
{
if (client())
- client()->didFinishLoading(this);
+ client()->didFinishLoading(this, 0);
}
} // namespace WebCore
diff --git a/WebCore/platform/network/ResourceHandleClient.h b/WebCore/platform/network/ResourceHandleClient.h
index 97c0f54..d9350ee 100644
--- a/WebCore/platform/network/ResourceHandleClient.h
+++ b/WebCore/platform/network/ResourceHandleClient.h
@@ -26,6 +26,7 @@
#ifndef ResourceHandleClient_h
#define ResourceHandleClient_h
+#include <wtf/CurrentTime.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
@@ -72,7 +73,7 @@ namespace WebCore {
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&) { }
virtual void didReceiveData(ResourceHandle*, const char*, int, int /*lengthReceived*/) { }
virtual void didReceiveCachedMetadata(ResourceHandle*, const char*, int) { }
- virtual void didFinishLoading(ResourceHandle*) { }
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/) { }
virtual void didFail(ResourceHandle*, const ResourceError&) { }
virtual void wasBlocked(ResourceHandle*) { }
virtual void cannotShowURL(ResourceHandle*) { }
diff --git a/WebCore/platform/network/cf/ResourceHandleCFNet.cpp b/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
index 763551f..13412c1 100644
--- a/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
+++ b/WebCore/platform/network/cf/ResourceHandleCFNet.cpp
@@ -92,7 +92,7 @@ private:
virtual void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&);
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int /*lengthReceived*/);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
bool m_allowStoredCredentials;
@@ -241,7 +241,7 @@ void didFinishLoading(CFURLConnectionRef conn, const void* clientInfo)
LOG(Network, "CFNet - didFinishLoading(conn=%p, handle=%p) (%s)", conn, handle, handle->firstRequest().url().string().utf8().data());
if (handle->client())
- handle->client()->didFinishLoading(handle);
+ handle->client()->didFinishLoading(handle, 0);
}
void didFail(CFURLConnectionRef conn, CFErrorRef error, const void* clientInfo)
@@ -741,7 +741,7 @@ void WebCoreSynchronousLoaderClient::didReceiveData(ResourceHandle*, const char*
CFDataAppendBytes(m_data.get(), reinterpret_cast<const UInt8*>(data), length);
}
-void WebCoreSynchronousLoaderClient::didFinishLoading(ResourceHandle*)
+void WebCoreSynchronousLoaderClient::didFinishLoading(ResourceHandle*, double)
{
m_isDone = true;
}
diff --git a/WebCore/platform/network/curl/ResourceHandleCurl.cpp b/WebCore/platform/network/curl/ResourceHandleCurl.cpp
index 8a322b4..052ac56 100644
--- a/WebCore/platform/network/curl/ResourceHandleCurl.cpp
+++ b/WebCore/platform/network/curl/ResourceHandleCurl.cpp
@@ -47,7 +47,7 @@ public:
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
ResourceResponse resourceResponse() const { return m_response; }
@@ -74,7 +74,7 @@ void WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char* data,
m_data.append(data, length);
}
-void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*)
+void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*, double)
{
}
diff --git a/WebCore/platform/network/curl/ResourceHandleManager.cpp b/WebCore/platform/network/curl/ResourceHandleManager.cpp
index 8d2a1bf..a4d71e0 100644
--- a/WebCore/platform/network/curl/ResourceHandleManager.cpp
+++ b/WebCore/platform/network/curl/ResourceHandleManager.cpp
@@ -397,7 +397,7 @@ void ResourceHandleManager::downloadTimerCallback(Timer<ResourceHandleManager>*
}
if (d->client())
- d->client()->didFinishLoading(job);
+ d->client()->didFinishLoading(job, 0);
} else {
char* url = 0;
curl_easy_getinfo(d->m_handle, CURLINFO_EFFECTIVE_URL, &url);
@@ -624,7 +624,7 @@ static void parseDataUrl(ResourceHandle* handle)
client->didReceiveData(handle, reinterpret_cast<const char*>(data.characters()), data.length() * sizeof(UChar), 0);
}
- client->didFinishLoading(handle);
+ client->didFinishLoading(handle, 0);
}
void ResourceHandleManager::dispatchSynchronousJob(ResourceHandle* job)
diff --git a/WebCore/platform/network/mac/ResourceHandleMac.mm b/WebCore/platform/network/mac/ResourceHandleMac.mm
index 6db9350..daec366 100644
--- a/WebCore/platform/network/mac/ResourceHandleMac.mm
+++ b/WebCore/platform/network/mac/ResourceHandleMac.mm
@@ -115,7 +115,7 @@ private:
virtual void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&);
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int /*lengthReceived*/);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
virtual bool canAuthenticateAgainstProtectionSpace(ResourceHandle*, const ProtectionSpace&);
@@ -917,7 +917,7 @@ void ResourceHandle::receivedCancellation(const AuthenticationChallenge& challen
if (!ResourceHandle::didSendBodyDataDelegateExists())
disassociateStreamWithResourceHandle([m_handle->firstRequest().nsURLRequest() HTTPBodyStream]);
- m_handle->client()->didFinishLoading(m_handle);
+ m_handle->client()->didFinishLoading(m_handle, 0);
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
@@ -1059,7 +1059,7 @@ void WebCoreSynchronousLoaderClient::didReceiveData(ResourceHandle*, const char*
[m_data appendBytes:data length:length];
}
-void WebCoreSynchronousLoaderClient::didFinishLoading(ResourceHandle*)
+void WebCoreSynchronousLoaderClient::didFinishLoading(ResourceHandle*, double)
{
m_isDone = true;
}
diff --git a/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
index 2898303..30f7011 100644
--- a/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+++ b/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -34,6 +34,7 @@
#include <QNetworkCookie>
#include <qwebframe.h>
#include <qwebpage.h>
+
#include <wtf/text/CString.h>
#include <QDebug>
@@ -262,7 +263,7 @@ void QNetworkReplyHandler::finish()
resetState();
start();
} else if (!m_reply->error() || ignoreHttpError(m_reply, m_responseDataSent)) {
- client->didFinishLoading(m_resourceHandle);
+ client->didFinishLoading(m_resourceHandle, 0);
} else {
QUrl url = m_reply->url();
int httpStatusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
diff --git a/WebCore/platform/network/qt/ResourceHandleQt.cpp b/WebCore/platform/network/qt/ResourceHandleQt.cpp
index 8a24d0f..a5ac4c3 100644
--- a/WebCore/platform/network/qt/ResourceHandleQt.cpp
+++ b/WebCore/platform/network/qt/ResourceHandleQt.cpp
@@ -62,7 +62,7 @@ public:
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
ResourceResponse resourceResponse() const { return m_response; }
@@ -90,7 +90,7 @@ void WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char* data,
m_data.append(data, length);
}
-void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*)
+void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*, double)
{
m_eventLoop.exit();
}
diff --git a/WebCore/platform/network/soup/ResourceHandleSoup.cpp b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
index 1246c22..0009e36 100644
--- a/WebCore/platform/network/soup/ResourceHandleSoup.cpp
+++ b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
@@ -65,7 +65,7 @@ public:
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
void run();
@@ -102,7 +102,7 @@ void WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char* data,
m_data.append(data, length);
}
-void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*)
+void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*, double)
{
g_main_loop_quit(m_mainLoop);
m_finished = true;
@@ -111,7 +111,7 @@ void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*)
void WebCoreSynchronousLoader::didFail(ResourceHandle* handle, const ResourceError& error)
{
m_error = error;
- didFinishLoading(handle);
+ didFinishLoading(handle, 0);
}
void WebCoreSynchronousLoader::run()
@@ -336,7 +336,7 @@ static void finishedCallback(SoupSession *session, SoupMessage* msg, gpointer da
client->didReceiveData(handle.get(), msg->response_body->data, msg->response_body->length, true);
}
- client->didFinishLoading(handle.get());
+ client->didFinishLoading(handle.get(), 0);
}
// parseDataUrl() is taken from the CURL http backend.
@@ -415,7 +415,7 @@ static gboolean parseDataUrl(gpointer callbackData)
if (d->m_cancelled || !handle->client())
return false;
- client->didFinishLoading(handle);
+ client->didFinishLoading(handle, 0);
return false;
}
@@ -717,7 +717,7 @@ static void closeCallback(GObject* source, GAsyncResult* res, gpointer)
if (d->m_cancelled || !client)
return;
- client->didFinishLoading(handle.get());
+ client->didFinishLoading(handle.get(), 0);
}
static void readCallback(GObject* source, GAsyncResult* res, gpointer)
diff --git a/WebCore/platform/network/win/ResourceHandleWin.cpp b/WebCore/platform/network/win/ResourceHandleWin.cpp
index 600f8ca..832a8e2 100644
--- a/WebCore/platform/network/win/ResourceHandleWin.cpp
+++ b/WebCore/platform/network/win/ResourceHandleWin.cpp
@@ -38,6 +38,7 @@
#include "ResourceHandleWin.h"
#include "Timer.h"
#include "WebCoreInstanceHandle.h"
+
#include <wtf/text/CString.h>
#include <windows.h>
#include <wininet.h>
@@ -144,7 +145,7 @@ public:
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int lengthReceived);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double /*finishTime*/);
virtual void didFail(ResourceHandle*, const ResourceError&);
private:
@@ -170,7 +171,7 @@ void WebCoreSynchronousLoader::didReceiveData(ResourceHandle*, const char* data,
m_data.append(data, length);
}
-void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*)
+void WebCoreSynchronousLoader::didFinishLoading(ResourceHandle*, double)
{
}
@@ -349,7 +350,7 @@ void ResourceHandle::onRequestComplete(LPARAM lParam)
InternetCloseHandle(d->m_secondaryHandle);
InternetCloseHandle(d->m_resourceHandle);
- client()->didFinishLoading(this);
+ client()->didFinishLoading(this, 0);
delete this;
}
@@ -511,7 +512,7 @@ void ResourceHandle::fileLoadTimer(Timer<ResourceHandle>*)
CloseHandle(fileHandle);
- client()->didFinishLoading(this);
+ client()->didFinishLoading(this, 0);
}
void ResourceHandle::cancel()
@@ -521,7 +522,7 @@ void ResourceHandle::cancel()
else
d->m_fileLoadTimer.stop();
- client()->didFinishLoading(this);
+ client()->didFinishLoading(this, 0);
if (!d->m_resourceHandle)
// Async load canceled before we have a handle -- mark ourselves as in error, to be deleted later.
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 2f1ddef..600ea39 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,26 @@
+2010-09-14 Pavel Feldman <pfeldman at chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: Provide network-based load timing.
+ Before this change, inspector used timers taken from
+ within WebCore notifications (that are by definition
+ synchronous and serialized). As a result, timing was
+ affected by the routines running on the main thread
+ (JavaScript and such).
+ https://bugs.webkit.org/show_bug.cgi?id=45664
+
+ * public/WebURLLoadTiming.h:
+ * public/WebURLLoaderClient.h:
+ (WebKit::WebURLLoaderClient::didFinishLoading):
+ * src/ResourceHandle.cpp:
+ (WebCore::ResourceHandleInternal::didFinishLoading):
+ * src/WebDevToolsAgentImpl.cpp:
+ (WebKit::WebDevToolsAgentImpl::didFinishLoading):
+ * src/WebURLLoadTiming.cpp:
+ (WebKit::WebURLLoadTiming::receiveHeadersStart):
+ (WebKit::WebURLLoadTiming::setReceiveHeadersStart):
+
2010-09-15 Sheriff Bot <webkit.review.bot at gmail.com>
Unreviewed, rolling out r67551.
diff --git a/WebKit/chromium/public/WebURLLoaderClient.h b/WebKit/chromium/public/WebURLLoaderClient.h
index c716e5d..7614ea3 100644
--- a/WebKit/chromium/public/WebURLLoaderClient.h
+++ b/WebKit/chromium/public/WebURLLoaderClient.h
@@ -64,7 +64,10 @@ public:
virtual void didReceiveCachedMetadata(WebURLLoader*, const char* data, int dataLength) { }
// Called when the load completes successfully.
- virtual void didFinishLoading(WebURLLoader*) { }
+ virtual void didFinishLoading(WebURLLoader*, double finishTime) { }
+
+ // FIXME: remove this once clients are updated.
+ virtual void didFinishLoading(WebURLLoader* loader) { didFinishLoading(loader, 0); }
// Called when the load completes with an error.
virtual void didFail(WebURLLoader*, const WebURLError&) { }
diff --git a/WebKit/chromium/src/ResourceHandle.cpp b/WebKit/chromium/src/ResourceHandle.cpp
index 27bfe7f..83e0017 100644
--- a/WebKit/chromium/src/ResourceHandle.cpp
+++ b/WebKit/chromium/src/ResourceHandle.cpp
@@ -74,7 +74,7 @@ public:
virtual void didReceiveResponse(WebURLLoader*, const WebURLResponse&);
virtual void didReceiveData(WebURLLoader*, const char* data, int dataLength);
virtual void didReceiveCachedMetadata(WebURLLoader*, const char* data, int dataLength);
- virtual void didFinishLoading(WebURLLoader*);
+ virtual void didFinishLoading(WebURLLoader*, double finishTime);
virtual void didFail(WebURLLoader*, const WebURLError&);
enum ConnectionState {
@@ -182,13 +182,13 @@ void ResourceHandleInternal::didReceiveCachedMetadata(WebURLLoader*, const char*
m_client->didReceiveCachedMetadata(m_owner, data, dataLength);
}
-void ResourceHandleInternal::didFinishLoading(WebURLLoader*)
+void ResourceHandleInternal::didFinishLoading(WebURLLoader*, double finishTime)
{
ASSERT(m_client);
if (m_state != ConnectionStateReceivedResponse && m_state != ConnectionStateReceivingData)
CRASH();
m_state = ConnectionStateFinishedLoading;
- m_client->didFinishLoading(m_owner);
+ m_client->didFinishLoading(m_owner, finishTime);
}
void ResourceHandleInternal::didFail(WebURLLoader*, const WebURLError& error)
diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
index 971c290..834d352 100644
--- a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
+++ b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
@@ -58,6 +58,7 @@
#include "WebURLResponse.h"
#include "WebViewClient.h"
#include "WebViewImpl.h"
+#include <wtf/CurrentTime.h>
#include <wtf/Noncopyable.h>
#include <wtf/OwnPtr.h>
@@ -336,7 +337,7 @@ void WebDevToolsAgentImpl::didReceiveResponse(unsigned long resourceId, const We
void WebDevToolsAgentImpl::didFinishLoading(unsigned long resourceId)
{
if (InspectorController* ic = inspectorController())
- ic->didFinishLoading(resourceId);
+ ic->didFinishLoading(resourceId, 0);
}
void WebDevToolsAgentImpl::didFailLoading(unsigned long resourceId, const WebURLError& error)
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index aff63a1..7faa281 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,18 @@
+2010-09-14 Pavel Feldman <pfeldman at chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: Provide network-based load timing.
+ Before this change, inspector used timers taken from
+ within WebCore notifications (that are by definition
+ synchronous and serialized). As a result, timing was
+ affected by the routines running on the main thread
+ (JavaScript and such).
+ https://bugs.webkit.org/show_bug.cgi?id=45664
+
+ * webkit/webkitdownload.cpp:
+ (DownloadClient::didFinishLoading):
+
2010-09-15 Sheriff Bot <webkit.review.bot at gmail.com>
Unreviewed, rolling out r67551.
diff --git a/WebKit/gtk/webkit/webkitdownload.cpp b/WebKit/gtk/webkit/webkitdownload.cpp
index 20cac2b..1e45250 100644
--- a/WebKit/gtk/webkit/webkitdownload.cpp
+++ b/WebKit/gtk/webkit/webkitdownload.cpp
@@ -60,7 +60,7 @@ class DownloadClient : public Noncopyable, public ResourceHandleClient {
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
virtual void didReceiveData(ResourceHandle*, const char*, int, int);
- virtual void didFinishLoading(ResourceHandle*);
+ virtual void didFinishLoading(ResourceHandle*, double);
virtual void didFail(ResourceHandle*, const ResourceError&);
virtual void wasBlocked(ResourceHandle*);
virtual void cannotShowURL(ResourceHandle*);
@@ -930,7 +930,7 @@ void DownloadClient::didReceiveData(ResourceHandle*, const char* data, int lengt
webkit_download_received_data(m_download, data, length);
}
-void DownloadClient::didFinishLoading(ResourceHandle*)
+void DownloadClient::didFinishLoading(ResourceHandle*, double)
{
webkit_download_finished_loading(m_download);
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list