Changeset 210320 in webkit


Ignore:
Timestamp:
Jan 4, 2017 11:03:09 PM (7 years ago)
Author:
Manuel Rego Casasnovas
Message:

[css-grid] Fix crash clamping grid lines
https://bugs.webkit.org/show_bug.cgi?id=166637

Reviewed by Darin Adler.

Source/WebCore:

Avoid issues with very big values for the grid lines clamping them on GridPosition.

Test: fast/css-grid-layout/grid-position-crash.html

  • rendering/style/GridArea.h: Move kGridMaxTracks definition to GridPosition.
  • rendering/style/GridPosition.h:

(WebCore::GridPosition::setExplicitPosition): Use new setIntegerPosition().
(WebCore::GridPosition::setSpanPosition): Ditto.
(WebCore::GridPosition::setIntegerPosition): Clamp the position using kGridMaxTracks.

Tools:

Creates new unit test to verify that the maximum tracks limit
is used in GridPosition too.

  • TestWebKitAPI/PlatformEfl.cmake:
  • TestWebKitAPI/PlatformGTK.cmake:
  • TestWebKitAPI/PlatformWin.cmake:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/GridPosition.cpp: Added.

(TestWebKitAPI::TEST):

LayoutTests:

  • fast/css-grid-layout/grid-position-crash-expected.txt: Added.
  • fast/css-grid-layout/grid-position-crash.html: Added.
