Diff
Modified: trunk/Source/WebCore/ChangeLog (206165 => 206166)
--- trunk/Source/WebCore/ChangeLog 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebCore/ChangeLog 2016-09-20 20:03:45 UTC (rev 206166)
@@ -1,3 +1,22 @@
+2016-09-20 Keith Rollin <krol...@apple.com>
+
+ Adjust current networking logging
+ https://bugs.webkit.org/show_bug.cgi?id=162235
+
+ Reviewed by Antti Koivisto.
+
+ Update the "always on" network logging in order to better track the
+ loading of a particular resource and to better bind together the
+ resources downloaded for a particular page and frame. Do this by
+ consistently logging pageID, frameID, and resourceID.
+
+ No new tests -- there are no tests for logging.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
+ * loader/ResourceLoader.h:
+ (WebCore::ResourceLoader::frame):
+
2016-09-20 Alex Christensen <achristen...@webkit.org>
Non-special URLs should have an opaque origin
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (206165 => 206166)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2016-09-20 20:03:45 UTC (rev 206166)
@@ -2309,7 +2309,7 @@
m_client.dispatchDidFailLoad(error);
loadingEvent = AXObjectCache::AXLoadingFailed;
} else {
- RELEASE_LOG_IF_ALLOWED("checkLoadCompleteForThisFrame: Finished frame load without error (frame = %p, main = %d)", &m_frame, m_frame.isMainFrame());
+ RELEASE_LOG_IF_ALLOWED("checkLoadCompleteForThisFrame: Finished frame load (frame = %p, main = %d)", &m_frame, m_frame.isMainFrame());
#if ENABLE(DATA_DETECTION)
auto* document = m_frame.document();
if (m_frame.settings().dataDetectorTypes() != DataDetectorTypeNone && document) {
Modified: trunk/Source/WebCore/loader/ResourceLoader.h (206165 => 206166)
--- trunk/Source/WebCore/loader/ResourceLoader.h 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebCore/loader/ResourceLoader.h 2016-09-20 20:03:45 UTC (rev 206166)
@@ -148,6 +148,7 @@
void unschedule(WTF::SchedulePair&);
#endif
+ const Frame* frame() const { return m_frame.get(); }
WEBCORE_EXPORT bool isAlwaysOnLoggingAllowed() const;
protected:
Modified: trunk/Source/WebKit2/ChangeLog (206165 => 206166)
--- trunk/Source/WebKit2/ChangeLog 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebKit2/ChangeLog 2016-09-20 20:03:45 UTC (rev 206166)
@@ -1,3 +1,33 @@
+2016-09-20 Keith Rollin <krol...@apple.com>
+
+ Adjust current networking logging
+ https://bugs.webkit.org/show_bug.cgi?id=162235
+
+ Reviewed by Antti Koivisto.
+
+ Update the "always on" network logging in order to better track the
+ loading of a particular resource and to better bind together the
+ resources downloaded for a particular page and frame. Do this by
+ consistently logging pageID, frameID, and resourceID.
+
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::didFinishLoading):
+ (WebKit::NetworkResourceLoader::didFailLoading):
+ (WebKit::NetworkResourceLoader::continueWillSendRequest):
+ * WebProcess/Network/WebLoaderStrategy.cpp:
+ (WebKit::WebLoaderStrategy::scheduleLoad):
+ (WebKit::WebLoaderStrategy::startLocalLoad):
+ * WebProcess/Network/WebResourceLoader.cpp:
+ (WebKit::WebResourceLoader::create):
+ (WebKit::WebResourceLoader::WebResourceLoader):
+ (WebKit::WebResourceLoader::willSendRequest):
+ (WebKit::WebResourceLoader::didReceiveResponse):
+ (WebKit::WebResourceLoader::didReceiveData):
+ (WebKit::WebResourceLoader::didFinishResourceLoad):
+ (WebKit::WebResourceLoader::didFailResourceLoad):
+ (WebKit::WebResourceLoader::didReceiveResource):
+ * WebProcess/Network/WebResourceLoader.h:
+
2016-09-19 Wenson Hsieh <wenson_hs...@apple.com>
Add a unit test covering <https://trac.webkit.org/changeset/205983>
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (206165 => 206166)
--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2016-09-20 20:03:45 UTC (rev 206166)
@@ -289,7 +289,7 @@
auto NetworkResourceLoader::didReceiveResponse(ResourceResponse&& receivedResponse) -> ShouldContinueDidReceiveResponse
{
- RELEASE_LOG_IF_ALLOWED("didReceiveResponse: (pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d, httpStatusCode = %d)", m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), isSynchronous(), receivedResponse.httpStatusCode());
+ RELEASE_LOG_IF_ALLOWED("didReceiveResponse: (pageID = %llu, frameID = %llu, resourceID = %llu, httpStatusCode = %d, length = %lld)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, receivedResponse.httpStatusCode(), receivedResponse.expectedContentLength());
m_response = WTFMove(receivedResponse);
@@ -333,11 +333,11 @@
#endif
if (shouldContinueDidReceiveResponse) {
- RELEASE_LOG_IF_ALLOWED("didReceiveResponse: Should wait for message from WebContent process before continuing resource load (pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d)", static_cast<unsigned long long>(m_parameters.webPageID), static_cast<unsigned long long>(m_parameters.webFrameID), isMainResource(), isSynchronous());
+ RELEASE_LOG_IF_ALLOWED("didReceiveResponse: Should wait for message from WebContent process before continuing resource load (pageID = %llu, frameID = %llu, resourceID = %llu)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);
return ShouldContinueDidReceiveResponse::Yes;
}
- RELEASE_LOG_IF_ALLOWED("didReceiveResponse: Should not wait for message from WebContent process before continuing resource load (pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d)", static_cast<unsigned long long>(m_parameters.webPageID), static_cast<unsigned long long>(m_parameters.webFrameID), isMainResource(), isSynchronous());
+ RELEASE_LOG_IF_ALLOWED("didReceiveResponse: Should not wait for message from WebContent process before continuing resource load (pageID = %llu, frameID = %llu, resourceID = %llu)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);
return ShouldContinueDidReceiveResponse::No;
}
@@ -370,7 +370,7 @@
void NetworkResourceLoader::didFinishLoading(double finishTime)
{
- RELEASE_LOG_IF_ALLOWED("didFinishLoading: (pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d)", static_cast<unsigned long long>(m_parameters.webPageID), static_cast<unsigned long long>(m_parameters.webFrameID), isMainResource(), isSynchronous());
+ RELEASE_LOG_IF_ALLOWED("didFinishLoading: (pageID = %llu, frameID = %llu, resourceID = %llu)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);
#if ENABLE(NETWORK_CACHE)
if (m_cacheEntryForValidation) {
@@ -401,7 +401,7 @@
void NetworkResourceLoader::didFailLoading(const ResourceError& error)
{
- RELEASE_LOG_IF_ALLOWED("didFailLoading: (pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d, isTimeout = %d, isCancellation = %d, errCode = %d)", m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), isSynchronous(), error.isTimeout(), error.isCancellation(), error.errorCode());
+ RELEASE_LOG_IF_ALLOWED("didFailLoading: (pageID = %llu, frameID = %llu, resourceID = %llu, isTimeout = %d, isCancellation = %d, errCode = %d)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, error.isTimeout(), error.isCancellation(), error.errorCode());
ASSERT(!error.isNull());
@@ -447,7 +447,7 @@
void NetworkResourceLoader::continueWillSendRequest(ResourceRequest&& newRequest)
{
- RELEASE_LOG_IF_ALLOWED("continueWillSendRequest: (pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d)", static_cast<unsigned long long>(m_parameters.webPageID), static_cast<unsigned long long>(m_parameters.webFrameID), isMainResource(), isSynchronous());
+ RELEASE_LOG_IF_ALLOWED("continueWillSendRequest: (pageID = %llu, frameID = %llu, resourceID = %llu)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier);
#if ENABLE(NETWORK_CACHE)
if (m_isWaitingContinueWillSendRequestForCachedRedirect) {
Modified: trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp (206165 => 206166)
--- trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp 2016-09-20 20:03:45 UTC (rev 206166)
@@ -132,12 +132,24 @@
ResourceLoadIdentifier identifier = resourceLoader.identifier();
ASSERT(identifier);
+ // FIXME: Some entities in WebCore use WebCore's "EmptyFrameLoaderClient" instead of having a proper WebFrameLoaderClient.
+ // EmptyFrameLoaderClient shouldn't exist and everything should be using a WebFrameLoaderClient,
+ // but in the meantime we have to make sure not to mis-cast.
+ WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(resourceLoader.frameLoader()->client());
+ WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;
+ WebPage* webPage = webFrame ? webFrame->page() : nullptr;
+
+ WebResourceLoader::TrackingParameters trackingParameters;
+ trackingParameters.pageID = webPage ? webPage->pageID() : 0;
+ trackingParameters.frameID = webFrame ? webFrame->frameID() : 0;
+ trackingParameters.resourceID = identifier;
+
#if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
// If the DocumentLoader schedules this as an archive resource load,
// then we should remember the ResourceLoader in our records but not schedule it in the NetworkProcess.
if (resourceLoader.documentLoader()->scheduleArchiveLoad(resourceLoader, resourceLoader.request())) {
LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be handled as an archive resource.", resourceLoader.url().string().utf8().data());
- m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader));
+ m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader, trackingParameters));
return;
}
#endif
@@ -144,7 +156,7 @@
if (resourceLoader.documentLoader()->applicationCacheHost()->maybeLoadResource(resourceLoader, resourceLoader.request(), resourceLoader.request().url())) {
LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be loaded from application cache.", resourceLoader.url().string().utf8().data());
- m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader));
+ m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader, trackingParameters));
return;
}
@@ -177,13 +189,6 @@
ContentSniffingPolicy contentSniffingPolicy = resourceLoader.shouldSniffContent() ? SniffContent : DoNotSniffContent;
StoredCredentials allowStoredCredentials = resourceLoader.shouldUseCredentialStorage() ? AllowStoredCredentials : DoNotAllowStoredCredentials;
- // FIXME: Some entities in WebCore use WebCore's "EmptyFrameLoaderClient" instead of having a proper WebFrameLoaderClient.
- // EmptyFrameLoaderClient shouldn't exist and everything should be using a WebFrameLoaderClient,
- // but in the meantime we have to make sure not to mis-cast.
- WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(resourceLoader.frameLoader()->client());
- WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0;
- WebPage* webPage = webFrame ? webFrame->page() : 0;
-
NetworkResourceLoadParameters loadParameters;
loadParameters.identifier = identifier;
loadParameters.webPageID = webPage ? webPage->pageID() : 0;
@@ -202,7 +207,7 @@
ASSERT((loadParameters.webPageID && loadParameters.webFrameID) || loadParameters.clientCredentialPolicy == ClientCredentialPolicy::CannotAskClientForCredentials);
if (!WebProcess::singleton().networkConnection().connection().send(Messages::NetworkConnectionToWebProcess::ScheduleResourceLoad(loadParameters), 0)) {
- RELEASE_LOG_ERROR_IF_ALLOWED("scheduleLoad: Unable to schedule resource with the NetworkProcess (priority = %d, pageID = %llu, frameID = %llu)", static_cast<int>(resourceLoader.request().priority()), static_cast<unsigned long long>(loadParameters.webPageID), static_cast<unsigned long long>(loadParameters.webFrameID));
+ RELEASE_LOG_ERROR_IF_ALLOWED("scheduleLoad: Unable to schedule resource with the NetworkProcess (frame = %p, priority = %d, pageID = %llu, frameID = %llu, resourceID = %llu)", resourceLoader.frame(), static_cast<int>(resourceLoader.request().priority()), loadParameters.webPageID, loadParameters.identifier, loadParameters.webFrameID);
// We probably failed to schedule this load with the NetworkProcess because it had crashed.
// This load will never succeed so we will schedule it to fail asynchronously.
scheduleInternallyFailedLoad(resourceLoader);
@@ -209,8 +214,8 @@
return;
}
- auto webResourceLoader = WebResourceLoader::create(resourceLoader);
- RELEASE_LOG_IF_ALLOWED("scheduleLoad: Resource will be scheduled with the NetworkProcess (priority = %d, pageID = %llu, frameID = %llu, WebResourceLoader = %p)", static_cast<int>(resourceLoader.request().priority()), static_cast<unsigned long long>(loadParameters.webPageID), static_cast<unsigned long long>(loadParameters.webFrameID), webResourceLoader.ptr());
+ auto webResourceLoader = WebResourceLoader::create(resourceLoader, trackingParameters);
+ RELEASE_LOG_IF_ALLOWED("scheduleLoad: Resource has been queued for scheduling with the NetworkProcess (frame = %p, priority = %d, pageID = %llu, frameID = %llu, resourceID = %llu, WebResourceLoader = %p)", resourceLoader.frame(), static_cast<int>(resourceLoader.request().priority()), loadParameters.webPageID, loadParameters.webFrameID, loadParameters.identifier, webResourceLoader.ptr());
m_webResourceLoaders.set(identifier, WTFMove(webResourceLoader));
}
@@ -232,7 +237,7 @@
void WebLoaderStrategy::startLocalLoad(WebCore::ResourceLoader& resourceLoader)
{
resourceLoader.start();
- m_webResourceLoaders.set(resourceLoader.identifier(), WebResourceLoader::create(resourceLoader));
+ m_webResourceLoaders.set(resourceLoader.identifier(), WebResourceLoader::create(resourceLoader, { }));
}
void WebLoaderStrategy::remove(ResourceLoader* resourceLoader)
Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (206165 => 206166)
--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp 2016-09-20 20:03:45 UTC (rev 206166)
@@ -46,13 +46,14 @@
namespace WebKit {
-Ref<WebResourceLoader> WebResourceLoader::create(Ref<ResourceLoader>&& coreLoader)
+Ref<WebResourceLoader> WebResourceLoader::create(Ref<ResourceLoader>&& coreLoader, const TrackingParameters& trackingParameters)
{
- return adoptRef(*new WebResourceLoader(WTFMove(coreLoader)));
+ return adoptRef(*new WebResourceLoader(WTFMove(coreLoader), trackingParameters));
}
-WebResourceLoader::WebResourceLoader(Ref<WebCore::ResourceLoader>&& coreLoader)
+WebResourceLoader::WebResourceLoader(Ref<WebCore::ResourceLoader>&& coreLoader, const TrackingParameters& trackingParameters)
: m_coreLoader(WTFMove(coreLoader))
+ , m_trackingParameters(trackingParameters)
{
}
@@ -78,7 +79,7 @@
void WebResourceLoader::willSendRequest(ResourceRequest&& proposedRequest, ResourceResponse&& redirectResponse)
{
LOG(Network, "(WebProcess) WebResourceLoader::willSendRequest to '%s'", proposedRequest.url().string().latin1().data());
- RELEASE_LOG_IF_ALLOWED("willSendRequest");
+ RELEASE_LOG_IF_ALLOWED("willSendRequest: (pageID = %llu, frameID = %llu, resourceID = %llu)", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
RefPtr<WebResourceLoader> protectedThis(this);
@@ -101,7 +102,7 @@
void WebResourceLoader::didReceiveResponse(const ResourceResponse& response, bool needsContinueDidReceiveResponseMessage)
{
LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResponse for '%s'. Status %d.", m_coreLoader->url().string().latin1().data(), response.httpStatusCode());
- RELEASE_LOG_IF_ALLOWED("didReceiveResponse: (status = %d)", response.httpStatusCode());
+ RELEASE_LOG_IF_ALLOWED("didReceiveResponse: (pageID = %llu, frameID = %llu, resourceID = %llu, status = %d)", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID, response.httpStatusCode());
Ref<WebResourceLoader> protect(*this);
@@ -135,7 +136,7 @@
LOG(Network, "(WebProcess) WebResourceLoader::didReceiveData of size %lu for '%s'", data.size(), m_coreLoader->url().string().latin1().data());
if (!m_hasReceivedData) {
- RELEASE_LOG_IF_ALLOWED("didReceiveData: (size = %lu)", data.size());
+ RELEASE_LOG_IF_ALLOWED("didReceiveData: Started receiving data (pageID = %llu, frameID = %llu, resourceID = %llu)", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
m_hasReceivedData = true;
}
@@ -151,7 +152,7 @@
void WebResourceLoader::didFinishResourceLoad(double finishTime)
{
LOG(Network, "(WebProcess) WebResourceLoader::didFinishResourceLoad for '%s'", m_coreLoader->url().string().latin1().data());
- RELEASE_LOG_IF_ALLOWED("didFinishResourceLoad");
+ RELEASE_LOG_IF_ALLOWED("didFinishResourceLoad: (pageID = %llu, frameID = %llu, resourceID = %llu)", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
#if USE(QUICK_LOOK)
if (QuickLookHandle* quickLookHandle = m_coreLoader->documentLoader()->quickLookHandle()) {
@@ -165,7 +166,7 @@
void WebResourceLoader::didFailResourceLoad(const ResourceError& error)
{
LOG(Network, "(WebProcess) WebResourceLoader::didFailResourceLoad for '%s'", m_coreLoader->url().string().latin1().data());
- RELEASE_LOG_IF_ALLOWED("didFailResourceLoad");
+ RELEASE_LOG_IF_ALLOWED("didFailResourceLoad: (pageID = %llu, frameID = %llu, resourceID = %llu)", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
#if USE(QUICK_LOOK)
if (QuickLookHandle* quickLookHandle = m_coreLoader->documentLoader()->quickLookHandle())
@@ -180,7 +181,7 @@
void WebResourceLoader::didReceiveResource(const ShareableResource::Handle& handle, double finishTime)
{
LOG(Network, "(WebProcess) WebResourceLoader::didReceiveResource for '%s'", m_coreLoader->url().string().latin1().data());
- RELEASE_LOG_IF_ALLOWED("didReceiveResource");
+ RELEASE_LOG_IF_ALLOWED("didReceiveResource: (pageID = %llu, frameID = %llu, resourceID = %llu)", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
RefPtr<SharedBuffer> buffer = handle.tryWrapInSharedBuffer();
Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h (206165 => 206166)
--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h 2016-09-20 20:01:08 UTC (rev 206165)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h 2016-09-20 20:03:45 UTC (rev 206166)
@@ -41,8 +41,6 @@
}
namespace WebCore {
-class CertificateInfo;
-class ProtectionSpace;
class ResourceError;
class ResourceLoader;
class ResourceRequest;
@@ -55,8 +53,14 @@
class WebResourceLoader : public RefCounted<WebResourceLoader>, public IPC::MessageSender {
public:
- static Ref<WebResourceLoader> create(Ref<WebCore::ResourceLoader>&&);
+ struct TrackingParameters {
+ uint64_t pageID { 0 };
+ uint64_t frameID { 0 };
+ ResourceLoadIdentifier resourceID { 0 };
+ };
+ static Ref<WebResourceLoader> create(Ref<WebCore::ResourceLoader>&&, const TrackingParameters&);
+
~WebResourceLoader();
void didReceiveWebResourceLoaderMessage(IPC::Connection&, IPC::Decoder&);
@@ -68,7 +72,7 @@
bool isAlwaysOnLoggingAllowed() const;
private:
- WebResourceLoader(Ref<WebCore::ResourceLoader>&&);
+ WebResourceLoader(Ref<WebCore::ResourceLoader>&&, const TrackingParameters&);
// IPC::MessageSender
IPC::Connection* messageSenderConnection() override;
@@ -85,6 +89,7 @@
#endif
RefPtr<WebCore::ResourceLoader> m_coreLoader;
+ TrackingParameters m_trackingParameters;
bool m_hasReceivedData { false };
};