Changeset 217737 in webkit


Ignore:
Timestamp:
Jun 2, 2017 4:06:13 PM (7 years ago)
Author:
Simon Fraser
Message:

All scroll peformance logging should happen in the UI process
https://bugs.webkit.org/show_bug.cgi?id=172874
rdar://problem/24474830

Reviewed by Tim Horton.

Printing to stdout from the WebProcess doesn't show up anywhere in non-development builds,
so we have to log from the UI process.

Achieve this by adding a PerformanceLoggingClient to Page which forwards messages to
WebPageProxy, which prints them with the same format they had before. Some plumbing through
PlatformCALayerClient and GraphicsLayerClient is required to get messages from TileControllers
through to something that can get to Page.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::~Page):

  • page/Page.h:

(WebCore::Page::performanceLoggingClient):

  • page/PageConfiguration.cpp:
  • page/PageConfiguration.h:
  • page/PerformanceLoggingClient.cpp: Added.

(WebCore::PerformanceLoggingClient::synchronousScrollingReasonsAsString):

  • page/PerformanceLoggingClient.h: Added.

(WebCore::PerformanceLoggingClient::~PerformanceLoggingClient):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::reportExposedUnfilledArea):
(WebCore::AsyncScrollingCoordinator::reportSynchronousScrollingReasonsChanged):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::reportSynchronousScrollingReasonsChanged):
(WebCore::ScrollingTree::reportExposedUnfilledArea):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::reportSynchronousScrollingReasonsChanged):
(WebCore::ThreadedScrollingTree::reportExposedUnfilledArea):

  • page/scrolling/ThreadedScrollingTree.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea):
(WebCore::ScrollingTreeFrameScrollingNodeMac::logExposedUnfilledArea): Deleted.
(WebCore::logThreadedScrollingMode): Deleted.

  • platform/graphics/GraphicsLayerClient.h:

(WebCore::GraphicsLayerClient::logFilledVisibleFreshTile):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::platformCALayerLogFilledVisibleFreshTile):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayerClient.h:

(WebCore::PlatformCALayerClient::platformCALayerLogFilledVisibleFreshTile):

  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::logFilledVisibleFreshTile):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::platformCALayerPaintContents):

  • platform/graphics/ca/TileGrid.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::logFilledVisibleFreshTile):

  • rendering/RenderLayerBacking.h:

Source/WebKit2:

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::logScrollingEvent):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp: Added.

(WebKit::WebPerformanceLoggingClient::WebPerformanceLoggingClient):
(WebKit::WebPerformanceLoggingClient::logScrollingEvent):

  • WebProcess/WebCoreSupport/WebPerformanceLoggingClient.h: Added.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_cpuLimit):