Location:
trunk
Files:
3 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r210315 r210320  
     12017-01-04  Manuel Rego Casasnovas  <rego@igalia.com>
     2
     3        [css-grid] Fix crash clamping grid lines
     4        https://bugs.webkit.org/show_bug.cgi?id=166637
     5
     6        Reviewed by Darin Adler.
     7
     8        * fast/css-grid-layout/grid-position-crash-expected.txt: Added.
     9        * fast/css-grid-layout/grid-position-crash.html: Added.
     10
    1112017-01-04  Myles C. Maxfield  <mmaxfield@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r210319 r210320  
     12017-01-04  Manuel Rego Casasnovas  <rego@igalia.com>
     2
     3        [css-grid] Fix crash clamping grid lines
     4        https://bugs.webkit.org/show_bug.cgi?id=166637
     5
     6        Reviewed by Darin Adler.
     7
     8        Avoid issues with very big values for the grid lines clamping them on GridPosition.
     9
     10        Test: fast/css-grid-layout/grid-position-crash.html
     11
     12        * rendering/style/GridArea.h: Move kGridMaxTracks definition to GridPosition.
     13        * rendering/style/GridPosition.h:
     14        (WebCore::GridPosition::setExplicitPosition): Use new setIntegerPosition().
     15        (WebCore::GridPosition::setSpanPosition): Ditto.
     16        (WebCore::GridPosition::setIntegerPosition): Clamp the position using kGridMaxTracks.
     17
    1182017-01-04  Darin Adler  <darin@apple.com>
    219
  • trunk/Source/WebCore/rendering/style/GridArea.h

    r208668 r210320  
    4040namespace WebCore {
    4141
    42 // Recommended maximum size for both explicit and implicit grids.
    43 const int kGridMaxTracks = 1000000;
    44 
    4542// A span in a single direction (either rows or columns). Note that |startLine|
    4643// and |endLine| are grid lines' indexes.
  • trunk/Source/WebCore/rendering/style/GridPosition.h

    r208668 r210320  
    3838namespace WebCore {
    3939
     40// Recommended maximum size for both explicit and implicit grids.
     41const int kGridMaxTracks = 1000000;
     42
    4043enum GridPositionType {
    4144    AutoPosition,
     
    7073    {
    7174        m_type = ExplicitPosition;
    72         m_integerPosition = position;
     75        setIntegerPosition(position);
    7376        m_namedGridLine = namedGridLine;
    7477    }
     
    8689    {
    8790        m_type = SpanPosition;
    88         m_integerPosition = position;
     91        setIntegerPosition(position);
    8992        m_namedGridLine = namedGridLine;
    9093    }
     
    123126        return isAuto() || isSpan();
    124127    }
     128
    125129private:
     130    void setIntegerPosition(int integerPosition)
     131    {
     132        m_integerPosition = clampTo(integerPosition, -kGridMaxTracks, kGridMaxTracks);
     133    }
     134
    126135    GridPositionType m_type;
    127136    int m_integerPosition;
  • trunk/Tools/ChangeLog

    r210318 r210320  
     12017-01-04  Manuel Rego Casasnovas  <rego@igalia.com>
     2
     3        [css-grid] Fix crash clamping grid lines
     4        https://bugs.webkit.org/show_bug.cgi?id=166637
     5
     6        Reviewed by Darin Adler.
     7
     8        Creates new unit test to verify that the maximum tracks limit
     9        is used in GridPosition too.
     10
     11        * TestWebKitAPI/PlatformEfl.cmake:
     12        * TestWebKitAPI/PlatformGTK.cmake:
     13        * TestWebKitAPI/PlatformWin.cmake:
     14        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     15        * TestWebKitAPI/Tests/WebCore/GridPosition.cpp: Added.
     16        (TestWebKitAPI::TEST):
     17
    1182017-01-04  Wenson Hsieh  <wenson_hsieh@apple.com>
    219
  • trunk/Tools/TestWebKitAPI/PlatformEfl.cmake

    r209665 r210320  
    5858set(test_webcore_BINARIES
    5959    CSSParser
     60    GridPosition
    6061    HTMLParserIdioms
    6162    LayoutUnit
  • trunk/Tools/TestWebKitAPI/PlatformGTK.cmake

    r210310 r210320  
    133133    ${TESTWEBKITAPI_DIR}/Tests/WebCore/CSSParser.cpp
    134134    ${TESTWEBKITAPI_DIR}/Tests/WebCore/FileSystem.cpp
     135    ${TESTWEBKITAPI_DIR}/Tests/WebCore/GridPosition.cpp
    135136    ${TESTWEBKITAPI_DIR}/Tests/WebCore/HTMLParserIdioms.cpp
    136137    ${TESTWEBKITAPI_DIR}/Tests/WebCore/LayoutUnit.cpp
  • trunk/Tools/TestWebKitAPI/PlatformWin.cmake

    r210310 r210320  
    5151    ${TESTWEBKITAPI_DIR}/Tests/WebCore/FloatPoint.cpp
    5252    ${TESTWEBKITAPI_DIR}/Tests/WebCore/FloatSize.cpp
     53    ${TESTWEBKITAPI_DIR}/Tests/WebCore/GridPosition.cpp
    5354    ${TESTWEBKITAPI_DIR}/Tests/WebCore/HTMLParserIdioms.cpp
    5455    ${TESTWEBKITAPI_DIR}/Tests/WebCore/IntRect.cpp
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r210310 r210320  
    431431                837A35F11D9A1E7D00663C57 /* DownloadRequestBlobURL.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 837A35F01D9A1E6400663C57 /* DownloadRequestBlobURL.html */; };
    432432                83CF1C301C4F1B8B00688447 /* StringUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 83CF1C2C1C4F19AE00688447 /* StringUtilities.mm */; };
     433                8E4A85371E1D1AB200F53B0F /* GridPosition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8E4A85361E1D1AA100F53B0F /* GridPosition.cpp */; };
    433434                930AD402150698D00067970F /* lots-of-text.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 930AD401150698B30067970F /* lots-of-text.html */; };
    434435                9329AA291DE3F81E003ABD07 /* TextBreakIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9329AA281DE3F81E003ABD07 /* TextBreakIterator.cpp */; };
     
    10871088                8AA28C1916D2FA7B002FF4DB /* LoadPageOnCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadPageOnCrash.cpp; sourceTree = "<group>"; };
    10881089                8DD76FA10486AA7600D96B5E /* TestWebKitAPI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TestWebKitAPI; sourceTree = BUILT_PRODUCTS_DIR; };
     1090                8E4A85361E1D1AA100F53B0F /* GridPosition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GridPosition.cpp; sourceTree = "<group>"; };
    10891091                930AD401150698B30067970F /* lots-of-text.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "lots-of-text.html"; sourceTree = "<group>"; };
    10901092                9329AA281DE3F81E003ABD07 /* TextBreakIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBreakIterator.cpp; sourceTree = "<group>"; };
     
    15431545                        isa = PBXGroup;
    15441546                        children = (
     1547                                8E4A85361E1D1AA100F53B0F /* GridPosition.cpp */,
    15451548                                CD89D0371C4EDB1300040A04 /* cocoa */,
    15461549                                7A909A6F1D877475007E10F8 /* AffineTransform.cpp */,
     
    26192622                                7CCE7F0F1A411AE600447C4C /* ResizeWindowAfterCrash.cpp in Sources */,
    26202623                                7CCE7F101A411AE600447C4C /* ResponsivenessTimerDoesntFireEarly.cpp in Sources */,
     2624                                8E4A85371E1D1AB200F53B0F /* GridPosition.cpp in Sources */,
    26212625                                7CCE7F111A411AE600447C4C /* RestoreSessionStateContainingFormData.cpp in Sources */,
    26222626                                7A909A811D877480007E10F8 /* IntPoint.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.