Changeset 196688 in webkit


Ignore:
Timestamp:
Feb 16, 2016 11:16:40 PM (8 years ago)
Author:
Carlos Garcia Campos
Message:

Add a way to test ScrollAnimator
https://bugs.webkit.org/show_bug.cgi?id=153479

Reviewed by Michael Catanzaro.

Source/WebCore:

Tests: fast/scrolling/overlay-scrollbars-scroll-corner.html

fast/scrolling/scroll-animator-basic-events.html
fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html
fast/scrolling/scroll-animator-select-list-events.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/FrameView.cpp:

(WebCore::FrameView::usesMockScrollAnimator):
(WebCore::FrameView::logMockScrollAnimatorMessage):

  • page/FrameView.h:
  • page/Settings.cpp:

(WebCore::Settings::setUsesMockScrollAnimator):
(WebCore::Settings::usesMockScrollAnimator):

  • page/Settings.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scrollAnimator):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::usesMockScrollAnimator):
(WebCore::ScrollableArea::logMockScrollAnimatorMessage):

  • platform/mock/ScrollAnimatorMock.cpp: Added.

(WebCore::ScrollAnimatorMock::create):
(WebCore::ScrollAnimatorMock::ScrollAnimatorMock):
(WebCore::ScrollAnimatorMock::~ScrollAnimatorMock):
(WebCore::ScrollAnimatorMock::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorMock::didAddHorizontalScrollbar):
(WebCore::ScrollAnimatorMock::willRemoveVerticalScrollbar):
(WebCore::ScrollAnimatorMock::willRemoveHorizontalScrollbar):
(WebCore::ScrollAnimatorMock::mouseEnteredContentArea):
(WebCore::ScrollAnimatorMock::mouseMovedInContentArea):
(WebCore::ScrollAnimatorMock::mouseExitedContentArea):
(WebCore::ScrollAnimatorMock::mouseEnteredScrollbar):
(WebCore::ScrollAnimatorMock::mouseExitedScrollbar):
(WebCore::ScrollAnimatorMock::mouseIsDownInScrollbar):

  • platform/mock/ScrollAnimatorMock.h: Added.
  • platform/mock/ScrollbarThemeMock.cpp:

(WebCore::ScrollbarThemeMock::usesOverlayScrollbars):

  • platform/mock/ScrollbarThemeMock.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::usesMockScrollAnimator):
(WebCore::RenderLayer::logMockScrollAnimatorMessage):

  • rendering/RenderLayer.h:
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::usesMockScrollAnimator):
(WebCore::RenderListBox::logMockScrollAnimatorMessage):

  • rendering/RenderListBox.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setUsesMockScrollAnimator):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
  • fast/scrolling/overlay-scrollbars-scroll-corner-expected.html: Added.
  • fast/scrolling/overlay-scrollbars-scroll-corner.html: Added.
  • fast/scrolling/scroll-animator-basic-events-expected.txt: Added.
  • fast/scrolling/scroll-animator-basic-events.html: Added.
  • fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt: Added.
  • fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html: Added.
  • fast/scrolling/scroll-animator-select-list-events-expected.txt: Added.
  • fast/scrolling/scroll-animator-select-list-events.html: Added.
  • fast/scrolling/scrollbar-tickmarks-hittest.html:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/fast/scrolling/scroll-animator-basic-events-expected.txt: Added.
  • platform/mac-wk1/fast/scrolling/scroll-animator-select-list-events-expected.txt: Added.
