Changeset 208666 in webkit


Ignore:
Timestamp:
Nov 12, 2016 11:19:07 PM (7 years ago)
Author:
Simon Fraser
Message:

Add a way to get the UI-side scrolling tree as text via UIScriptController
https://bugs.webkit.org/show_bug.cgi?id=164697

Reviewed by Zalan Bujtas.

Source/WebCore:

Add dumping to ScrollingTreeNode and subclasses (previously, we could only dump
the scrolling state tree). This re-uses the flags used for state tree dumping.

NodeIDs are not dumped by default because they can depend on earlier tests.

Test: scrollingcoordinator/ios/ui-scrolling-tree.html

  • page/scrolling/ScrollingStateNode.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::scrollingTreeAsText):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties):

  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeNode.cpp:

(WebCore::ScrollingTreeNode::dumpProperties):
(WebCore::ScrollingTreeNode::dump):

  • page/scrolling/ScrollingTreeNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::dumpProperties):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFixedNode.h:
  • page/scrolling/mac/ScrollingTreeFixedNode.mm:

(WebCore::ScrollingTreeFixedNode::dumpProperties):

  • page/scrolling/mac/ScrollingTreeStickyNode.h:
  • page/scrolling/mac/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::dumpProperties):

Source/WebKit2:

Add a property to WKWebView to retrieve the scrolling tree as text, for testing.
Expose it via the RemoteScrollingCoordinatorProxy.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _scrollingTreeAsText]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeAsText):

  • UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:

Tools:

Add UIScriptController::scrollingTreeAsText(), which gets the state of the scrolling
tree in the UI process, including the current positions of CALayers. This will be used
to test UI-side scrolling and visual viewports.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::scrollingTreeAsText):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::scrollingTreeAsText):

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::scrollingTreeAsText):

LayoutTests:

Add a test that dumps the scrolling state tree with a fixed element.

  • scrollingcoordinator/ios/ui-scrolling-tree-expected.txt: Added.
  • scrollingcoordinator/ios/ui-scrolling-tree.html: Added.
