⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 254078 in webkit


Ignore:
Timestamp:
Jan 6, 2020, 12:46:38 PM (7 years ago)
Author:
Keith Rollin
Message:

Reformat WebPage logging
​https://bugs.webkit.org/show_bug.cgi?id=205709
<rdar://problem/58290285>

Reviewed by Brent Fulgham.

Update the format used by WebPage in its RELEASE_LOG logging. Use the
format used by WebPageProxy and NetworkResourceLoader, which is
generally of the form:

<object-address> - [<values that help thread together operations>] <class>::<method>: <message and other useful values>

So, for example:

0x4a1df5000 - WebLoaderStrategy::scheduleLoad: Resource is being scheduled with the NetworkProcess (frame=0x4a1db0220, priority=0, webPageID=15, frameID=3, resourceID=32)',

becomes:

0x4a1df5000 - [resourceLoader=0x1418b7200, frameLoader=0x1326d7340, frame=0x4a1db0220, webPageID=15, frameID=3, resourceID=32] WebLoaderStrategy::scheduleLoad: Resource is being scheduled with the NetworkProcess (priority=2)

This new form is a lot more verbose, but it really helps in tracing
activity from the top of our page/frame/resource load stack to the
bottom.

No new tests - no added or changed functionality.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::networkProcessCrashed):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):

  • WebProcess/Network/WebLoaderStrategy.h:
Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r254075 r254078  
     12020-01-06  Keith Rollin  <krollin@apple.com>
     2
     3        Reformat WebPage logging
     4        https://bugs.webkit.org/show_bug.cgi?id=205709
     5        <rdar://problem/58290285>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        Update the format used by WebPage in its RELEASE_LOG logging. Use the
     10        format used by WebPageProxy and NetworkResourceLoader, which is
     11        generally of the form:
     12
     13            <object-address> - [<values that help thread together operations>] <class>::<method>: <message and other useful values>
     14
     15        So, for example:
     16
     17            0x4a1df5000 - WebLoaderStrategy::scheduleLoad: Resource is being scheduled with the NetworkProcess (frame=0x4a1db0220, priority=0, webPageID=15, frameID=3, resourceID=32)',
     18
     19        becomes:
     20
     21            0x4a1df5000 - [resourceLoader=0x1418b7200, frameLoader=0x1326d7340, frame=0x4a1db0220, webPageID=15, frameID=3, resourceID=32] WebLoaderStrategy::scheduleLoad: Resource is being scheduled with the NetworkProcess (priority=2)
     22
     23        This new form is a lot more verbose, but it really helps in tracing
     24        activity from the top of our page/frame/resource load stack to the
     25        bottom.
     26
     27        No new tests - no added or changed functionality.
     28
     29        * WebProcess/Network/WebLoaderStrategy.cpp:
     30        (WebKit::WebLoaderStrategy::scheduleLoad):
     31        (WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):
     32        (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
     33        (WebKit::WebLoaderStrategy::networkProcessCrashed):
     34        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
     35        * WebProcess/Network/WebLoaderStrategy.h:
     36
    1372020-01-06  Luming Yin  <luming_yin@apple.com>
    238
  • trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp

    r253325 r254078  
    7777#endif
    7878
    79 #define RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(WebProcess::singleton().sessionID().isAlwaysOnLoggingAllowed(), Network, "%p - WebLoaderStrategy::" fmt, this, ##__VA_ARGS__)
    80 #define RELEASE_LOG_ERROR_IF_ALLOWED(fmt, ...) RELEASE_LOG_ERROR_IF(WebProcess::singleton().sessionID().isAlwaysOnLoggingAllowed(), Network, "%p - WebLoaderStrategy::" fmt, this, ##__VA_ARGS__)
     79
     80#define RELEASE_LOG_IS_ALLOWED (WebProcess::singleton().sessionID().isAlwaysOnLoggingAllowed())
     81
     82#define RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(RELEASE_LOG_IS_ALLOWED, Network, "%p - WebLoaderStrategy::" fmt, this, ##__VA_ARGS__)
     83#define RELEASE_LOG_ERROR_IF_ALLOWED(fmt, ...) RELEASE_LOG_ERROR_IF(RELEASE_LOG_IS_ALLOWED, Network, "%p - WebLoaderStrategy::" fmt, this, ##__VA_ARGS__)
     84
     85#define WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_TEMPLATE "%p - [resourceLoader=%p, frameLoader=%p, frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 "] WebLoaderStrategy::"
     86#define WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_PARAMETERS this, &resourceLoader, resourceLoader.frameLoader(), resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), trackingParameters.resourceID
     87#define WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_STANDARD_PARAMETERS this, nullptr, &frameLoader, &frameLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), trackingParameters.resourceID
     88
     89#define WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(RELEASE_LOG_IS_ALLOWED, Network, WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_TEMPLATE fmt, WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_PARAMETERS, ##__VA_ARGS__)
     90#define WEBLOADERSTRATEGY_RELEASE_LOG_ERROR_IF_ALLOWED(fmt, ...) RELEASE_LOG_ERROR_IF(RELEASE_LOG_IS_ALLOWED, Network, WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_TEMPLATE fmt, WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_PARAMETERS, ##__VA_ARGS__)
     91
     92#define WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(RELEASE_LOG_IS_ALLOWED, Network, WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_TEMPLATE fmt, WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_STANDARD_PARAMETERS, ##__VA_ARGS__)
     93#define WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_ERROR_IF_ALLOWED(fmt, ...) RELEASE_LOG_ERROR_IF(RELEASE_LOG_IS_ALLOWED, Network, WEBLOADERSTRATEGY_RELEASE_LOG_STANDARD_TEMPLATE fmt, WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_STANDARD_PARAMETERS, ##__VA_ARGS__)
    8194
    8295namespace WebKit {
    … …  
    175188    if (resourceLoader.documentLoader()->scheduleArchiveLoad(resourceLoader, resourceLoader.request())) {
    176189        LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be handled as an archive resource.", resourceLoader.url().string().utf8().data());
    177         RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled as an archive resource (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
     190        WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled as an archive resource");
    178191        m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader, trackingParameters));
    179192        return;
    … …  
    183196    if (resourceLoader.documentLoader()->applicationCacheHost().maybeLoadResource(resourceLoader, resourceLoader.request(), resourceLoader.request().url())) {
    184197        LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be loaded from application cache.", resourceLoader.url().string().utf8().data());
    185         RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be loaded from application cache (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
     198        WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be loaded from application cache");
    186199        m_webResourceLoaders.set(identifier, WebResourceLoader::create(resourceLoader, trackingParameters));
    187200        return;
    … …  
    190203    if (resourceLoader.request().url().protocolIsData()) {
    191204        LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be loaded as data.", resourceLoader.url().string().utf8().data());
    192         RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be loaded as data (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
     205        WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be loaded as data");
    193206        startLocalLoad(resourceLoader);
    194207        return;
    … …  
    198211    if (isQuickLookPreviewURL(resourceLoader.request().url())) {
    199212        LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be handled as a QuickLook resource.", resourceLoader.url().string().utf8().data());
    200         RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled as a QuickLook resource (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
     213        WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled as a QuickLook resource");
    201214        startLocalLoad(resourceLoader);
    202215        return;
    … …  
    209222    if (resourceLoader.request().url().protocolIs("resource")) {
    210223        LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, url '%s' will be handled as a GResource.", resourceLoader.url().string().utf8().data());
    211         RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled as a GResource (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
     224        WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled as a GResource");
    212225        startLocalLoad(resourceLoader);
    213226        return;
    … …  
    215228#endif
    216229
    217     if (!tryLoadingUsingURLSchemeHandler(resourceLoader)) {
    218         RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be scheduled with the NetworkProcess (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
     230    if (!tryLoadingUsingURLSchemeHandler(resourceLoader, trackingParameters)) {
     231        WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be scheduled with the NetworkProcess");
    219232        scheduleLoadFromNetworkProcess(resourceLoader, resourceLoader.request(), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
    220233        return;
    221234    }
    222     RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL not handled by any handlers (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
    223 }
    224 
    225 bool WebLoaderStrategy::tryLoadingUsingURLSchemeHandler(ResourceLoader& resourceLoader)
     235
     236    WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL not handled by any handlers");
     237}
     238
     239bool WebLoaderStrategy::tryLoadingUsingURLSchemeHandler(ResourceLoader& resourceLoader, const WebResourceLoader::TrackingParameters& trackingParameters)
    226240{
    227241    auto* webFrameLoaderClient = toWebFrameLoaderClient(resourceLoader.frameLoader()->client());
    … …  
    231245        if (auto* handler = webPage->urlSchemeHandlerForScheme(resourceLoader.request().url().protocol().toStringWithoutCopying())) {
    232246            LOG(NetworkScheduling, "(WebProcess) WebLoaderStrategy::scheduleLoad, URL '%s' will be handled by a UIProcess URL scheme handler.", resourceLoader.url().string().utf8().data());
    233             RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be handled by a UIProcess URL scheme handler (frame=%p, resourceID=%lu)", resourceLoader.frame(), resourceLoader.identifier());
     247            WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("tryLoadingUsingURLSchemeHandler: URL will be handled by a UIProcess URL scheme handler");
    234248
    235249            handler->startNewTask(resourceLoader);
    … …  
    322336        ASSERT(loadParameters.sourceOrigin);
    323337        if (!loadParameters.sourceOrigin) {
    324             RELEASE_LOG_ERROR_IF_ALLOWED("scheduleLoad: no sourceOrigin (frame=%p, priority=%d, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), static_cast<int>(resourceLoader.request().priority()), loadParameters.webPageID.toUInt64(), loadParameters.webFrameID.toUInt64(), loadParameters.identifier);
     338            WEBLOADERSTRATEGY_RELEASE_LOG_ERROR_IF_ALLOWED("scheduleLoad: no sourceOrigin (priority=%d)", static_cast<int>(resourceLoader.request().priority()));
    325339            scheduleInternallyFailedLoad(resourceLoader);
    326340            return;
    … …  
    345359    ASSERT((loadParameters.webPageID && loadParameters.webFrameID) || loadParameters.clientCredentialPolicy == ClientCredentialPolicy::CannotAskClientForCredentials);
    346360
    347     RELEASE_LOG_IF_ALLOWED("scheduleLoad: Resource is being scheduled with the NetworkProcess (frame=%p, priority=%d, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), static_cast<int>(resourceLoader.request().priority()), loadParameters.webPageID.toUInt64(), loadParameters.webFrameID.toUInt64(), loadParameters.identifier);
     361    WEBLOADERSTRATEGY_RELEASE_LOG_IF_ALLOWED("scheduleLoad: Resource is being scheduled with the NetworkProcess (priority=%d)", static_cast<int>(resourceLoader.request().priority()));
    348362    if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::ScheduleResourceLoad(loadParameters), 0)) {
    349         RELEASE_LOG_ERROR_IF_ALLOWED("scheduleLoad: Unable to schedule resource with the NetworkProcess (frame=%p, priority=%d, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), static_cast<int>(resourceLoader.request().priority()), loadParameters.webPageID.toUInt64(), loadParameters.webFrameID.toUInt64(), loadParameters.identifier);
     363        WEBLOADERSTRATEGY_RELEASE_LOG_ERROR_IF_ALLOWED("scheduleLoad: Unable to schedule resource with the NetworkProcess (priority=%d)", static_cast<int>(resourceLoader.request().priority()));
    350364        // We probably failed to schedule this load with the NetworkProcess because it had crashed.
    351365        // This load will never succeed so we will schedule it to fail asynchronously.
    … …  
    458472void WebLoaderStrategy::networkProcessCrashed()
    459473{
    460     RELEASE_LOG_ERROR(Network, "WebLoaderStrategy::networkProcessCrashed: failing all pending resource loaders");
     474    RELEASE_LOG_ERROR_IF_ALLOWED("networkProcessCrashed: failing all pending resource loaders");
    461475
    462476    for (auto& loader : m_webResourceLoaders.values()) {
    … …  
    515529    auto frameID = webFrame ? webFrame->frameID() : FrameIdentifier { };
    516530
     531    WebResourceLoader::TrackingParameters trackingParameters;
     532    trackingParameters.pageID = pageID;
     533    trackingParameters.frameID = frameID;
     534    trackingParameters.resourceID = resourceLoadIdentifier;
     535
    517536    auto* document = frameLoader.frame().document();
    518537    if (!document) {
    519         RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: no document (webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%lu)", pageID.toUInt64(), frameID.toUInt64(), resourceLoadIdentifier);
     538        WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: no document");
    520539        error = internalError(request.url());
    521540        return;
    … …  
    523542
    524543    if (auto syncLoadResult = tryLoadingSynchronouslyUsingURLSchemeHandler(frameLoader, resourceLoadIdentifier, request)) {
    525         RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: failed calling tryLoadingSynchronouslyUsingURLSchemeHandler (webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%lu, error=%d)", pageID.toUInt64(), frameID.toUInt64(), resourceLoadIdentifier, syncLoadResult->error.errorCode());
     544        WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: failed calling tryLoadingSynchronouslyUsingURLSchemeHandler (error=%d)", syncLoadResult->error.errorCode());
    526545        error = WTFMove(syncLoadResult->error);
    527546        response = WTFMove(syncLoadResult->response);
    … …  
    566585
    567586    if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().sendSync(Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad(loadParameters), Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::Reply(error, response, data), 0)) {
    568         RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: failed sending synchronous network process message (webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%lu)", pageID.toUInt64(), frameID.toUInt64(), resourceLoadIdentifier);
     587        WEBLOADERSTRATEGY_WITH_FRAMELOADER_RELEASE_LOG_ERROR_IF_ALLOWED("loadResourceSynchronously: failed sending synchronous network process message");
    569588        if (auto* page = webPage ? webPage->corePage() : nullptr)
    570589            page->diagnosticLoggingClient().logDiagnosticMessage(WebCore::DiagnosticLoggingKeys::internalErrorKey(), WebCore::DiagnosticLoggingKeys::synchronousMessageFailedKey(), WebCore::ShouldSample::No);
  • trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h

    r253325 r254078  
    9494    void internallyFailedLoadTimerFired();
    9595    void startLocalLoad(WebCore::ResourceLoader&);
    96     bool tryLoadingUsingURLSchemeHandler(WebCore::ResourceLoader&);
     96    bool tryLoadingUsingURLSchemeHandler(WebCore::ResourceLoader&, const WebResourceLoader::TrackingParameters&);
    9797   
    9898    struct SyncLoadResult {
Note: See TracChangeset for help on using the changeset viewer.