Location:
trunk
Files:
13 added
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r196676 r196688  
     12016-02-16  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Add a way to test ScrollAnimator
     4        https://bugs.webkit.org/show_bug.cgi?id=153479
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        * compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
     9        * fast/scrolling/overlay-scrollbars-scroll-corner-expected.html: Added.
     10        * fast/scrolling/overlay-scrollbars-scroll-corner.html: Added.
     11        * fast/scrolling/scroll-animator-basic-events-expected.txt: Added.
     12        * fast/scrolling/scroll-animator-basic-events.html: Added.
     13        * fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt: Added.
     14        * fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html: Added.
     15        * fast/scrolling/scroll-animator-select-list-events-expected.txt: Added.
     16        * fast/scrolling/scroll-animator-select-list-events.html: Added.
     17        * fast/scrolling/scrollbar-tickmarks-hittest.html:
     18        * platform/mac-wk1/TestExpectations:
     19        * platform/mac-wk1/fast/scrolling/scroll-animator-basic-events-expected.txt: Added.
     20        * platform/mac-wk1/fast/scrolling/scroll-animator-select-list-events-expected.txt: Added.
     21
    1222016-02-16  Gavin Barraclough  <barraclough@apple.com>
    223
  • trunk/LayoutTests/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt

    r168244 r196688  
    1212          (bounds 244.00 244.00)
    1313          (drawsContent 1)
     14          (children 1
     15            (GraphicsLayer
     16              (position 207.00 22.00)
     17              (bounds 15.00 200.00)
     18              (drawsContent 1)
     19            )
     20          )
    1421        )
    1522      )
  • trunk/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html

    r155272 r196688  
    1414    range.selectNodeContents(elt);
    1515    if (window.internals) {
    16         window.internals.setUsesOverlayScrollbars(true);
    1716        window.internals.addTextMatchMarker(range, true);
    1817    }
  • trunk/LayoutTests/platform/mac-wk1/TestExpectations

    r196665 r196688  
    254254inspector/script-profiler/event-type-API.html
    255255
     256# This test checks ScrollAnimator events only for main frame scrollbars that use native widgets in WK1.
     257fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html [ Skip ]
     258
    256259########################################
    257260### START OF (3) IndexedDB failures with SQLite
  • trunk/Source/WebCore/CMakeLists.txt

    r196636 r196688  
    23152315    platform/mock/RTCNotifiersMock.cpp
    23162316    platform/mock/RTCPeerConnectionHandlerMock.cpp
     2317    platform/mock/ScrollAnimatorMock.cpp
    23172318    platform/mock/ScrollbarThemeMock.cpp
    23182319
  • trunk/Source/WebCore/ChangeLog

    r196687 r196688  
     12016-02-16  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Add a way to test ScrollAnimator
     4        https://bugs.webkit.org/show_bug.cgi?id=153479
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Tests: fast/scrolling/overlay-scrollbars-scroll-corner.html
     9               fast/scrolling/scroll-animator-basic-events.html
     10               fast/scrolling/scroll-animator-overlay-scrollbars-hovered.html
     11               fast/scrolling/scroll-animator-select-list-events.html
     12
     13        * CMakeLists.txt:
     14        * WebCore.xcodeproj/project.pbxproj:
     15        * page/FrameView.cpp:
     16        (WebCore::FrameView::usesMockScrollAnimator):
     17        (WebCore::FrameView::logMockScrollAnimatorMessage):
     18        * page/FrameView.h:
     19        * page/Settings.cpp:
     20        (WebCore::Settings::setUsesMockScrollAnimator):
     21        (WebCore::Settings::usesMockScrollAnimator):
     22        * page/Settings.h:
     23        * platform/ScrollableArea.cpp:
     24        (WebCore::ScrollableArea::scrollAnimator):
     25        * platform/ScrollableArea.h:
     26        (WebCore::ScrollableArea::usesMockScrollAnimator):
     27        (WebCore::ScrollableArea::logMockScrollAnimatorMessage):
     28        * platform/mock/ScrollAnimatorMock.cpp: Added.
     29        (WebCore::ScrollAnimatorMock::create):
     30        (WebCore::ScrollAnimatorMock::ScrollAnimatorMock):
     31        (WebCore::ScrollAnimatorMock::~ScrollAnimatorMock):
     32        (WebCore::ScrollAnimatorMock::didAddVerticalScrollbar):
     33        (WebCore::ScrollAnimatorMock::didAddHorizontalScrollbar):
     34        (WebCore::ScrollAnimatorMock::willRemoveVerticalScrollbar):
     35        (WebCore::ScrollAnimatorMock::willRemoveHorizontalScrollbar):
     36        (WebCore::ScrollAnimatorMock::mouseEnteredContentArea):
     37        (WebCore::ScrollAnimatorMock::mouseMovedInContentArea):
     38        (WebCore::ScrollAnimatorMock::mouseExitedContentArea):
     39        (WebCore::ScrollAnimatorMock::mouseEnteredScrollbar):
     40        (WebCore::ScrollAnimatorMock::mouseExitedScrollbar):
     41        (WebCore::ScrollAnimatorMock::mouseIsDownInScrollbar):
     42        * platform/mock/ScrollAnimatorMock.h: Added.
     43        * platform/mock/ScrollbarThemeMock.cpp:
     44        (WebCore::ScrollbarThemeMock::usesOverlayScrollbars):
     45        * platform/mock/ScrollbarThemeMock.h:
     46        * rendering/RenderLayer.cpp:
     47        (WebCore::RenderLayer::usesMockScrollAnimator):
     48        (WebCore::RenderLayer::logMockScrollAnimatorMessage):
     49        * rendering/RenderLayer.h:
     50        * rendering/RenderListBox.cpp:
     51        (WebCore::RenderListBox::usesMockScrollAnimator):
     52        (WebCore::RenderListBox::logMockScrollAnimatorMessage):
     53        * rendering/RenderListBox.h:
     54        * testing/Internals.cpp:
     55        (WebCore::Internals::resetToConsistentState):
     56        (WebCore::Internals::setUsesMockScrollAnimator):
     57        * testing/Internals.h:
     58        * testing/Internals.idl:
     59
    1602016-02-16  Carlos Garcia Campos  <cgarcia@igalia.com>
    261
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r196636 r196688  
    23732373                5C9A7A761AA0F6ED00958ACF /* DFABytecodeInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C3930601AA0F6A90029C816 /* DFABytecodeInterpreter.cpp */; };
    23742374                5C9B860C1C21E3C900110F36 /* ResourceLoadTiming.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C9B860B1C21E3C600110F36 /* ResourceLoadTiming.mm */; };
     2375                5CB37FFE1C62D28C00F20188 /* ScrollAnimatorMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CB37FFC1C62D27800F20188 /* ScrollAnimatorMock.cpp */; };
     2376                5CB37FFF1C62D2A100F20188 /* ScrollAnimatorMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB37FFD1C62D27800F20188 /* ScrollAnimatorMock.h */; };
    23752377                5CBC8DAC1AAA302200E1C803 /* MediaAccessibilitySoftLink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CBC8DAA1AAA302200E1C803 /* MediaAccessibilitySoftLink.cpp */; };
    23762378                5CBC8DAD1AAA302200E1C803 /* MediaAccessibilitySoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CBC8DAB1AAA302200E1C803 /* MediaAccessibilitySoftLink.h */; };
     
    99359937                5C4304B4191AEF46000E2BC0 /* JSEXTShaderTextureLOD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSEXTShaderTextureLOD.h; sourceTree = "<group>"; };
    99369938                5C9B860B1C21E3C600110F36 /* ResourceLoadTiming.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceLoadTiming.mm; sourceTree = "<group>"; };
     9939                5CB37FFC1C62D27800F20188 /* ScrollAnimatorMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollAnimatorMock.cpp; sourceTree = "<group>"; };
     9940                5CB37FFD1C62D27800F20188 /* ScrollAnimatorMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollAnimatorMock.h; sourceTree = "<group>"; };
    99379941                5CBC8DAA1AAA302200E1C803 /* MediaAccessibilitySoftLink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaAccessibilitySoftLink.cpp; sourceTree = "<group>"; };
    99389942                5CBC8DAB1AAA302200E1C803 /* MediaAccessibilitySoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaAccessibilitySoftLink.h; sourceTree = "<group>"; };
     
    1741217416                        isa = PBXGroup;
    1741317417                        children = (
     17418                                5CB37FFC1C62D27800F20188 /* ScrollAnimatorMock.cpp */,
     17419                                5CB37FFD1C62D27800F20188 /* ScrollAnimatorMock.h */,
    1741417420                                CDF2B005182053DF00F2B424 /* mediasource */,
    1741517421                                59309A1011F4AE5800250603 /* DeviceOrientationClientMock.cpp */,
     
    2496624972                                CD5596921475B678001D0BD0 /* AudioFileReaderIOS.h in Headers */,
    2496724973                                FD3160BF12B0272A00C1A359 /* AudioFileReaderMac.h in Headers */,
     24974                                5CB37FFF1C62D2A100F20188 /* ScrollAnimatorMock.h in Headers */,
    2496824975                                CD2F4A2418D89F700063746D /* AudioHardwareListener.h in Headers */,
    2496924976                                CD2F4A2818D8A3490063746D /* AudioHardwareListenerMac.h in Headers */,
     
    3137531382                                A182D5B71BE722670087A7CC /* SettingsCocoa.mm in Sources */,
    3137631383                                0F3DD44F12F5EA1B000D9190 /* ShadowBlur.cpp in Sources */,
     31384                                5CB37FFE1C62D28C00F20188 /* ScrollAnimatorMock.cpp in Sources */,
    3137731385                                BC5EB8C30E82031B00B25965 /* ShadowData.cpp in Sources */,
    3137831386                                A6D169621346B49B000EB770 /* ShadowRoot.cpp in Sources */,
  • trunk/Source/WebCore/page/FrameView.cpp

    r196641 r196688  
    16321632}
    16331633
     1634bool FrameView::usesMockScrollAnimator() const
     1635{
     1636    return Settings::usesMockScrollAnimator();
     1637}
     1638
     1639void FrameView::logMockScrollAnimatorMessage(const String& message) const
     1640{
     1641    Document* document = frame().document();
     1642    if (!document)
     1643        return;
     1644    StringBuilder builder;
     1645    if (frame().isMainFrame())
     1646        builder.appendLiteral("Main");
     1647    builder.appendLiteral("FrameView: ");
     1648    builder.append(message);
     1649    document->addConsoleMessage(MessageSource::Other, MessageLevel::Debug, builder.toString());
     1650}
     1651
    16341652void FrameView::setCannotBlitToWindow()
    16351653{
  • trunk/Source/WebCore/page/FrameView.h

    r196641 r196688  
    637637    virtual bool usesCompositedScrolling() const override;
    638638    virtual bool usesAsyncScrolling() const override;
     639    bool usesMockScrollAnimator() const override;
     640    void logMockScrollAnimatorMessage(const String&) const override;
    639641
    640642    // Override scrollbar notifications to update the AXObject cache.
  • trunk/Source/WebCore/page/Settings.cpp

    r196622 r196688  
    8585bool Settings::gMockScrollbarsEnabled = false;
    8686bool Settings::gUsesOverlayScrollbars = false;
     87bool Settings::gMockScrollAnimatorEnabled = false;
    8788
    8889#if ENABLE(MEDIA_STREAM)
     
    656657}
    657658
     659void Settings::setUsesMockScrollAnimator(bool flag)
     660{
     661    gMockScrollAnimatorEnabled = flag;
     662}
     663
     664bool Settings::usesMockScrollAnimator()
     665{
     666    return gMockScrollAnimatorEnabled;
     667}
     668
    658669void Settings::setShouldRespectPriorityInCSSAttributeSetters(bool flag)
    659670{
  • trunk/Source/WebCore/page/Settings.h

    r196622 r196688  
    217217    static bool usesOverlayScrollbars();
    218218
     219    WEBCORE_EXPORT static void setUsesMockScrollAnimator(bool);
     220    static bool usesMockScrollAnimator();
     221
    219222#if ENABLE(TOUCH_EVENTS)
    220223    void setTouchEventEmulationEnabled(bool enabled) { m_touchEventEmulationEnabled = enabled; }
     
    358361    static bool gMockScrollbarsEnabled;
    359362    static bool gUsesOverlayScrollbars;
     363    static bool gMockScrollAnimatorEnabled;
    360364
    361365#if PLATFORM(WIN)
  • trunk/Source/WebCore/platform/ScrollableArea.cpp

    r194513 r196688  
    4040#include "PlatformWheelEvent.h"
    4141#include "ScrollAnimator.h"
     42#include "ScrollAnimatorMock.h"
    4243#include "ScrollbarTheme.h"
    4344#include "TextStream.h"
     
    7677ScrollAnimator& ScrollableArea::scrollAnimator() const
    7778{
    78     if (!m_scrollAnimator)
    79         m_scrollAnimator = ScrollAnimator::create(const_cast<ScrollableArea&>(*this));
     79    if (!m_scrollAnimator) {
     80        if (usesMockScrollAnimator()) {
     81            m_scrollAnimator = std::make_unique<ScrollAnimatorMock>(const_cast<ScrollableArea&>(*this), [this](const String& message) {
     82                logMockScrollAnimatorMessage(message);
     83            });
     84        } else
     85            m_scrollAnimator = ScrollAnimator::create(const_cast<ScrollableArea&>(*this));
     86    }
    8087
    8188    ASSERT(m_scrollAnimator);
  • trunk/Source/WebCore/platform/ScrollableArea.h

    r194515 r196688  
    308308    void horizontalScrollbarLayerDidChange();
    309309
     310    virtual bool usesMockScrollAnimator() const { return false; }
     311    virtual void logMockScrollAnimatorMessage(const String&) const { };
     312
    310313protected:
    311314    WEBCORE_EXPORT ScrollableArea();
  • trunk/Source/WebCore/platform/mock/ScrollbarThemeMock.cpp

    r192140 r196688  
    2828
    2929#include "Scrollbar.h"
     30// FIXME: This is a layering violation.
     31#include "Settings.h"
    3032
    3133namespace WebCore {
     
    5456}
    5557
     58bool ScrollbarThemeMock::usesOverlayScrollbars() const
     59{
     60    // FIXME: This is a layering violation, but ScrollbarThemeMock is also created depending on settings in platform layer,
     61    // we should fix it in both places.
     62    return Settings::usesOverlayScrollbars();
    5663}
    5764
     65}
     66
  • trunk/Source/WebCore/platform/mock/ScrollbarThemeMock.h

    r185964 r196688  
    4747    virtual void paintThumb(GraphicsContext&, Scrollbar&, const IntRect&) override;
    4848    virtual int maxOverlapBetweenPages() override { return 40; }
    49    
     49
     50    virtual bool usesOverlayScrollbars() const override;
    5051private:
    5152    virtual bool isMockTheme() const override { return true; }
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r196666 r196688  
    32273227#endif
    32283228
     3229bool RenderLayer::usesMockScrollAnimator() const
     3230{
     3231    return Settings::usesMockScrollAnimator();
     3232}
     3233
     3234void RenderLayer::logMockScrollAnimatorMessage(const String& message) const
     3235{
     3236    renderer().document().addConsoleMessage(MessageSource::Other, MessageLevel::Debug, "RenderLayer: " + message);
     3237}
     3238
    32293239int RenderLayer::verticalScrollbarWidth(OverlayScrollbarSizeRelevancy relevancy) const
    32303240{
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r196666 r196688  
    885885    bool isScrollSnapInProgress() const override;
    886886#endif
     887    bool usesMockScrollAnimator() const override;
     888    void logMockScrollAnimatorMessage(const String&) const override;
    887889
    888890#if PLATFORM(IOS)
  • trunk/Source/WebCore/rendering/RenderListBox.cpp

    r196439 r196688  
    820820}
    821821
     822bool RenderListBox::usesMockScrollAnimator() const
     823{
     824    return Settings::usesMockScrollAnimator();
     825}
     826
     827void RenderListBox::logMockScrollAnimatorMessage(const String& message) const
     828{
     829    document().addConsoleMessage(MessageSource::Other, MessageLevel::Debug, "RenderListBox: " + message);
     830}
     831
    822832PassRefPtr<Scrollbar> RenderListBox::createScrollbar()
    823833{
  • trunk/Source/WebCore/rendering/RenderListBox.h

    r196439 r196688  
    137137    virtual bool hasScrollableOrRubberbandableAncestor() override;
    138138    virtual IntRect scrollableAreaBoundingBox(bool* = nullptr) const override;
     139    bool usesMockScrollAnimator() const override;
     140    void logMockScrollAnimatorMessage(const String&) const override;
    139141
    140142    // NOTE: This should only be called by the overriden setScrollOffset from ScrollableArea.
  • trunk/Source/WebCore/testing/Internals.cpp

    r196622 r196688  
    375375    WebCore::overrideUserPreferredLanguages(Vector<String>());
    376376    WebCore::Settings::setUsesOverlayScrollbars(false);
     377    WebCore::Settings::setUsesMockScrollAnimator(false);
    377378    page->inspectorController().setLegacyProfilerEnabled(false);
    378379#if ENABLE(VIDEO_TRACK)
     
    26762677}
    26772678
     2679void Internals::setUsesMockScrollAnimator(bool enabled)
     2680{
     2681    WebCore::Settings::setUsesMockScrollAnimator(enabled);
     2682}
     2683
    26782684void Internals::forceReload(bool endToEnd)
    26792685{
  • trunk/Source/WebCore/testing/Internals.h

    r196622 r196688  
    347347
    348348    void setUsesOverlayScrollbars(bool enabled);
     349    void setUsesMockScrollAnimator(bool enabled);
    349350
    350351    String getCurrentCursorInfo(ExceptionCode&);
  • trunk/Source/WebCore/testing/Internals.idl

    r196622 r196688  
    348348
    349349    void setUsesOverlayScrollbars(boolean enabled);
     350    void setUsesMockScrollAnimator(boolean enabled);
    350351
    351352    void forceReload(boolean endToEnd);
Note: See TracChangeset for help on using the changeset viewer.