Location:
trunk/Source
Files:
2 added
31 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r217639 r217737  
    20862086    page/PerformanceEntry.cpp
    20872087    page/PerformanceLogging.cpp
     2088    page/PerformanceLoggingClient.cpp
    20882089    page/PerformanceMonitor.cpp
    20892090    page/PerformanceNavigation.cpp
  • trunk/Source/WebCore/ChangeLog

    r217734 r217737  
     12017-06-02  Simon Fraser  <simon.fraser@apple.com>
     2
     3        All scroll peformance logging should happen in the UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=172874
     5        rdar://problem/24474830
     6
     7        Reviewed by Tim Horton.
     8
     9        Printing to stdout from the WebProcess doesn't show up anywhere in non-development builds,
     10        so we have to log from the UI process.
     11
     12        Achieve this by adding a PerformanceLoggingClient to Page which forwards messages to
     13        WebPageProxy, which prints them with the same format they had before. Some plumbing through
     14        PlatformCALayerClient and GraphicsLayerClient is required to get messages from TileControllers
     15        through to something that can get to Page.
     16
     17        * WebCore.xcodeproj/project.pbxproj:
     18        * page/Page.cpp:
     19        (WebCore::Page::Page):
     20        (WebCore::Page::~Page):
     21        * page/Page.h:
     22        (WebCore::Page::performanceLoggingClient):
     23        * page/PageConfiguration.cpp:
     24        * page/PageConfiguration.h:
     25        * page/PerformanceLoggingClient.cpp: Added.
     26        (WebCore::PerformanceLoggingClient::synchronousScrollingReasonsAsString):
     27        * page/PerformanceLoggingClient.h: Added.
     28        (WebCore::PerformanceLoggingClient::~PerformanceLoggingClient):
     29        * page/scrolling/AsyncScrollingCoordinator.cpp:
     30        (WebCore::AsyncScrollingCoordinator::reportExposedUnfilledArea):
     31        (WebCore::AsyncScrollingCoordinator::reportSynchronousScrollingReasonsChanged):
     32        * page/scrolling/AsyncScrollingCoordinator.h:
     33        * page/scrolling/ScrollingTree.h:
     34        (WebCore::ScrollingTree::reportSynchronousScrollingReasonsChanged):
     35        (WebCore::ScrollingTree::reportExposedUnfilledArea):
     36        * page/scrolling/ThreadedScrollingTree.cpp:
     37        (WebCore::ThreadedScrollingTree::reportSynchronousScrollingReasonsChanged):
     38        (WebCore::ThreadedScrollingTree::reportExposedUnfilledArea):
     39        * page/scrolling/ThreadedScrollingTree.h:
     40        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
     41        * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
     42        (WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
     43        (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
     44        (WebCore::ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea):
     45        (WebCore::ScrollingTreeFrameScrollingNodeMac::logExposedUnfilledArea): Deleted.
     46        (WebCore::logThreadedScrollingMode): Deleted.
     47        * platform/graphics/GraphicsLayerClient.h:
     48        (WebCore::GraphicsLayerClient::logFilledVisibleFreshTile):
     49        * platform/graphics/ca/GraphicsLayerCA.cpp:
     50        (WebCore::GraphicsLayerCA::platformCALayerLogFilledVisibleFreshTile):
     51        * platform/graphics/ca/GraphicsLayerCA.h:
     52        * platform/graphics/ca/PlatformCALayerClient.h:
     53        (WebCore::PlatformCALayerClient::platformCALayerLogFilledVisibleFreshTile):
     54        * platform/graphics/ca/TileController.cpp:
     55        (WebCore::TileController::logFilledVisibleFreshTile):
     56        * platform/graphics/ca/TileController.h:
     57        * platform/graphics/ca/TileGrid.cpp:
     58        (WebCore::TileGrid::platformCALayerPaintContents):
     59        * platform/graphics/ca/TileGrid.h:
     60        * rendering/RenderLayerBacking.cpp:
     61        (WebCore::RenderLayerBacking::logFilledVisibleFreshTile):
     62        * rendering/RenderLayerBacking.h:
     63
    1642017-06-02  Eric Carlson  <eric.carlson@apple.com>
    265
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r217639 r217737  
    487487                0F7D07331884C56C00B4AF86 /* PlatformTextTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = 072847E216EBC5B00043CFA4 /* PlatformTextTrack.h */; settings = {ATTRIBUTES = (Private, ); }; };
    488488                0F7DF1481E2BF1B10095951B /* WebCoreJSClientData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F7DF1471E2BF1A60095951B /* WebCoreJSClientData.cpp */; };
     489                0F850FE31ED7C18300FB77A7 /* PerformanceLoggingClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F850FE21ED7C18300FB77A7 /* PerformanceLoggingClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    489490                0F87166F1C869D83004FF0DE /* LengthPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F87166D1C869D83004FF0DE /* LengthPoint.cpp */; };
    490491                0F8716701C869D83004FF0DE /* LengthPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F87166E1C869D83004FF0DE /* LengthPoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    557558                0FEF20CE1BD4A24100128E5D /* LengthSize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEF20CD1BD4A24100128E5D /* LengthSize.cpp */; };
    558559                0FEF20D01BD4A64F00128E5D /* RenderStyleConstants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEF20CF1BD4A64F00128E5D /* RenderStyleConstants.cpp */; };
     560                0FF2E80D1EE0D430009EABD4 /* PerformanceLoggingClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF2E80C1EE0D430009EABD4 /* PerformanceLoggingClient.cpp */; };
    559561                0FF50269102BA9430066F39A /* JSStyleMedia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF50267102BA9430066F39A /* JSStyleMedia.cpp */; };
    560562                0FF5026A102BA9430066F39A /* JSStyleMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF50268102BA9430066F39A /* JSStyleMedia.h */; };
     
    79187920                0F6A12BC1A00923700C6DE72 /* DebugPageOverlays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugPageOverlays.h; sourceTree = "<group>"; };
    79197921                0F7DF1471E2BF1A60095951B /* WebCoreJSClientData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreJSClientData.cpp; sourceTree = "<group>"; };
     7922                0F850FE21ED7C18300FB77A7 /* PerformanceLoggingClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceLoggingClient.h; sourceTree = "<group>"; };
    79207923                0F87166D1C869D83004FF0DE /* LengthPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LengthPoint.cpp; sourceTree = "<group>"; };
    79217924                0F87166E1C869D83004FF0DE /* LengthPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthPoint.h; sourceTree = "<group>"; };
     
    79917994                0FEF20CD1BD4A24100128E5D /* LengthSize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LengthSize.cpp; sourceTree = "<group>"; };
    79927995                0FEF20CF1BD4A64F00128E5D /* RenderStyleConstants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderStyleConstants.cpp; sourceTree = "<group>"; };
     7996                0FF2E80C1EE0D430009EABD4 /* PerformanceLoggingClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PerformanceLoggingClient.cpp; sourceTree = "<group>"; };
    79937997                0FF50267102BA9430066F39A /* JSStyleMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStyleMedia.cpp; sourceTree = "<group>"; };
    79947998                0FF50268102BA9430066F39A /* JSStyleMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStyleMedia.h; sourceTree = "<group>"; };
     
    1934919353                                37C738E81EDBD2ED003F2B0B /* PerformanceMark.h */,
    1935019354                                37C738EA1EDBD381003F2B0B /* PerformanceMeasure.h */,
     19355                                0F850FE21ED7C18300FB77A7 /* PerformanceLoggingClient.h */,
     19356                                0FF2E80C1EE0D430009EABD4 /* PerformanceLoggingClient.cpp */,
    1935119357                                83FE90251E307C1C003E9199 /* PerformanceMonitor.cpp */,
    1935219358                                83FE90261E307C1C003E9199 /* PerformanceMonitor.h */,
     
    2997429980                                A863E2011343412000274926 /* UnicodeBidi.h in Headers */,
    2997529981                                518864E11BBAF57400E540C9 /* UniqueIDBDatabase.h in Headers */,
     29982                                0F850FE31ED7C18300FB77A7 /* PerformanceLoggingClient.h in Headers */,
    2997629983                                5198F7A51BBDB79300E2CC5F /* UniqueIDBDatabaseConnection.h in Headers */,
    2997729984                                5198F7A91BBDD38500E2CC5F /* UniqueIDBDatabaseTransaction.h in Headers */,
     
    3320933216                                8A413AE11207BBA50082016E /* ScriptRunner.cpp in Sources */,
    3321033217                                4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */,
     33218                                0FF2E80D1EE0D430009EABD4 /* PerformanceLoggingClient.cpp in Sources */,
    3321133219                                BC8AE34E12EA096A00EB3AE6 /* ScrollableArea.cpp in Sources */,
    3321233220                                5D925B670F64D4DD00B847F0 /* ScrollAlignment.cpp in Sources */,
  • trunk/Source/WebCore/page/Page.cpp

    r217576 r217737  
    7171#include "PageGroup.h"
    7272#include "PageOverlayController.h"
     73#include "PerformanceLoggingClient.h"
    7374#include "PerformanceMonitor.h"
    7475#include "PlatformMediaSessionManager.h"
     
    211212    , m_validationMessageClient(WTFMove(pageConfiguration.validationMessageClient))
    212213    , m_diagnosticLoggingClient(WTFMove(pageConfiguration.diagnosticLoggingClient))
     214    , m_performanceLoggingClient(WTFMove(pageConfiguration.performanceLoggingClient))
    213215    , m_webGLStateTracker(WTFMove(pageConfiguration.webGLStateTracker))
    214216    , m_libWebRTCProvider(WTFMove(pageConfiguration.libWebRTCProvider))
     
    308310    m_validationMessageClient = nullptr;
    309311    m_diagnosticLoggingClient = nullptr;
     312    m_performanceLoggingClient = nullptr;
    310313    m_mainFrame->setView(nullptr);
    311314    setGroupName(String());
  • trunk/Source/WebCore/page/Page.h

    r217576 r217737  
    110110class PageDebuggable;
    111111class PageGroup;
     112class PerformanceLoggingClient;
    112113class PerformanceMonitor;
    113114class PlugInClient;
     
    371372    WEBCORE_EXPORT DiagnosticLoggingClient& diagnosticLoggingClient() const;
    372373
     374    PerformanceLoggingClient* performanceLoggingClient() const { return m_performanceLoggingClient.get(); }
     375
    373376    // Notifications when the Page starts and stops being presented via a native window.
    374377    WEBCORE_EXPORT void setActivityState(ActivityState::Flags);
     
    670673    std::unique_ptr<ValidationMessageClient> m_validationMessageClient;
    671674    std::unique_ptr<DiagnosticLoggingClient> m_diagnosticLoggingClient;
     675    std::unique_ptr<PerformanceLoggingClient> m_performanceLoggingClient;
     676   
    672677    std::unique_ptr<WebGLStateTracker> m_webGLStateTracker;
    673678
  • trunk/Source/WebCore/page/PageConfiguration.cpp

    r211161 r217737  
    3333#include "EditorClient.h"
    3434#include "LibWebRTCProvider.h"
     35#include "PerformanceLoggingClient.h"
    3536#include "PluginInfoProvider.h"
    3637#include "SocketProvider.h"
  • trunk/Source/WebCore/page/PageConfiguration.h

    r211161 r217737  
    4545class LibWebRTCProvider;
    4646class PaymentCoordinatorClient;
     47class PerformanceLoggingClient;
    4748class PlugInClient;
    4849class PluginInfoProvider;
     
    8283    FrameLoaderClient* loaderClientForMainFrame { nullptr };
    8384    std::unique_ptr<DiagnosticLoggingClient> diagnosticLoggingClient;
     85    std::unique_ptr<PerformanceLoggingClient> performanceLoggingClient;
    8486    std::unique_ptr<WebGLStateTracker> webGLStateTracker;
    8587
  • trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp

    r216592 r217737  
    3838#include "MainFrame.h"
    3939#include "Page.h"
     40#include "PerformanceLoggingClient.h"
    4041#include "ScrollAnimator.h"
    4142#include "ScrollingConstraints.h"
     
    695696}
    696697#endif
    697    
     698
     699void AsyncScrollingCoordinator::reportExposedUnfilledArea(MonotonicTime timestamp, unsigned unfilledArea)
     700{
     701    if (m_page && m_page->performanceLoggingClient())
     702        m_page->performanceLoggingClient()->logScrollingEvent(PerformanceLoggingClient::ScrollingEvent::ExposedTilelessArea, timestamp, unfilledArea);
     703}
     704
     705void AsyncScrollingCoordinator::reportSynchronousScrollingReasonsChanged(MonotonicTime timestamp, SynchronousScrollingReasons reasons)
     706{
     707    if (m_page && m_page->performanceLoggingClient())
     708        m_page->performanceLoggingClient()->logScrollingEvent(PerformanceLoggingClient::ScrollingEvent::SwitchedScrollingMode, timestamp, reasons);
     709}
     710
    698711} // namespace WebCore
    699712
  • trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h

    r216592 r217737  
    6565
    6666    WEBCORE_EXPORT void updateExpectsWheelEventTestTriggerWithFrameView(const FrameView&) override;
     67
     68    void reportExposedUnfilledArea(MonotonicTime, unsigned unfilledArea);
     69    void reportSynchronousScrollingReasonsChanged(MonotonicTime, SynchronousScrollingReasons);
    6770
    6871protected:
  • trunk/Source/WebCore/page/scrolling/ScrollingTree.h

    r211033 r217737  
    9494    WEBCORE_EXPORT virtual void currentSnapPointIndicesDidChange(ScrollingNodeID, unsigned horizontal, unsigned vertical) = 0;
    9595
     96    WEBCORE_EXPORT virtual void reportSynchronousScrollingReasonsChanged(MonotonicTime, SynchronousScrollingReasons) { }
     97    WEBCORE_EXPORT virtual void reportExposedUnfilledArea(MonotonicTime, unsigned /* unfilledArea */) { }
     98
    9699    FloatPoint mainFrameScrollPosition();
    97100   
  • trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp

    r211033 r217737  
    106106}
    107107
     108void ThreadedScrollingTree::reportSynchronousScrollingReasonsChanged(MonotonicTime timestamp, SynchronousScrollingReasons reasons)
     109{
     110    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, timestamp, reasons] {
     111        scrollingCoordinator->reportSynchronousScrollingReasonsChanged(timestamp, reasons);
     112    });
     113}
     114
     115void ThreadedScrollingTree::reportExposedUnfilledArea(MonotonicTime timestamp, unsigned unfilledArea)
     116{
     117    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, timestamp, unfilledArea] {
     118        scrollingCoordinator->reportExposedUnfilledArea(timestamp, unfilledArea);
     119    });
     120}
     121
    108122void ThreadedScrollingTree::currentSnapPointIndicesDidChange(ScrollingNodeID nodeID, unsigned horizontal, unsigned vertical)
    109123{
  • trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.h

    r211033 r217737  
    6767#endif
    6868
     69    void reportExposedUnfilledArea(MonotonicTime, unsigned unfilledArea) override;
     70    void reportSynchronousScrollingReasonsChanged(MonotonicTime, SynchronousScrollingReasons) override;
     71
    6972private:
    7073    bool isThreadedScrollingTree() const override { return true; }
  • trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h

    r209070 r217737  
    9494#endif
    9595
    96     void logExposedUnfilledArea();
     96    unsigned exposedUnfilledArea() const;
    9797
    9898    ScrollController m_scrollController;
  • trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm

    r210828 r217737  
    4545#import <wtf/CurrentTime.h>
    4646#import <wtf/Deque.h>
    47 #import <wtf/text/StringBuilder.h>
    4847#import <wtf/text/CString.h>
    4948
    5049namespace WebCore {
    51 
    52 static void logThreadedScrollingMode(unsigned synchronousScrollingReasons);
    5350
    5451Ref<ScrollingTreeFrameScrollingNode> ScrollingTreeFrameScrollingNodeMac::create(ScrollingTree& scrollingTree, ScrollingNodeID nodeID)
     
    150147    }
    151148
    152     if (logScrollingMode) {
    153         if (scrollingTree().scrollingPerformanceLoggingEnabled())
    154             logThreadedScrollingMode(synchronousScrollingReasons());
    155     }
     149    if (logScrollingMode && scrollingTree().scrollingPerformanceLoggingEnabled())
     150        scrollingTree().reportSynchronousScrollingReasonsChanged(MonotonicTime::now(), synchronousScrollingReasons());
    156151
    157152#if ENABLE(CSS_SCROLL_SNAP)
     
    390385    ScrollingTreeFrameScrollingNode::setScrollPosition(roundedPosition);
    391386
    392     if (scrollingTree().scrollingPerformanceLoggingEnabled())
    393         logExposedUnfilledArea();
     387    if (scrollingTree().scrollingPerformanceLoggingEnabled()) {
     388        unsigned unfilledArea = exposedUnfilledArea();
     389        if (unfilledArea || m_lastScrollHadUnfilledPixels)
     390            scrollingTree().reportExposedUnfilledArea(MonotonicTime::now(), unfilledArea);
     391
     392        m_lastScrollHadUnfilledPixels = unfilledArea;
     393    }
    394394}
    395395
     
    530530}
    531531
    532 void ScrollingTreeFrameScrollingNodeMac::logExposedUnfilledArea()
     532unsigned ScrollingTreeFrameScrollingNodeMac::exposedUnfilledArea() const
    533533{
    534534    Region paintedVisibleTiles;
     
    556556    FloatPoint scrollPosition = this->scrollPosition();
    557557    FloatRect viewPortRect(FloatPoint(), scrollableAreaSize());
    558     unsigned unfilledArea = TileController::blankPixelCountForTiles(tiles, viewPortRect, IntPoint(-scrollPosition.x(), -scrollPosition.y()));
    559 
    560     if (unfilledArea || m_lastScrollHadUnfilledPixels)
    561         WTFLogAlways("SCROLLING: Exposed tileless area. Time: %f Unfilled Pixels: %u\n", WTF::monotonicallyIncreasingTime(), unfilledArea);
    562 
    563     m_lastScrollHadUnfilledPixels = unfilledArea;
    564 }
    565 
    566 static void logThreadedScrollingMode(unsigned synchronousScrollingReasons)
    567 {
    568     if (synchronousScrollingReasons) {
    569         StringBuilder reasonsDescription;
    570 
    571         if (synchronousScrollingReasons & ScrollingCoordinator::ForcedOnMainThread)
    572             reasonsDescription.appendLiteral("forced,");
    573         if (synchronousScrollingReasons & ScrollingCoordinator::HasSlowRepaintObjects)
    574             reasonsDescription.appendLiteral("slow-repaint objects,");
    575         if (synchronousScrollingReasons & ScrollingCoordinator::HasViewportConstrainedObjectsWithoutSupportingFixedLayers)
    576             reasonsDescription.appendLiteral("viewport-constrained objects,");
    577         if (synchronousScrollingReasons & ScrollingCoordinator::HasNonLayerViewportConstrainedObjects)
    578             reasonsDescription.appendLiteral("non-layer viewport-constrained objects,");
    579         if (synchronousScrollingReasons & ScrollingCoordinator::IsImageDocument)
    580             reasonsDescription.appendLiteral("image document,");
    581 
    582         // Strip the trailing comma.
    583         String reasonsDescriptionTrimmed = reasonsDescription.toString().left(reasonsDescription.length() - 1);
    584 
    585         WTFLogAlways("SCROLLING: Switching to main-thread scrolling mode. Time: %f Reason(s): %s\n", WTF::monotonicallyIncreasingTime(), reasonsDescriptionTrimmed.ascii().data());
    586     } else
    587         WTFLogAlways("SCROLLING: Switching to threaded scrolling mode. Time: %f\n", WTF::monotonicallyIncreasingTime());
     558    return TileController::blankPixelCountForTiles(tiles, viewPortRect, IntPoint(-scrollPosition.x(), -scrollPosition.y()));
    588559}
    589560
  • trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h

    r217696 r217737  
    130130    virtual bool needsIOSDumpRenderTreeMainFrameRenderViewLayerIsAlwaysOpaqueHack(const GraphicsLayer&) const { return false; }
    131131
     132    virtual void logFilledVisibleFreshTile(unsigned) { };
     133
    132134#ifndef NDEBUG
    133135    // RenderLayerBacking overrides this to verify that it is not
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

    r217696 r217737  
    16211621}
    16221622
     1623void GraphicsLayerCA::platformCALayerLogFilledVisibleFreshTile(unsigned blankPixelCount)
     1624{
     1625    client().logFilledVisibleFreshTile(blankPixelCount);
     1626}
     1627
    16231628static PlatformCALayer::LayerType layerTypeForCustomBackdropAppearance(GraphicsLayer::CustomAppearance appearance)
    16241629{
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h

    r217696 r217737  
    202202    WEBCORE_EXPORT bool platformCALayerShouldTemporarilyRetainTileCohorts(PlatformCALayer*) const override;
    203203    WEBCORE_EXPORT bool platformCALayerUseGiantTiles() const override;
     204    WEBCORE_EXPORT void platformCALayerLogFilledVisibleFreshTile(unsigned) override;
    204205
    205206    bool isCommittingChanges() const override { return m_isCommittingChanges; }
  • trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h

    r217296 r217737  
    6666    virtual bool isUsingDisplayListDrawing(PlatformCALayer*) const { return false; }
    6767
     68    virtual void platformCALayerLogFilledVisibleFreshTile(unsigned /* blankPixelCount */) { }
     69
    6870protected:
    6971    virtual ~PlatformCALayerClient() {}
  • trunk/Source/WebCore/platform/graphics/ca/TileController.cpp

    r215152 r217737  
    778778#endif
    779779
     780void TileController::logFilledVisibleFreshTile(unsigned blankPixelCount)
     781{
     782    owningGraphicsLayer()->platformCALayerLogFilledVisibleFreshTile(blankPixelCount);
     783}
     784
    780785} // namespace WebCore
    781786
  • trunk/Source/WebCore/platform/graphics/ca/TileController.h

    r215143 r217737  
    2424 */
    2525
    26 #ifndef TileController_h
    27 #define TileController_h
     26#pragma once
    2827
    2928#include "FloatRect.h"
     
    139138
    140139    WEBCORE_EXPORT Vector<RefPtr<PlatformCALayer>> containerLayers();
     140   
     141    void logFilledVisibleFreshTile(unsigned blankPixelCount);
    141142
    142143private:
     
    213214    int m_marginSize { kDefaultTileSize };
    214215
     216    Scrollability m_scrollability { HorizontallyScrollable | VerticallyScrollable };
     217
    215218    // m_marginTop and m_marginBottom are the height in pixels of the top and bottom margin tiles. The width
    216219    // of those tiles will be equivalent to the width of the other tiles in the grid. m_marginRight and
    217220    // m_marginLeft are the width in pixels of the right and left margin tiles, respectively. The height of
    218221    // those tiles will be equivalent to the height of the other tiles in the grid.
    219    
    220     Scrollability m_scrollability { HorizontallyScrollable | VerticallyScrollable };
    221    
    222222    BoxExtent<bool> m_marginEdges;
    223223   
     
    241241} // namespace WebCore
    242242
    243 #endif // TileController_h
  • trunk/Source/WebCore/platform/graphics/ca/TileGrid.cpp

    r217296 r217737  
    740740
    741741        if (repaintCount == 1 && !visiblePart.isEmpty())
    742             WTFLogAlways("SCROLLING: Filled visible fresh tile. Time: %f Unfilled Pixels: %u\n", WTF::monotonicallyIncreasingTime(), blankPixelCount());
     742            m_controller.logFilledVisibleFreshTile(blankPixelCount());
    743743    }
    744744}
  • trunk/Source/WebCore/platform/graphics/ca/TileGrid.h

    r217296 r217737  
    2424 */
    2525
    26 #ifndef TileGrid_h
    27 #define TileGrid_h
     26#pragma once
    2827
    2928#include "IntPointHash.h"
     
    179178
    180179}
    181 #endif
     180
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r217696 r217737  
    4848#include "MainFrame.h"
    4949#include "Page.h"
     50#include "PerformanceLoggingClient.h"
    5051#include "PluginViewBase.h"
    5152#include "ProgressTracker.h"
     
    26962697}
    26972698
     2699void RenderLayerBacking::logFilledVisibleFreshTile(unsigned blankPixelCount)
     2700{
     2701    if (PerformanceLoggingClient* loggingClient = renderer().page().performanceLoggingClient())
     2702        loggingClient->logScrollingEvent(PerformanceLoggingClient::ScrollingEvent::FilledTile, MonotonicTime::now(), blankPixelCount);
     2703}
     2704
    26982705#ifndef NDEBUG
    26992706void RenderLayerBacking::verifyNotPainting()
  • trunk/Source/WebCore/rendering/RenderLayerBacking.h

    r217296 r217737  
    217217    bool shouldTemporarilyRetainTileCohorts(const GraphicsLayer*) const override;
    218218    bool useGiantTiles() const override;
     219    void logFilledVisibleFreshTile(unsigned) override;
    219220    bool needsPixelAligment() const override { return !m_isMainFrameRenderViewLayer; }
    220221
  • trunk/Source/WebKit2/CMakeLists.txt

    r216809 r217737  
    555555    WebProcess/WebCoreSupport/WebInspectorClient.cpp
    556556    WebProcess/WebCoreSupport/WebNotificationClient.cpp
     557    WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp
    557558    WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
    558559    WebProcess/WebCoreSupport/WebPlugInClient.cpp
  • trunk/Source/WebKit2/ChangeLog

    r217729 r217737  
     12017-06-02  Simon Fraser  <simon.fraser@apple.com>
     2
     3        All scroll peformance logging should happen in the UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=172874
     5        rdar://problem/24474830
     6
     7        Reviewed by Tim Horton.
     8
     9        Printing to stdout from the WebProcess doesn't show up anywhere in non-development builds,
     10        so we have to log from the UI process.
     11
     12        Achieve this by adding a PerformanceLoggingClient to Page which forwards messages to
     13        WebPageProxy, which prints them with the same format they had before. Some plumbing through
     14        PlatformCALayerClient and GraphicsLayerClient is required to get messages from TileControllers
     15        through to something that can get to Page.
     16
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::logScrollingEvent):
     19        * UIProcess/WebPageProxy.h:
     20        * UIProcess/WebPageProxy.messages.in:
     21        * WebKit2.xcodeproj/project.pbxproj:
     22        * WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp: Added.
     23        (WebKit::WebPerformanceLoggingClient::WebPerformanceLoggingClient):
     24        (WebKit::WebPerformanceLoggingClient::logScrollingEvent):
     25        * WebProcess/WebCoreSupport/WebPerformanceLoggingClient.h: Added.
     26        * WebProcess/WebPage/WebPage.cpp:
     27        (WebKit::m_cpuLimit):
     28
    1292017-06-02  Chris Dumez  <cdumez@apple.com>
    230
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r217725 r217737  
    125125#include <WebCore/LengthBox.h>
    126126#include <WebCore/MIMETypeRegistry.h>
     127#include <WebCore/PerformanceLoggingClient.h>
    127128#include <WebCore/PublicSuffix.h>
    128129#include <WebCore/RenderEmbeddedObject.h>
     
    52105211
    52115212    m_diagnosticLoggingClient->logDiagnosticMessageWithEnhancedPrivacy(this, message, description);
     5213}
     5214
     5215void WebPageProxy::logScrollingEvent(uint32_t eventType, MonotonicTime timestamp, uint64_t data)
     5216{
     5217    PerformanceLoggingClient::ScrollingEvent event = static_cast<PerformanceLoggingClient::ScrollingEvent>(eventType);
     5218
     5219    switch (event) {
     5220    case PerformanceLoggingClient::ScrollingEvent::ExposedTilelessArea:
     5221        WTFLogAlways("SCROLLING: Exposed tileless area. Time: %f Unfilled Pixels: %llu\n", timestamp.secondsSinceEpoch().value(), (unsigned long long)data);
     5222        break;
     5223    case PerformanceLoggingClient::ScrollingEvent::FilledTile:
     5224        WTFLogAlways("SCROLLING: Filled visible fresh tile. Time: %f Unfilled Pixels: %llu\n", timestamp.secondsSinceEpoch().value(), (unsigned long long)data);
     5225        break;
     5226    case PerformanceLoggingClient::ScrollingEvent::SwitchedScrollingMode:
     5227        if (data)
     5228            WTFLogAlways("SCROLLING: Switching to main-thread scrolling mode. Time: %f Reason(s): %s\n", timestamp.secondsSinceEpoch().value(), PerformanceLoggingClient::synchronousScrollingReasonsAsString(data).utf8().data());
     5229        else
     5230            WTFLogAlways("SCROLLING: Switching to threaded scrolling mode. Time: %f\n", timestamp.secondsSinceEpoch().value());
     5231        break;
     5232    }
    52125233}
    52135234
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r217725 r217737  
    8383#include <wtf/HashMap.h>
    8484#include <wtf/HashSet.h>
     85#include <wtf/MonotonicTime.h>
    8586#include <wtf/Ref.h>
    8687#include <wtf/RefPtr.h>
     
    11091110    void logDiagnosticMessageWithEnhancedPrivacy(const String& message, const String& description, WebCore::ShouldSample);
    11101111
     1112    // Performance logging.
     1113    void logScrollingEvent(uint32_t eventType, MonotonicTime, uint64_t);
     1114
    11111115    // Form validation messages.
    11121116    void showValidationMessage(const WebCore::IntRect& anchorClientRect, const String& message);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r217571 r217737  
    231231    LogDiagnosticMessageWithEnhancedPrivacy(String message, String description, enum WebCore::ShouldSample shouldSample)
    232232
     233    # Performance logging
     234    LogScrollingEvent(uint32_t eventType, MonotonicTime timestamp, uint64_t data)
     235
    233236    # Editor notifications
    234237    EditorStateChanged(struct WebKit::EditorState editorState)
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r217137 r217737  
    8787                0F5E200318E77051003EC3E5 /* PlatformCAAnimationRemote.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F5E200118E77051003EC3E5 /* PlatformCAAnimationRemote.mm */; };
    8888                0F5E200418E77051003EC3E5 /* PlatformCAAnimationRemote.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5E200218E77051003EC3E5 /* PlatformCAAnimationRemote.h */; };
     89                0F850FE61ED7C39F00FB77A7 /* WebPerformanceLoggingClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F850FE41ED7C39F00FB77A7 /* WebPerformanceLoggingClient.cpp */; };
     90                0F850FE71ED7C39F00FB77A7 /* WebPerformanceLoggingClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F850FE51ED7C39F00FB77A7 /* WebPerformanceLoggingClient.h */; };
    8991                0F931C1C18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F931C1A18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h */; };
    9092                0F931C1D18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F931C1B18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.mm */; };
     
    22412243                0F707C771A1FEE8300DA7A45 /* RemoteLayerTreeScrollingPerformanceData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteLayerTreeScrollingPerformanceData.mm; sourceTree = "<group>"; };
    22422244                0F707C791A1FEEA300DA7A45 /* RemoteLayerTreeScrollingPerformanceData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerTreeScrollingPerformanceData.h; sourceTree = "<group>"; };
     2245                0F850FE41ED7C39F00FB77A7 /* WebPerformanceLoggingClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPerformanceLoggingClient.cpp; sourceTree = "<group>"; };
     2246                0F850FE51ED7C39F00FB77A7 /* WebPerformanceLoggingClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPerformanceLoggingClient.h; sourceTree = "<group>"; };
    22432247                0F931C1A18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScrollingTreeOverflowScrollingNodeIOS.h; path = Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h; sourceTree = "<group>"; };
    22442248                0F931C1B18C5711900DBA7C3 /* ScrollingTreeOverflowScrollingNodeIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ScrollingTreeOverflowScrollingNodeIOS.mm; path = Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm; sourceTree = "<group>"; };
     
    65936597                                512127C11908239A00DAF35C /* WebPasteboardOverrides.cpp */,
    65946598                                512127C21908239A00DAF35C /* WebPasteboardOverrides.h */,
     6599                                0F850FE41ED7C39F00FB77A7 /* WebPerformanceLoggingClient.cpp */,
     6600                                0F850FE51ED7C39F00FB77A7 /* WebPerformanceLoggingClient.h */,
    65956601                                1A3E736011CC2659007BD539 /* WebPlatformStrategies.cpp */,
    65966602                                1A3E735F11CC2659007BD539 /* WebPlatformStrategies.h */,
     
    86048610                                CEDA12E3152CD1B300D9E08D /* WebAlternativeTextClient.h in Headers */,
    86058611                                9955A6EC1C7980C200EB6A93 /* WebAutomationSession.h in Headers */,
     8612                                0F850FE71ED7C39F00FB77A7 /* WebPerformanceLoggingClient.h in Headers */,
    86068613                                99C3AE2D1DADA6AD00AF5C16 /* WebAutomationSessionMacros.h in Headers */,
    86078614                                1C0A19581C90068F00FE0EBB /* WebAutomationSessionMessages.h in Headers */,
     
    1028910296                                51FB08FF1639DE1A00EC324A /* WebLoaderStrategy.cpp in Sources */,
    1029010297                                CD003A5219D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp in Sources */,
     10298                                0F850FE61ED7C39F00FB77A7 /* WebPerformanceLoggingClient.cpp in Sources */,
    1029110299                                C98C48A51B6FD4C300145103 /* WebMediaSessionFocusManager.cpp in Sources */,
    1029210300                                C9C1833B1B74026A007036A7 /* WebMediaSessionFocusManagerClient.cpp in Sources */,
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp

    r217736 r217737  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2017 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2121 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    2222 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    2424 */
    2525
    2626#include "config.h"
    27 #include "PageConfiguration.h"
     27#include "WebPerformanceLoggingClient.h"
    2828
    29 #include "ApplicationCacheStorage.h"
    30 #include "BackForwardClient.h"
    31 #include "DatabaseProvider.h"
    32 #include "DiagnosticLoggingClient.h"
    33 #include "EditorClient.h"
    34 #include "LibWebRTCProvider.h"
    35 #include "PluginInfoProvider.h"
    36 #include "SocketProvider.h"
    37 #include "StorageNamespaceProvider.h"
    38 #include "UserContentController.h"
    39 #include "ValidationMessageClient.h"
    40 #include "VisitedLinkStore.h"
    41 #include "WebGLStateTracker.h"
     29#include "WebCoreArgumentCoders.h"
     30#include "WebPage.h"
     31#include "WebPageProxyMessages.h"
    4232
    43 namespace WebCore {
     33namespace WebKit {
    4434
    45 PageConfiguration::PageConfiguration(UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider)
    46     : editorClient(WTFMove(editorClient))
    47     , socketProvider(WTFMove(socketProvider))
    48     , libWebRTCProvider(WTFMove(libWebRTCProvider))
     35using namespace WebCore;
     36
     37WebPerformanceLoggingClient::WebPerformanceLoggingClient(WebPage& page)
     38    : m_page(page)
    4939{
    5040}
    5141
    52 PageConfiguration::~PageConfiguration()
     42void WebPerformanceLoggingClient::logScrollingEvent(ScrollingEvent event, MonotonicTime timestamp, uint64_t data)
    5343{
     44    m_page.send(Messages::WebPageProxy::LogScrollingEvent(static_cast<uint32_t>(event), timestamp, data));
    5445}
    5546
    56 }
     47} // namespace WebKit
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPerformanceLoggingClient.h

    r217736 r217737  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2017 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2121 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    2222 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    2424 */
    2525
    26 #include "config.h"
    27 #include "PageConfiguration.h"
     26#pragma once
    2827
    29 #include "ApplicationCacheStorage.h"
    30 #include "BackForwardClient.h"
    31 #include "DatabaseProvider.h"
    32 #include "DiagnosticLoggingClient.h"
    33 #include "EditorClient.h"
    34 #include "LibWebRTCProvider.h"
    35 #include "PluginInfoProvider.h"
    36 #include "SocketProvider.h"
    37 #include "StorageNamespaceProvider.h"
    38 #include "UserContentController.h"
    39 #include "ValidationMessageClient.h"
    40 #include "VisitedLinkStore.h"
    41 #include "WebGLStateTracker.h"
     28#include <WebCore/PerformanceLoggingClient.h>
     29#include <wtf/Forward.h>
    4230
    43 namespace WebCore {
     31namespace WebKit {
    4432
    45 PageConfiguration::PageConfiguration(UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& socketProvider, UniqueRef<LibWebRTCProvider>&& libWebRTCProvider)
    46     : editorClient(WTFMove(editorClient))
    47     , socketProvider(WTFMove(socketProvider))
    48     , libWebRTCProvider(WTFMove(libWebRTCProvider))
    49 {
    50 }
     33class WebPage;
    5134
    52 PageConfiguration::~PageConfiguration()
    53 {
    54 }
     35class WebPerformanceLoggingClient : public WebCore::PerformanceLoggingClient {
     36public:
     37    WebPerformanceLoggingClient(WebPage&);
     38    virtual ~WebPerformanceLoggingClient() = default;
     39
     40private:
     41    void logScrollingEvent(ScrollingEvent, MonotonicTime, uint64_t) override;
     42
     43    WebPage& m_page;
     44};
    5545
    5646}
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r217725 r217737  
    103103#include "WebPageProxyMessages.h"
    104104#include "WebPaymentCoordinator.h"
     105#include "WebPerformanceLoggingClient.h"
    105106#include "WebPlugInClient.h"
    106107#include "WebPluginInfoProvider.h"
     
    396397    pageConfiguration.progressTrackerClient = new WebProgressTrackerClient(*this);
    397398    pageConfiguration.diagnosticLoggingClient = std::make_unique<WebDiagnosticLoggingClient>(*this);
     399    pageConfiguration.performanceLoggingClient = std::make_unique<WebPerformanceLoggingClient>(*this);
     400
    398401    pageConfiguration.webGLStateTracker = std::make_unique<WebGLStateTracker>([this](bool isUsingHighPerformanceWebGL) {
    399402        send(Messages::WebPageProxy::SetIsUsingHighPerformanceWebGL(isUsingHighPerformanceWebGL));
Note: See TracChangeset for help on using the changeset viewer.