Location:
trunk
Files:
2 added
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r208662 r208666  
     12016-11-12  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add a way to get the UI-side scrolling tree as text via UIScriptController
     4        https://bugs.webkit.org/show_bug.cgi?id=164697
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Add a test that dumps the scrolling state tree with a fixed element.
     9
     10        * scrollingcoordinator/ios/ui-scrolling-tree-expected.txt: Added.
     11        * scrollingcoordinator/ios/ui-scrolling-tree.html: Added.
     12
    1132016-11-12  Simon Fraser  <simon.fraser@apple.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r208663 r208666  
     12016-11-12  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add a way to get the UI-side scrolling tree as text via UIScriptController
     4        https://bugs.webkit.org/show_bug.cgi?id=164697
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Add dumping to ScrollingTreeNode and subclasses (previously, we could only dump
     9        the scrolling state tree). This re-uses the flags used for state tree dumping.
     10
     11        NodeIDs are not dumped by default because they can depend on earlier tests.
     12
     13        Test: scrollingcoordinator/ios/ui-scrolling-tree.html
     14
     15        * page/scrolling/ScrollingStateNode.h:
     16        * page/scrolling/ScrollingTree.cpp:
     17        (WebCore::ScrollingTree::scrollingTreeAsText):
     18        * page/scrolling/ScrollingTree.h:
     19        * page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
     20        (WebCore::ScrollingTreeFrameScrollingNode::dumpProperties):
     21        * page/scrolling/ScrollingTreeFrameScrollingNode.h:
     22        * page/scrolling/ScrollingTreeNode.cpp:
     23        (WebCore::ScrollingTreeNode::dumpProperties):
     24        (WebCore::ScrollingTreeNode::dump):
     25        * page/scrolling/ScrollingTreeNode.h:
     26        * page/scrolling/ScrollingTreeScrollingNode.cpp:
     27        (WebCore::ScrollingTreeScrollingNode::dumpProperties):
     28        * page/scrolling/ScrollingTreeScrollingNode.h:
     29        * page/scrolling/mac/ScrollingTreeFixedNode.h:
     30        * page/scrolling/mac/ScrollingTreeFixedNode.mm:
     31        (WebCore::ScrollingTreeFixedNode::dumpProperties):
     32        * page/scrolling/mac/ScrollingTreeStickyNode.h:
     33        * page/scrolling/mac/ScrollingTreeStickyNode.mm:
     34        (WebCore::ScrollingTreeStickyNode::dumpProperties):
     35
    1362016-11-12  Darin Adler  <darin@apple.com>
    237
  • trunk/Source/WebCore/page/scrolling/ScrollingStateNode.h

    r208179 r208666  
    4141
    4242enum ScrollingStateTreeAsTextBehaviorFlags {
    43     ScrollingStateTreeAsTextBehaviorNormal               = 0,
    44     ScrollingStateTreeAsTextBehaviorIncludeLayerIDs      = 1 << 0,
    45     ScrollingStateTreeAsTextBehaviorDebug                = ScrollingStateTreeAsTextBehaviorIncludeLayerIDs
     43    ScrollingStateTreeAsTextBehaviorNormal                  = 0,
     44    ScrollingStateTreeAsTextBehaviorIncludeLayerIDs         = 1 << 0,
     45    ScrollingStateTreeAsTextBehaviorIncludeNodeIDs          = 1 << 1,
     46    ScrollingStateTreeAsTextBehaviorIncludeLayerPositions   = 1 << 2,
     47    ScrollingStateTreeAsTextBehaviorDebug                   = ScrollingStateTreeAsTextBehaviorIncludeLayerIDs | ScrollingStateTreeAsTextBehaviorIncludeNodeIDs | ScrollingStateTreeAsTextBehaviorIncludeLayerPositions
    4648};
    4749typedef unsigned ScrollingStateTreeAsTextBehavior;
  • trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp

    r208503 r208666  
    382382}
    383383
     384String ScrollingTree::scrollingTreeAsText()
     385{
     386    TextStream ts(TextStream::LineMode::MultipleLine);
     387
     388    TextStream::GroupScope scope(ts);
     389    ts << "scrolling tree";
     390   
     391    if (m_latchedNode)
     392        ts.dumpProperty("latched node", m_latchedNode);
     393
     394    if (m_mainFrameScrollPosition != IntPoint())
     395        ts.dumpProperty("main frame scroll position", m_mainFrameScrollPosition);
     396   
     397    {
     398        LockHolder lock(m_mutex);
     399        if (m_rootNode) {
     400            TextStream::GroupScope scope(ts);
     401            m_rootNode->dump(ts, ScrollingStateTreeAsTextBehaviorIncludeLayerPositions);
     402        }
     403    }
     404
     405    return ts.release();
     406}
     407
    384408} // namespace WebCore
    385409
  • trunk/Source/WebCore/page/scrolling/ScrollingTree.h

    r208503 r208666  
    146146    }
    147147   
     148    WEBCORE_EXPORT String scrollingTreeAsText();
     149   
    148150protected:
    149151    void setMainFrameScrollPosition(FloatPoint);
  • trunk/Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.cpp

    r208662 r208666  
    134134}
    135135
     136void ScrollingTreeFrameScrollingNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior) const
     137{
     138    ts << "frame scrolling node";
     139
     140    ts.dumpProperty("layout viewport", m_layoutViewport);
     141    ts.dumpProperty("min layoutViewport origin", m_minLayoutViewportOrigin);
     142    ts.dumpProperty("max layoutViewport origin", m_maxLayoutViewportOrigin);
     143
     144    if (m_frameScaleFactor != 1)
     145        ts.dumpProperty("frame scale factor", m_frameScaleFactor);
     146    if (m_topContentInset)
     147        ts.dumpProperty("top content inset", m_topContentInset);
     148
     149    if (m_headerHeight)
     150        ts.dumpProperty("header height", m_headerHeight);
     151    if (m_footerHeight)
     152        ts.dumpProperty("footer height", m_footerHeight);
     153    if (m_synchronousScrollingReasons)
     154        ts.dumpProperty("synchronous scrolling reasons", ScrollingCoordinator::synchronousScrollingReasonsAsText(m_synchronousScrollingReasons));
     155
     156    ts.dumpProperty("behavior for fixed", m_behaviorForFixed);
     157    if (m_fixedElementsLayoutRelativeToFrame)
     158        ts.dumpProperty("fixed elements lay out relative to frame", m_fixedElementsLayoutRelativeToFrame);
     159}
     160
     161
    136162} // namespace WebCore
    137163
  • trunk/Source/WebCore/page/scrolling/ScrollingTreeFrameScrollingNode.h

    r208503 r208666  
    7777   
    7878private:
     79    void dumpProperties(TextStream&, ScrollingStateTreeAsTextBehavior) const override;
     80
    7981    FloatRect m_layoutViewport;
    8082    FloatPoint m_minLayoutViewportOrigin;
  • trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.cpp

    r185231 r208666  
    3030
    3131#include "ScrollingStateTree.h"
     32#include "TextStream.h"
    3233
    3334namespace WebCore {
     
    7374}
    7475
     76void ScrollingTreeNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
     77{
     78    if (behavior & ScrollingStateTreeAsTextBehaviorIncludeNodeIDs)
     79        ts.dumpProperty("nodeID", scrollingNodeID());
     80}
     81
     82void ScrollingTreeNode::dump(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
     83{
     84    dumpProperties(ts, behavior);
     85
     86    if (m_children) {
     87        for (auto& child : *m_children) {
     88            TextStream::GroupScope scope(ts);
     89            child->dump(ts, behavior);
     90        }
     91    }
     92}
     93
    7594} // namespace WebCore
    7695
  • trunk/Source/WebCore/page/scrolling/ScrollingTreeNode.h

    r208395 r208666  
    3131#include "ScrollTypes.h"
    3232#include "ScrollingCoordinator.h"
     33#include "ScrollingStateNode.h"
    3334#include <wtf/RefCounted.h>
    3435#include <wtf/TypeCasts.h>
     
    3738
    3839class ScrollingStateFixedNode;
    39 class ScrollingStateNode;
    4040class ScrollingStateScrollingNode;
    4141
     
    6767    void removeChild(ScrollingTreeNode*);
    6868
     69    WEBCORE_EXPORT void dump(TextStream&, ScrollingStateTreeAsTextBehavior) const;
     70
    6971protected:
    7072    ScrollingTreeNode(ScrollingTree&, ScrollingNodeType, ScrollingNodeID);
     
    7274
    7375    std::unique_ptr<ScrollingTreeChildrenVector> m_children;
     76
     77    WEBCORE_EXPORT virtual void dumpProperties(TextStream&, ScrollingStateTreeAsTextBehavior) const;
    7478
    7579private:
  • trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp

    r208503 r208666  
    3131#include "ScrollingStateTree.h"
    3232#include "ScrollingTree.h"
     33#include "TextStream.h"
    3334
    3435namespace WebCore {
     
    125126}
    126127
     128void ScrollingTreeScrollingNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
     129{
     130    ScrollingTreeNode::dumpProperties(ts, behavior);
     131    ts.dumpProperty("scrollable area size", m_scrollableAreaSize);
     132    ts.dumpProperty("total content size", m_totalContentsSize);
     133    if (m_totalContentsSizeForRubberBand != m_totalContentsSize)
     134        ts.dumpProperty("total content size for rubber band", m_totalContentsSizeForRubberBand);
     135    if (m_reachableContentsSize != m_totalContentsSize)
     136        ts.dumpProperty("reachable content size", m_reachableContentsSize);
     137    ts.dumpProperty("scrollable area size", m_lastCommittedScrollPosition);
     138    if (m_scrollOrigin != IntPoint())
     139        ts.dumpProperty("scrollable area size", m_scrollOrigin);
     140
     141#if ENABLE(CSS_SCROLL_SNAP)
     142    if (m_horizontalSnapOffsets.size())
     143        ts.dumpProperty("horizontal snap offsets", m_horizontalSnapOffsets);
     144
     145    if (m_verticalSnapOffsets.size())
     146        ts.dumpProperty("horizontal snap offsets", m_verticalSnapOffsets);
     147
     148    if (m_currentHorizontalSnapPointIndex)
     149        ts.dumpProperty("current horizontal snap point index", m_verticalSnapOffsets);
     150
     151    if (m_currentVerticalSnapPointIndex)
     152        ts.dumpProperty("current vertical snap point index", m_currentVerticalSnapPointIndex);
     153   
     154#endif
     155}
    127156
    128157} // namespace WebCore
  • trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h

    r208503 r208666  
    9393    bool canHaveScrollbars() const { return m_scrollableAreaParameters.horizontalScrollbarMode != ScrollbarAlwaysOff || m_scrollableAreaParameters.verticalScrollbarMode != ScrollbarAlwaysOff; }
    9494
     95    WEBCORE_EXPORT void dumpProperties(TextStream&, ScrollingStateTreeAsTextBehavior) const override;
     96
    9597private:
    9698    FloatSize m_scrollableAreaSize;
  • trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.h

    r208395 r208666  
    5050    void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
    5151
     52    void dumpProperties(TextStream&, ScrollingStateTreeAsTextBehavior) const override;
     53
    5254    FixedPositionViewportConstraints m_constraints;
    5355    RetainPtr<CALayer> m_layer;
  • trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFixedNode.mm

    r208395 r208666  
    3131#include "ScrollingStateFixedNode.h"
    3232#include "ScrollingTree.h"
     33#include "TextStream.h"
    3334#include <QuartzCore/CALayer.h>
    3435
     
    8788}
    8889
     90void ScrollingTreeFixedNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
     91{
     92    ts << "fixed node";
     93    ScrollingTreeNode::dumpProperties(ts, behavior);
     94    ts.dumpProperty("fixed constraints", m_constraints);
     95   
     96    if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerPositions) {
     97        FloatRect layerBounds = [m_layer bounds];
     98        FloatPoint anchorPoint = [m_layer anchorPoint];
     99        FloatPoint position = [m_layer position];
     100        FloatPoint layerTopLeft = position - toFloatSize(anchorPoint) * layerBounds.size() + m_constraints.alignmentOffset();
     101        ts.dumpProperty("layer top left", layerTopLeft);
     102    }
     103}
     104
    89105} // namespace WebCore
    90106
  • trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.h

    r208395 r208666  
    5050    void updateLayersAfterAncestorChange(const ScrollingTreeNode& changedNode, const FloatRect& fixedPositionRect, const FloatSize& cumulativeDelta) override;
    5151
     52    void dumpProperties(TextStream&, ScrollingStateTreeAsTextBehavior) const override;
     53
    5254    StickyPositionViewportConstraints m_constraints;
    5355    RetainPtr<CALayer> m_layer;
  • trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeStickyNode.mm

    r208395 r208666  
    3333#include "ScrollingTreeFrameScrollingNode.h"
    3434#include "ScrollingTreeOverflowScrollingNode.h"
     35#include "TextStream.h"
    3536#include <QuartzCore/CALayer.h>
    3637
     
    102103}
    103104
     105void ScrollingTreeStickyNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
     106{
     107    ts << "sticky node";
     108
     109    ScrollingTreeNode::dumpProperties(ts, behavior);
     110    ts.dumpProperty("sticky constraints", m_constraints);
     111
     112    if (behavior & ScrollingStateTreeAsTextBehaviorIncludeLayerPositions) {
     113        FloatRect layerBounds = [m_layer bounds];
     114        FloatPoint anchorPoint = [m_layer anchorPoint];
     115        FloatPoint position = [m_layer position];
     116        FloatPoint layerTopLeft = position - toFloatSize(anchorPoint) * layerBounds.size() + m_constraints.alignmentOffset();
     117        ts.dumpProperty("layer top left", layerTopLeft);
     118    }
     119}
     120
    104121} // namespace WebCore
    105122
  • trunk/Source/WebKit2/ChangeLog

    r208665 r208666  
     12016-11-12  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add a way to get the UI-side scrolling tree as text via UIScriptController
     4        https://bugs.webkit.org/show_bug.cgi?id=164697
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Add a property to WKWebView to retrieve the scrolling tree as text, for testing.
     9        Expose it via the RemoteScrollingCoordinatorProxy.
     10
     11        * UIProcess/API/Cocoa/WKWebView.mm:
     12        (-[WKWebView _scrollingTreeAsText]):
     13        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     14        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
     15        (WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeAsText):
     16        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
     17
    1182016-11-12  Daniel Bates  <dabates@apple.com>
    219
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r208509 r208666  
    46884688}
    46894689
     4690- (NSString *)_scrollingTreeAsText
     4691{
     4692    WebKit::RemoteScrollingCoordinatorProxy* coordinator = _page->scrollingCoordinatorProxy();
     4693    if (!coordinator)
     4694        return @"";
     4695
     4696    return coordinator->scrollingTreeAsText();
     4697}
     4698
    46904699#endif // PLATFORM(IOS)
    46914700
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r208452 r208666  
    286286@property (nonatomic, readonly) NSArray<UIView *> *_uiTextSelectionRectViews WK_API_AVAILABLE(ios(WK_IOS_TBA));
    287287
     288@property (nonatomic, readonly) NSString *_scrollingTreeAsText WK_API_AVAILABLE(ios(WK_IOS_TBA));
     289
    288290#endif
    289291
  • trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp

    r208503 r208666  
    186186}
    187187
     188String RemoteScrollingCoordinatorProxy::scrollingTreeAsText() const
     189{
     190    if (m_scrollingTree)
     191        return m_scrollingTree->scrollingTreeAsText();
     192   
     193    return emptyString();
     194}
     195
    188196} // namespace WebKit
    189197
  • trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h

    r208503 r208666  
    9595#endif
    9696
     97    String scrollingTreeAsText() const;
     98
    9799private:
    98100    void connectStateNodeLayers(WebCore::ScrollingStateTree&, const RemoteLayerTreeHost&);
  • trunk/Tools/ChangeLog

    r208655 r208666  
     12016-11-12  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add a way to get the UI-side scrolling tree as text via UIScriptController
     4        https://bugs.webkit.org/show_bug.cgi?id=164697
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Add UIScriptController::scrollingTreeAsText(), which gets the state of the scrolling
     9        tree in the UI process, including the current positions of CALayers. This will be used
     10        to test UI-side scrolling and visual viewports.
     11
     12        * DumpRenderTree/ios/UIScriptControllerIOS.mm:
     13        (WTR::UIScriptController::scrollingTreeAsText):
     14        * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
     15        * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
     16        (WTR::UIScriptController::scrollingTreeAsText):
     17        * TestRunnerShared/UIScriptContext/UIScriptController.h:
     18        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
     19        (WTR::UIScriptController::scrollingTreeAsText):
     20
    1212016-11-12  Wenson Hsieh  <wenson_hsieh@apple.com>
    222
  • trunk/Tools/DumpRenderTree/ios/UIScriptControllerIOS.mm

    r208624 r208666  
    220220}
    221221
     222JSRetainPtr<JSStringRef> UIScriptController::scrollingTreeAsText() const
     223{
     224    return nullptr;
     225}
     226
    222227}
    223228
  • trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl

    r208624 r208666  
    160160    void removeAllDynamicDictionaries();
    161161
     162    readonly attribute DOMString scrollingTreeAsText;
     163
    162164    void uiScriptComplete(DOMString result);
    163165};
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.cpp

    r208624 r208666  
    283283}
    284284
     285JSRetainPtr<JSStringRef> UIScriptController::scrollingTreeAsText() const
     286{
     287    return nullptr;
     288}
     289
    285290void UIScriptController::platformSetDidStartFormControlInteractionCallback()
    286291{
  • trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h

    r208624 r208666  
    2828
    2929#include "JSWrappable.h"
     30#include <JavaScriptCore/JSRetainPtr.h>
    3031#include <wtf/Ref.h>
    3132
     
    120121    void insertText(JSStringRef, int location, int length);
    121122    void removeAllDynamicDictionaries();
     123   
     124    JSRetainPtr<JSStringRef> scrollingTreeAsText() const;
    122125
    123126    void uiScriptComplete(JSStringRef result);
  • trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm

    r208624 r208666  
    400400}
    401401
     402JSRetainPtr<JSStringRef> UIScriptController::scrollingTreeAsText() const
     403{
     404    TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
     405    return JSStringCreateWithCFString((CFStringRef)[webView _scrollingTreeAsText]);
     406}
     407
    402408void UIScriptController::platformSetDidStartFormControlInteractionCallback()
    403409{
Note: See TracChangeset for help on using the changeset viewer.