| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 
| 3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 
| 4  * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. | 4  * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. | 
| 5  * | 5  * | 
| 6  * This library is free software; you can redistribute it and/or | 6  * This library is free software; you can redistribute it and/or | 
| 7  * modify it under the terms of the GNU Library General Public | 7  * modify it under the terms of the GNU Library General Public | 
| 8  * License as published by the Free Software Foundation; either | 8  * License as published by the Free Software Foundation; either | 
| 9  * version 2 of the License, or (at your option) any later version. | 9  * version 2 of the License, or (at your option) any later version. | 
| 10  * | 10  * | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 68   LayoutBoxRareData() | 68   LayoutBoxRareData() | 
| 69       : m_spannerPlaceholder(nullptr), | 69       : m_spannerPlaceholder(nullptr), | 
| 70         m_overrideLogicalContentWidth(-1), | 70         m_overrideLogicalContentWidth(-1), | 
| 71         m_overrideLogicalContentHeight(-1), | 71         m_overrideLogicalContentHeight(-1), | 
| 72         m_hasOverrideContainingBlockContentLogicalWidth(false), | 72         m_hasOverrideContainingBlockContentLogicalWidth(false), | 
| 73         m_hasOverrideContainingBlockContentLogicalHeight(false), | 73         m_hasOverrideContainingBlockContentLogicalHeight(false), | 
| 74         m_percentHeightContainer(nullptr), | 74         m_percentHeightContainer(nullptr), | 
| 75         m_snapContainer(nullptr), | 75         m_snapContainer(nullptr), | 
| 76         m_snapAreas(nullptr) {} | 76         m_snapAreas(nullptr) {} | 
| 77 | 77 | 
| 78   // For spanners, the spanner placeholder that lays us out within the multicol 
      container. | 78   // For spanners, the spanner placeholder that lays us out within the multicol | 
|  | 79   // container. | 
| 79   LayoutMultiColumnSpannerPlaceholder* m_spannerPlaceholder; | 80   LayoutMultiColumnSpannerPlaceholder* m_spannerPlaceholder; | 
| 80 | 81 | 
| 81   LayoutUnit m_overrideLogicalContentWidth; | 82   LayoutUnit m_overrideLogicalContentWidth; | 
| 82   LayoutUnit m_overrideLogicalContentHeight; | 83   LayoutUnit m_overrideLogicalContentHeight; | 
| 83 | 84 | 
| 84   bool m_hasOverrideContainingBlockContentLogicalWidth; | 85   bool m_hasOverrideContainingBlockContentLogicalWidth; | 
| 85   bool m_hasOverrideContainingBlockContentLogicalHeight; | 86   bool m_hasOverrideContainingBlockContentLogicalHeight; | 
| 86   LayoutUnit m_overrideContainingBlockContentLogicalWidth; | 87   LayoutUnit m_overrideContainingBlockContentLogicalWidth; | 
| 87   LayoutUnit m_overrideContainingBlockContentLogicalHeight; | 88   LayoutUnit m_overrideContainingBlockContentLogicalHeight; | 
| 88 | 89 | 
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 324       return; | 325       return; | 
| 325     m_frameRect.setLocation(location); | 326     m_frameRect.setLocation(location); | 
| 326     frameRectChanged(); | 327     frameRectChanged(); | 
| 327   } | 328   } | 
| 328 | 329 | 
| 329   // The ancestor box that this object's location and topLeftLocation are | 330   // The ancestor box that this object's location and topLeftLocation are | 
| 330   // relative to. | 331   // relative to. | 
| 331   virtual LayoutBox* locationContainer() const; | 332   virtual LayoutBox* locationContainer() const; | 
| 332 | 333 | 
| 333   // FIXME: Currently scrollbars are using int geometry and positioned based on | 334   // FIXME: Currently scrollbars are using int geometry and positioned based on | 
| 334   // pixelSnappedBorderBoxRect whose size may change when location changes becau
      se of | 335   // pixelSnappedBorderBoxRect whose size may change when location changes | 
| 335   // pixel snapping. This function is used to change location of the LayoutBox o
      utside | 336   // because of pixel snapping. This function is used to change location of the | 
| 336   // of LayoutBox::layout(). Will remove when we use LayoutUnits for scrollbars. | 337   // LayoutBox outside of LayoutBox::layout(). Will remove when we use | 
|  | 338   // LayoutUnits for scrollbars. | 
| 337   void setLocationAndUpdateOverflowControlsIfNeeded(const LayoutPoint&); | 339   void setLocationAndUpdateOverflowControlsIfNeeded(const LayoutPoint&); | 
| 338 | 340 | 
| 339   void setSize(const LayoutSize& size) { | 341   void setSize(const LayoutSize& size) { | 
| 340     if (size == m_frameRect.size()) | 342     if (size == m_frameRect.size()) | 
| 341       return; | 343       return; | 
| 342     m_frameRect.setSize(size); | 344     m_frameRect.setSize(size); | 
| 343     frameRectChanged(); | 345     frameRectChanged(); | 
| 344   } | 346   } | 
| 345   void move(LayoutUnit dx, LayoutUnit dy) { | 347   void move(LayoutUnit dx, LayoutUnit dy) { | 
| 346     if (!dx && !dy) | 348     if (!dx && !dy) | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 367     return LayoutRect(LayoutUnit(borderLeft()), LayoutUnit(borderTop()), | 369     return LayoutRect(LayoutUnit(borderLeft()), LayoutUnit(borderTop()), | 
| 368                       clientWidth(), clientHeight()); | 370                       clientWidth(), clientHeight()); | 
| 369   } | 371   } | 
| 370   IntRect pixelSnappedBorderBoxRect() const { | 372   IntRect pixelSnappedBorderBoxRect() const { | 
| 371     return IntRect(IntPoint(), m_frameRect.pixelSnappedSize()); | 373     return IntRect(IntPoint(), m_frameRect.pixelSnappedSize()); | 
| 372   } | 374   } | 
| 373   IntRect borderBoundingBox() const final { | 375   IntRect borderBoundingBox() const final { | 
| 374     return pixelSnappedBorderBoxRect(); | 376     return pixelSnappedBorderBoxRect(); | 
| 375   } | 377   } | 
| 376 | 378 | 
| 377   // The content area of the box (excludes padding - and intrinsic padding for t
      able cells, etc... - and border). | 379   // The content area of the box (excludes padding - and intrinsic padding for | 
|  | 380   // table cells, etc... - and border). | 
| 378   DISABLE_CFI_PERF LayoutRect contentBoxRect() const { | 381   DISABLE_CFI_PERF LayoutRect contentBoxRect() const { | 
| 379     return LayoutRect(borderLeft() + paddingLeft(), borderTop() + paddingTop(), | 382     return LayoutRect(borderLeft() + paddingLeft(), borderTop() + paddingTop(), | 
| 380                       contentWidth(), contentHeight()); | 383                       contentWidth(), contentHeight()); | 
| 381   } | 384   } | 
| 382   LayoutSize contentBoxOffset() const { | 385   LayoutSize contentBoxOffset() const { | 
| 383     return LayoutSize(borderLeft() + paddingLeft(), borderTop() + paddingTop()); | 386     return LayoutSize(borderLeft() + paddingLeft(), borderTop() + paddingTop()); | 
| 384   } | 387   } | 
| 385   // The content box in absolute coords. Ignores transforms. | 388   // The content box in absolute coords. Ignores transforms. | 
| 386   IntRect absoluteContentBox() const; | 389   IntRect absoluteContentBox() const; | 
| 387   // The offset of the content box in absolute coords, ignoring transforms. | 390   // The offset of the content box in absolute coords, ignoring transforms. | 
| 388   IntSize absoluteContentBoxOffset() const; | 391   IntSize absoluteContentBoxOffset() const; | 
| 389   // The content box converted to absolute coords (taking transforms into accoun
      t). | 392   // The content box converted to absolute coords (taking transforms into | 
|  | 393   // account). | 
| 390   FloatQuad absoluteContentQuad() const; | 394   FloatQuad absoluteContentQuad() const; | 
| 391   // The enclosing rectangle of the background with given opacity requirement. | 395   // The enclosing rectangle of the background with given opacity requirement. | 
| 392   LayoutRect backgroundRect(BackgroundRectType) const; | 396   LayoutRect backgroundRect(BackgroundRectType) const; | 
| 393 | 397 | 
| 394   // This returns the content area of the box (excluding padding and border). Th
      e only difference with contentBoxRect is that computedCSSContentBoxRect | 398   // This returns the content area of the box (excluding padding and border). | 
| 395   // does include the intrinsic padding in the content box as this is what some 
      callers expect (like getComputedStyle). | 399   // The only difference with contentBoxRect is that computedCSSContentBoxRect | 
|  | 400   // does include the intrinsic padding in the content box as this is what some | 
|  | 401   // callers expect (like getComputedStyle). | 
| 396   LayoutRect computedCSSContentBoxRect() const { | 402   LayoutRect computedCSSContentBoxRect() const { | 
| 397     return LayoutRect( | 403     return LayoutRect( | 
| 398         borderLeft() + computedCSSPaddingLeft(), | 404         borderLeft() + computedCSSPaddingLeft(), | 
| 399         borderTop() + computedCSSPaddingTop(), | 405         borderTop() + computedCSSPaddingTop(), | 
| 400         clientWidth() - computedCSSPaddingLeft() - computedCSSPaddingRight(), | 406         clientWidth() - computedCSSPaddingLeft() - computedCSSPaddingRight(), | 
| 401         clientHeight() - computedCSSPaddingTop() - computedCSSPaddingBottom()); | 407         clientHeight() - computedCSSPaddingTop() - computedCSSPaddingBottom()); | 
| 402   } | 408   } | 
| 403 | 409 | 
| 404   void addOutlineRects(Vector<LayoutRect>&, | 410   void addOutlineRects(Vector<LayoutRect>&, | 
| 405                        const LayoutPoint& additionalOffset, | 411                        const LayoutPoint& additionalOffset, | 
| 406                        IncludeBlockVisualOverflowOrNot) const override; | 412                        IncludeBlockVisualOverflowOrNot) const override; | 
| 407 | 413 | 
| 408   // Use this with caution! No type checking is done! | 414   // Use this with caution! No type checking is done! | 
| 409   LayoutBox* previousSiblingBox() const; | 415   LayoutBox* previousSiblingBox() const; | 
| 410   LayoutBox* previousInFlowSiblingBox() const; | 416   LayoutBox* previousInFlowSiblingBox() const; | 
| 411   LayoutBox* nextSiblingBox() const; | 417   LayoutBox* nextSiblingBox() const; | 
| 412   LayoutBox* nextInFlowSiblingBox() const; | 418   LayoutBox* nextInFlowSiblingBox() const; | 
| 413   LayoutBox* parentBox() const; | 419   LayoutBox* parentBox() const; | 
| 414 | 420 | 
| 415   // Return the previous sibling column set or spanner placeholder. Only to be u
      sed on multicol container children. | 421   // Return the previous sibling column set or spanner placeholder. Only to be | 
|  | 422   // used on multicol container children. | 
| 416   LayoutBox* previousSiblingMultiColumnBox() const; | 423   LayoutBox* previousSiblingMultiColumnBox() const; | 
| 417   // Return the next sibling column set or spanner placeholder. Only to be used 
      on multicol container children. | 424   // Return the next sibling column set or spanner placeholder. Only to be used | 
|  | 425   // on multicol container children. | 
| 418   LayoutBox* nextSiblingMultiColumnBox() const; | 426   LayoutBox* nextSiblingMultiColumnBox() const; | 
| 419 | 427 | 
| 420   bool canResize() const; | 428   bool canResize() const; | 
| 421 | 429 | 
| 422   // Visual and layout overflow are in the coordinate space of the box.  This me
      ans that they | 430   // Visual and layout overflow are in the coordinate space of the box. This | 
| 423   // aren't purely physical directions. For horizontal-tb and vertical-lr they w
      ill match physical | 431   // means that they aren't purely physical directions. For horizontal-tb and | 
| 424   // directions, but for vertical-rl, the left/right are flipped when compared t
      o their physical | 432   // vertical-lr they will match physical directions, but for vertical-rl, the | 
| 425   // counterparts.  For example minX is on the left in vertical-lr, but it is on
       the right in | 433   // left/right are flipped when compared to their physical counterparts. | 
|  | 434   // For example minX is on the left in vertical-lr, but it is on the right in | 
| 426   // vertical-rl. | 435   // vertical-rl. | 
| 427   LayoutRect noOverflowRect() const; | 436   LayoutRect noOverflowRect() const; | 
| 428   LayoutRect layoutOverflowRect() const { | 437   LayoutRect layoutOverflowRect() const { | 
| 429     return m_overflow ? m_overflow->layoutOverflowRect() : noOverflowRect(); | 438     return m_overflow ? m_overflow->layoutOverflowRect() : noOverflowRect(); | 
| 430   } | 439   } | 
| 431   IntRect pixelSnappedLayoutOverflowRect() const { | 440   IntRect pixelSnappedLayoutOverflowRect() const { | 
| 432     return pixelSnappedIntRect(layoutOverflowRect()); | 441     return pixelSnappedIntRect(layoutOverflowRect()); | 
| 433   } | 442   } | 
| 434   LayoutSize maxLayoutOverflow() const { | 443   LayoutSize maxLayoutOverflow() const { | 
| 435     return LayoutSize(layoutOverflowRect().maxX(), layoutOverflowRect().maxY()); | 444     return LayoutSize(layoutOverflowRect().maxX(), layoutOverflowRect().maxY()); | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 453                                               : visualOverflowRect().maxY(); | 462                                               : visualOverflowRect().maxY(); | 
| 454   } | 463   } | 
| 455 | 464 | 
| 456   LayoutRect selfVisualOverflowRect() const { | 465   LayoutRect selfVisualOverflowRect() const { | 
| 457     return m_overflow ? m_overflow->selfVisualOverflowRect() : borderBoxRect(); | 466     return m_overflow ? m_overflow->selfVisualOverflowRect() : borderBoxRect(); | 
| 458   } | 467   } | 
| 459   LayoutRect contentsVisualOverflowRect() const { | 468   LayoutRect contentsVisualOverflowRect() const { | 
| 460     return m_overflow ? m_overflow->contentsVisualOverflowRect() : LayoutRect(); | 469     return m_overflow ? m_overflow->contentsVisualOverflowRect() : LayoutRect(); | 
| 461   } | 470   } | 
| 462 | 471 | 
| 463   // These methods don't mean the box *actually* has top/left overflow.  They me
      an that | 472   // These methods don't mean the box *actually* has top/left overflow. They | 
| 464   // *if* the box overflows, it will overflow to the top/left rather than the bo
      ttom/right. | 473   // mean that *if* the box overflows, it will overflow to the top/left rather | 
| 465   // This happens when child content is laid out right-to-left (e.g. direction:r
      tl) or | 474   // than the bottom/right. This happens when child content is laid out | 
| 466   // or bottom-to-top (e.g. direction:rtl writing-mode:vertical-rl). | 475   // right-to-left (e.g. direction:rtl) or or bottom-to-top (e.g. direction:rtl | 
|  | 476   // writing-mode:vertical-rl). | 
| 467   virtual bool hasTopOverflow() const; | 477   virtual bool hasTopOverflow() const; | 
| 468   virtual bool hasLeftOverflow() const; | 478   virtual bool hasLeftOverflow() const; | 
| 469 | 479 | 
| 470   void addLayoutOverflow(const LayoutRect&); | 480   void addLayoutOverflow(const LayoutRect&); | 
| 471   void addSelfVisualOverflow(const LayoutRect&); | 481   void addSelfVisualOverflow(const LayoutRect&); | 
| 472   void addContentsVisualOverflow(const LayoutRect&); | 482   void addContentsVisualOverflow(const LayoutRect&); | 
| 473 | 483 | 
| 474   void addVisualEffectOverflow(); | 484   void addVisualEffectOverflow(); | 
| 475   LayoutRectOutsets computeVisualEffectOverflowOutsets() const; | 485   LayoutRectOutsets computeVisualEffectOverflowOutsets() const; | 
| 476   void addOverflowFromChild(LayoutBox* child) { | 486   void addOverflowFromChild(LayoutBox* child) { | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 493   } | 503   } | 
| 494   LayoutUnit contentLogicalWidth() const { | 504   LayoutUnit contentLogicalWidth() const { | 
| 495     return style()->isHorizontalWritingMode() ? contentWidth() | 505     return style()->isHorizontalWritingMode() ? contentWidth() | 
| 496                                               : contentHeight(); | 506                                               : contentHeight(); | 
| 497   } | 507   } | 
| 498   LayoutUnit contentLogicalHeight() const { | 508   LayoutUnit contentLogicalHeight() const { | 
| 499     return style()->isHorizontalWritingMode() ? contentHeight() | 509     return style()->isHorizontalWritingMode() ? contentHeight() | 
| 500                                               : contentWidth(); | 510                                               : contentWidth(); | 
| 501   } | 511   } | 
| 502 | 512 | 
| 503   // IE extensions. Used to calculate offsetWidth/Height.  Overridden by inlines
       (LayoutFlow) | 513   // IE extensions. Used to calculate offsetWidth/Height. Overridden by inlines | 
| 504   // to return the remaining width on a given line (and the height of a single l
      ine). | 514   // (LayoutFlow) to return the remaining width on a given line (and the height | 
|  | 515   // of a single line). | 
| 505   LayoutUnit offsetWidth() const override { return m_frameRect.width(); } | 516   LayoutUnit offsetWidth() const override { return m_frameRect.width(); } | 
| 506   LayoutUnit offsetHeight() const override { return m_frameRect.height(); } | 517   LayoutUnit offsetHeight() const override { return m_frameRect.height(); } | 
| 507 | 518 | 
| 508   int pixelSnappedOffsetWidth(const Element*) const final; | 519   int pixelSnappedOffsetWidth(const Element*) const final; | 
| 509   int pixelSnappedOffsetHeight(const Element*) const final; | 520   int pixelSnappedOffsetHeight(const Element*) const final; | 
| 510 | 521 | 
| 511   // More IE extensions.  clientWidth and clientHeight represent the interior of
       an object | 522   // More IE extensions.  clientWidth and clientHeight represent the interior of | 
| 512   // excluding border and scrollbar.  clientLeft/Top are just the borderLeftWidt
      h and borderTopWidth. | 523   // an object excluding border and scrollbar. clientLeft/Top are just the | 
|  | 524   // borderLeftWidth and borderTopWidth. | 
| 513   DISABLE_CFI_PERF LayoutUnit clientLeft() const { | 525   DISABLE_CFI_PERF LayoutUnit clientLeft() const { | 
| 514     return LayoutUnit(borderLeft() + | 526     return LayoutUnit(borderLeft() + | 
| 515                       (shouldPlaceBlockDirectionScrollbarOnLogicalLeft() | 527                       (shouldPlaceBlockDirectionScrollbarOnLogicalLeft() | 
| 516                            ? verticalScrollbarWidth() | 528                            ? verticalScrollbarWidth() | 
| 517                            : 0)); | 529                            : 0)); | 
| 518   } | 530   } | 
| 519   DISABLE_CFI_PERF LayoutUnit clientTop() const { | 531   DISABLE_CFI_PERF LayoutUnit clientTop() const { | 
| 520     return LayoutUnit(borderTop()); | 532     return LayoutUnit(borderTop()); | 
| 521   } | 533   } | 
| 522   LayoutUnit clientWidth() const; | 534   LayoutUnit clientWidth() const; | 
| 523   LayoutUnit clientHeight() const; | 535   LayoutUnit clientHeight() const; | 
| 524   DISABLE_CFI_PERF LayoutUnit clientLogicalWidth() const { | 536   DISABLE_CFI_PERF LayoutUnit clientLogicalWidth() const { | 
| 525     return style()->isHorizontalWritingMode() ? clientWidth() : clientHeight(); | 537     return style()->isHorizontalWritingMode() ? clientWidth() : clientHeight(); | 
| 526   } | 538   } | 
| 527   DISABLE_CFI_PERF LayoutUnit clientLogicalHeight() const { | 539   DISABLE_CFI_PERF LayoutUnit clientLogicalHeight() const { | 
| 528     return style()->isHorizontalWritingMode() ? clientHeight() : clientWidth(); | 540     return style()->isHorizontalWritingMode() ? clientHeight() : clientWidth(); | 
| 529   } | 541   } | 
| 530   DISABLE_CFI_PERF LayoutUnit clientLogicalBottom() const { | 542   DISABLE_CFI_PERF LayoutUnit clientLogicalBottom() const { | 
| 531     return borderBefore() + clientLogicalHeight(); | 543     return borderBefore() + clientLogicalHeight(); | 
| 532   } | 544   } | 
| 533   DISABLE_CFI_PERF LayoutRect clientBoxRect() const { | 545   DISABLE_CFI_PERF LayoutRect clientBoxRect() const { | 
| 534     return LayoutRect(clientLeft(), clientTop(), clientWidth(), clientHeight()); | 546     return LayoutRect(clientLeft(), clientTop(), clientWidth(), clientHeight()); | 
| 535   } | 547   } | 
| 536 | 548 | 
| 537   int pixelSnappedClientWidth() const; | 549   int pixelSnappedClientWidth() const; | 
| 538   int pixelSnappedClientHeight() const; | 550   int pixelSnappedClientHeight() const; | 
| 539 | 551 | 
| 540   // scrollWidth/scrollHeight will be the same as clientWidth/clientHeight unles
      s the | 552   // scrollWidth/scrollHeight will be the same as clientWidth/clientHeight | 
| 541   // object has overflow:hidden/scroll/auto specified and also has overflow. | 553   // unless the object has overflow:hidden/scroll/auto specified and also has | 
| 542   // scrollLeft/Top return the current scroll position.  These methods are virtu
      al so that objects like | 554   // overflow. scrollLeft/Top return the current scroll position. These methods | 
| 543   // textareas can scroll shadow content (but pretend that they are the objects 
      that are | 555   // are virtual so that objects like textareas can scroll shadow content (but | 
| 544   // scrolling). | 556   // pretend that they are the objects that are scrolling). | 
| 545   virtual LayoutUnit scrollLeft() const; | 557   virtual LayoutUnit scrollLeft() const; | 
| 546   virtual LayoutUnit scrollTop() const; | 558   virtual LayoutUnit scrollTop() const; | 
| 547   virtual LayoutUnit scrollWidth() const; | 559   virtual LayoutUnit scrollWidth() const; | 
| 548   virtual LayoutUnit scrollHeight() const; | 560   virtual LayoutUnit scrollHeight() const; | 
| 549   int pixelSnappedScrollWidth() const; | 561   int pixelSnappedScrollWidth() const; | 
| 550   int pixelSnappedScrollHeight() const; | 562   int pixelSnappedScrollHeight() const; | 
| 551   virtual void setScrollLeft(LayoutUnit); | 563   virtual void setScrollLeft(LayoutUnit); | 
| 552   virtual void setScrollTop(LayoutUnit); | 564   virtual void setScrollTop(LayoutUnit); | 
| 553 | 565 | 
| 554   void scrollToOffset(const DoubleSize&, | 566   void scrollToOffset(const DoubleSize&, | 
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 632                                 styleToUse->direction(), value); | 644                                 styleToUse->direction(), value); | 
| 633   } | 645   } | 
| 634   void setMarginEnd(LayoutUnit value, | 646   void setMarginEnd(LayoutUnit value, | 
| 635                     const ComputedStyle* overrideStyle = nullptr) { | 647                     const ComputedStyle* overrideStyle = nullptr) { | 
| 636     const ComputedStyle* styleToUse = overrideStyle ? overrideStyle : style(); | 648     const ComputedStyle* styleToUse = overrideStyle ? overrideStyle : style(); | 
| 637     m_marginBoxOutsets.setEnd(styleToUse->getWritingMode(), | 649     m_marginBoxOutsets.setEnd(styleToUse->getWritingMode(), | 
| 638                               styleToUse->direction(), value); | 650                               styleToUse->direction(), value); | 
| 639   } | 651   } | 
| 640 | 652 | 
| 641   // The following functions are used to implement collapsing margins. | 653   // The following functions are used to implement collapsing margins. | 
| 642   // All objects know their maximal positive and negative margins.  The | 654   // All objects know their maximal positive and negative margins. The formula | 
| 643   // formula for computing a collapsed margin is |maxPosMargin| - |maxNegmargin|
      . | 655   // for computing a collapsed margin is |maxPosMargin| - |maxNegmargin|. | 
| 644   // For a non-collapsing box, such as a leaf element, this formula will simply 
      return | 656   // For a non-collapsing box, such as a leaf element, this formula will simply | 
| 645   // the margin of the element.  Blocks override the maxMarginBefore and maxMarg
      inAfter | 657   // return the margin of the element.  Blocks override the maxMarginBefore and | 
| 646   // methods. | 658   // maxMarginAfter methods. | 
| 647   virtual bool isSelfCollapsingBlock() const { return false; } | 659   virtual bool isSelfCollapsingBlock() const { return false; } | 
| 648   virtual LayoutUnit collapsedMarginBefore() const { return marginBefore(); } | 660   virtual LayoutUnit collapsedMarginBefore() const { return marginBefore(); } | 
| 649   virtual LayoutUnit collapsedMarginAfter() const { return marginAfter(); } | 661   virtual LayoutUnit collapsedMarginAfter() const { return marginAfter(); } | 
| 650   LayoutRectOutsets collapsedMarginBoxLogicalOutsets() const { | 662   LayoutRectOutsets collapsedMarginBoxLogicalOutsets() const { | 
| 651     return LayoutRectOutsets(collapsedMarginBefore(), LayoutUnit(), | 663     return LayoutRectOutsets(collapsedMarginBefore(), LayoutUnit(), | 
| 652                              collapsedMarginAfter(), LayoutUnit()); | 664                              collapsedMarginAfter(), LayoutUnit()); | 
| 653   } | 665   } | 
| 654 | 666 | 
| 655   void absoluteRects(Vector<IntRect>&, | 667   void absoluteRects(Vector<IntRect>&, | 
| 656                      const LayoutPoint& accumulatedOffset) const override; | 668                      const LayoutPoint& accumulatedOffset) const override; | 
| 657   void absoluteQuads(Vector<FloatQuad>&) const override; | 669   void absoluteQuads(Vector<FloatQuad>&) const override; | 
| 658   FloatRect localBoundingBoxRectForAccessibility() const final; | 670   FloatRect localBoundingBoxRectForAccessibility() const final; | 
| 659 | 671 | 
| 660   int reflectionOffset() const; | 672   int reflectionOffset() const; | 
| 661   // Given a rect in the object's coordinate space, returns the corresponding re
      ct in the reflection. | 673   // Given a rect in the object's coordinate space, returns the corresponding | 
|  | 674   // rect in the reflection. | 
| 662   LayoutRect reflectedRect(const LayoutRect&) const; | 675   LayoutRect reflectedRect(const LayoutRect&) const; | 
| 663 | 676 | 
| 664   void layout() override; | 677   void layout() override; | 
| 665   void paint(const PaintInfo&, const LayoutPoint&) const override; | 678   void paint(const PaintInfo&, const LayoutPoint&) const override; | 
| 666   bool nodeAtPoint(HitTestResult&, | 679   bool nodeAtPoint(HitTestResult&, | 
| 667                    const HitTestLocation& locationInContainer, | 680                    const HitTestLocation& locationInContainer, | 
| 668                    const LayoutPoint& accumulatedOffset, | 681                    const LayoutPoint& accumulatedOffset, | 
| 669                    HitTestAction) override; | 682                    HitTestAction) override; | 
| 670 | 683 | 
| 671   LayoutUnit minPreferredLogicalWidth() const override; | 684   LayoutUnit minPreferredLogicalWidth() const override; | 
| 672   LayoutUnit maxPreferredLogicalWidth() const override; | 685   LayoutUnit maxPreferredLogicalWidth() const override; | 
| 673 | 686 | 
| 674   // FIXME: We should rename these back to overrideLogicalHeight/Width and have 
      them store | 687   // FIXME: We should rename these back to overrideLogicalHeight/Width and have | 
| 675   // the border-box height/width like the regular height/width accessors on Layo
      utBox. | 688   // them store the border-box height/width like the regular height/width | 
| 676   // Right now, these are different than contentHeight/contentWidth because they
       still | 689   // accessors on LayoutBox. Right now, these are different than contentHeight/ | 
| 677   // include the scrollbar height/width. | 690   // contentWidth because they still include the scrollbar height/width. | 
| 678   LayoutUnit overrideLogicalContentWidth() const; | 691   LayoutUnit overrideLogicalContentWidth() const; | 
| 679   LayoutUnit overrideLogicalContentHeight() const; | 692   LayoutUnit overrideLogicalContentHeight() const; | 
| 680   bool hasOverrideLogicalContentHeight() const; | 693   bool hasOverrideLogicalContentHeight() const; | 
| 681   bool hasOverrideLogicalContentWidth() const; | 694   bool hasOverrideLogicalContentWidth() const; | 
| 682   void setOverrideLogicalContentHeight(LayoutUnit); | 695   void setOverrideLogicalContentHeight(LayoutUnit); | 
| 683   void setOverrideLogicalContentWidth(LayoutUnit); | 696   void setOverrideLogicalContentWidth(LayoutUnit); | 
| 684   void clearOverrideSize(); | 697   void clearOverrideSize(); | 
| 685   void clearOverrideLogicalContentHeight(); | 698   void clearOverrideLogicalContentHeight(); | 
| 686   void clearOverrideLogicalContentWidth(); | 699   void clearOverrideLogicalContentWidth(); | 
| 687 | 700 | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 735     // (logical top or logical left). | 748     // (logical top or logical left). | 
| 736     LayoutUnit m_position; | 749     LayoutUnit m_position; | 
| 737 | 750 | 
| 738     // |m_margins| represents the margins in the measured direction. | 751     // |m_margins| represents the margins in the measured direction. | 
| 739     // Note that ComputedMarginValues has also the margins in | 752     // Note that ComputedMarginValues has also the margins in | 
| 740     // the orthogonal direction to have clearer names but they are | 753     // the orthogonal direction to have clearer names but they are | 
| 741     // ignored in the code. | 754     // ignored in the code. | 
| 742     ComputedMarginValues m_margins; | 755     ComputedMarginValues m_margins; | 
| 743   }; | 756   }; | 
| 744 | 757 | 
| 745   // Resolve auto margins in the chosen direction of the containing block so tha
      t objects can be pushed to the start, middle or end | 758   // Resolve auto margins in the chosen direction of the containing block so | 
| 746   // of the containing block. | 759   // that objects can be pushed to the start, middle or end of the containing | 
|  | 760   // block. | 
| 747   void computeMarginsForDirection(MarginDirection forDirection, | 761   void computeMarginsForDirection(MarginDirection forDirection, | 
| 748                                   const LayoutBlock* containingBlock, | 762                                   const LayoutBlock* containingBlock, | 
| 749                                   LayoutUnit containerWidth, | 763                                   LayoutUnit containerWidth, | 
| 750                                   LayoutUnit childWidth, | 764                                   LayoutUnit childWidth, | 
| 751                                   LayoutUnit& marginStart, | 765                                   LayoutUnit& marginStart, | 
| 752                                   LayoutUnit& marginEnd, | 766                                   LayoutUnit& marginEnd, | 
| 753                                   Length marginStartLength, | 767                                   Length marginStartLength, | 
| 754                                   Length marginStartEnd) const; | 768                                   Length marginStartEnd) const; | 
| 755 | 769 | 
| 756   // Used to resolve margins in the containing block's block-flow direction. | 770   // Used to resolve margins in the containing block's block-flow direction. | 
| 757   void computeAndSetBlockDirectionMargins(const LayoutBlock* containingBlock); | 771   void computeAndSetBlockDirectionMargins(const LayoutBlock* containingBlock); | 
| 758 | 772 | 
| 759   LayoutUnit offsetFromLogicalTopOfFirstPage() const; | 773   LayoutUnit offsetFromLogicalTopOfFirstPage() const; | 
| 760 | 774 | 
| 761   // The page logical offset is the object's offset from the top of the page in 
      the page progression | 775   // The page logical offset is the object's offset from the top of the page in | 
| 762   // direction (so an x-offset in vertical text and a y-offset for horizontal te
      xt). | 776   // the page progression direction (so an x-offset in vertical text and a | 
|  | 777   // y-offset for horizontal text). | 
| 763   LayoutUnit pageLogicalOffset() const { | 778   LayoutUnit pageLogicalOffset() const { | 
| 764     return m_rareData ? m_rareData->m_pageLogicalOffset : LayoutUnit(); | 779     return m_rareData ? m_rareData->m_pageLogicalOffset : LayoutUnit(); | 
| 765   } | 780   } | 
| 766   void setPageLogicalOffset(LayoutUnit); | 781   void setPageLogicalOffset(LayoutUnit); | 
| 767 | 782 | 
| 768   // Specify which page or column to associate with an offset, if said offset is
       exactly at a page | 783   // Specify which page or column to associate with an offset, if said offset is | 
| 769   // or column boundary. | 784   // exactly at a page or column boundary. | 
| 770   enum PageBoundaryRule { AssociateWithFormerPage, AssociateWithLatterPage }; | 785   enum PageBoundaryRule { AssociateWithFormerPage, AssociateWithLatterPage }; | 
| 771   LayoutUnit pageLogicalHeightForOffset(LayoutUnit) const; | 786   LayoutUnit pageLogicalHeightForOffset(LayoutUnit) const; | 
| 772   LayoutUnit pageRemainingLogicalHeightForOffset(LayoutUnit, | 787   LayoutUnit pageRemainingLogicalHeightForOffset(LayoutUnit, | 
| 773                                                  PageBoundaryRule) const; | 788                                                  PageBoundaryRule) const; | 
| 774 | 789 | 
| 775   // Calculate the strut to insert in order fit content of size |contentLogicalH
      eight|. | 790   // Calculate the strut to insert in order fit content of size | 
| 776   // |strutToNextPage| is the strut to add to |offset| to merely get to the top 
      of the next page | 791   // |contentLogicalHeight|. |strutToNextPage| is the strut to add to |offset| | 
| 777   // or column. This is what will be returned if the content can actually fit th
      ere. Otherwise, | 792   // to merely get to the top of the next page or column. This is what will be | 
| 778   // return the distance to the next fragmentainer that can fit this piece of co
      ntent. | 793   // returned if the content can actually fit there. Otherwise, return the | 
|  | 794   // distance to the next fragmentainer that can fit this piece of content. | 
| 779   virtual LayoutUnit calculatePaginationStrutToFitContent( | 795   virtual LayoutUnit calculatePaginationStrutToFitContent( | 
| 780       LayoutUnit offset, | 796       LayoutUnit offset, | 
| 781       LayoutUnit strutToNextPage, | 797       LayoutUnit strutToNextPage, | 
| 782       LayoutUnit contentLogicalHeight) const; | 798       LayoutUnit contentLogicalHeight) const; | 
| 783 | 799 | 
| 784   void positionLineBox(InlineBox*); | 800   void positionLineBox(InlineBox*); | 
| 785   void moveWithEdgeOfInlineContainerIfNecessary(bool isHorizontal); | 801   void moveWithEdgeOfInlineContainerIfNecessary(bool isHorizontal); | 
| 786 | 802 | 
| 787   virtual InlineBox* createInlineBox(); | 803   virtual InlineBox* createInlineBox(); | 
| 788   void dirtyLineBoxes(bool fullLayout); | 804   void dirtyLineBoxes(bool fullLayout); | 
| 789 | 805 | 
| 790   // For atomic inline elements, this function returns the inline box that conta
      ins us.  Enables | 806   // For atomic inline elements, this function returns the inline box that | 
| 791   // the atomic inline LayoutObject to quickly determine what line it is contain
      ed on and to easily | 807   // contains us. Enables the atomic inline LayoutObject to quickly determine | 
| 792   // iterate over structures on the line. | 808   // what line it is contained on and to easily iterate over structures on the | 
|  | 809   // line. | 
| 793   InlineBox* inlineBoxWrapper() const { return m_inlineBoxWrapper; } | 810   InlineBox* inlineBoxWrapper() const { return m_inlineBoxWrapper; } | 
| 794   void setInlineBoxWrapper(InlineBox*); | 811   void setInlineBoxWrapper(InlineBox*); | 
| 795   void deleteLineBoxWrapper(); | 812   void deleteLineBoxWrapper(); | 
| 796 | 813 | 
| 797   void setSpannerPlaceholder(LayoutMultiColumnSpannerPlaceholder&); | 814   void setSpannerPlaceholder(LayoutMultiColumnSpannerPlaceholder&); | 
| 798   void clearSpannerPlaceholder(); | 815   void clearSpannerPlaceholder(); | 
| 799   LayoutMultiColumnSpannerPlaceholder* spannerPlaceholder() const final { | 816   LayoutMultiColumnSpannerPlaceholder* spannerPlaceholder() const final { | 
| 800     return m_rareData ? m_rareData->m_spannerPlaceholder : 0; | 817     return m_rareData ? m_rareData->m_spannerPlaceholder : 0; | 
| 801   } | 818   } | 
| 802 | 819 | 
| 803   // A pagination strut is the amount of space needed to push an in-flow block-l
      evel object (or | 820   // A pagination strut is the amount of space needed to push an in-flow block- | 
| 804   // float) to the logical top of the next page or column. It will be set both f
      or forced breaks | 821   // level object (or float) to the logical top of the next page or column. It | 
| 805   // (e.g. page-break-before:always) and soft breaks (when there's not enough sp
      ace in the current | 822   // will be set both for forced breaks (e.g. page-break-before:always) and soft | 
| 806   // page / column for the object). The strut is baked into the logicalTop() of 
      the object, so | 823   // breaks (when there's not enough space in the current page / column for the | 
| 807   // that logicalTop() - paginationStrut() == the original position in the previ
      ous column before | 824   // object). The strut is baked into the logicalTop() of the object, so that | 
| 808   // deciding to break. | 825   // logicalTop() - paginationStrut() == the original position in the previous | 
|  | 826   // column before deciding to break. | 
| 809   // | 827   // | 
| 810   // Pagination struts are either set in front of a block-level box (here) or be
      fore a line | 828   // Pagination struts are either set in front of a block-level box (here) or | 
| 811   // (RootInlineBox::paginationStrut()). | 829   // before a line (RootInlineBox::paginationStrut()). | 
| 812   LayoutUnit paginationStrut() const { | 830   LayoutUnit paginationStrut() const { | 
| 813     return m_rareData ? m_rareData->m_paginationStrut : LayoutUnit(); | 831     return m_rareData ? m_rareData->m_paginationStrut : LayoutUnit(); | 
| 814   } | 832   } | 
| 815   void setPaginationStrut(LayoutUnit); | 833   void setPaginationStrut(LayoutUnit); | 
| 816   void resetPaginationStrut() { | 834   void resetPaginationStrut() { | 
| 817     if (m_rareData) | 835     if (m_rareData) | 
| 818       m_rareData->m_paginationStrut = LayoutUnit(); | 836       m_rareData->m_paginationStrut = LayoutUnit(); | 
| 819   } | 837   } | 
| 820 | 838 | 
| 821   // Is the specified break-before or break-after value supported on this object
      ? It needs to be | 839   // Is the specified break-before or break-after value supported on this | 
| 822   // in-flow all the way up to a fragmentation context that supports the specifi
      ed value. | 840   // object? It needs to be in-flow all the way up to a fragmentation context | 
|  | 841   // that supports the specified value. | 
| 823   bool isBreakBetweenControllable(EBreak) const; | 842   bool isBreakBetweenControllable(EBreak) const; | 
| 824 | 843 | 
| 825   // Is the specified break-inside value supported on this object? It needs to b
      e contained by a | 844   // Is the specified break-inside value supported on this object? It needs to | 
| 826   // fragmentation context that supports the specified value. | 845   // be contained by a fragmentation context that supports the specified value. | 
| 827   bool isBreakInsideControllable(EBreak) const; | 846   bool isBreakInsideControllable(EBreak) const; | 
| 828 | 847 | 
| 829   virtual EBreak breakAfter() const; | 848   virtual EBreak breakAfter() const; | 
| 830   virtual EBreak breakBefore() const; | 849   virtual EBreak breakBefore() const; | 
| 831   EBreak breakInside() const; | 850   EBreak breakInside() const; | 
| 832 | 851 | 
| 833   // Join two adjacent break values specified on break-before and/or break-after
      . avoid* values | 852   // Join two adjacent break values specified on break-before and/or break- | 
| 834   // win over auto values, and forced break values win over avoid* values. |firs
      tValue| is | 853   // after. avoid* values win over auto values, and forced break values win over | 
| 835   // specified on an element earlier in the flow than |secondValue|. This method
       is used at class | 854   // avoid* values. |firstValue| is specified on an element earlier in the flow | 
| 836   // A break points [1], to join the values of the previous break-after and the 
      next | 855   // than |secondValue|. This method is used at class A break points [1], to | 
| 837   // break-before, to figure out whether we may, must, or should not, break at t
      hat point. It is | 856   // join the values of the previous break-after and the next break-before, to | 
| 838   // also used when propagating break-before values from first children and brea
      k-after values on | 857   // figure out whether we may, must, or should not, break at that point. It is | 
| 839   // last children to their container. | 858   // also used when propagating break-before values from first children and | 
|  | 859   // break-after values on last children to their container. | 
| 840   // | 860   // | 
| 841   // [1] https://drafts.csswg.org/css-break/#possible-breaks | 861   // [1] https://drafts.csswg.org/css-break/#possible-breaks | 
| 842   static EBreak joinFragmentainerBreakValues(EBreak firstValue, | 862   static EBreak joinFragmentainerBreakValues(EBreak firstValue, | 
| 843                                              EBreak secondValue); | 863                                              EBreak secondValue); | 
| 844 | 864 | 
| 845   static bool isForcedFragmentainerBreakValue(EBreak); | 865   static bool isForcedFragmentainerBreakValue(EBreak); | 
| 846 | 866 | 
| 847   EBreak classABreakPointValue(EBreak previousBreakAfterValue) const; | 867   EBreak classABreakPointValue(EBreak previousBreakAfterValue) const; | 
| 848 | 868 | 
| 849   // Return true if we should insert a break in front of this box. The box needs
       to start at a | 869   // Return true if we should insert a break in front of this box. The box needs | 
| 850   // valid class A break point in order to allow a forced break. To determine wh
      ether or not to | 870   // to start at a valid class A break point in order to allow a forced break. | 
| 851   // break, we also need to know the break-after value of the previous in-flow s
      ibling. | 871   // To determine whether or not to break, we also need to know the break-after | 
|  | 872   // value of the previous in-flow sibling. | 
| 852   bool needsForcedBreakBefore(EBreak previousBreakAfterValue) const; | 873   bool needsForcedBreakBefore(EBreak previousBreakAfterValue) const; | 
| 853 | 874 | 
| 854   bool paintedOutputOfObjectHasNoEffectRegardlessOfSize() const override; | 875   bool paintedOutputOfObjectHasNoEffectRegardlessOfSize() const override; | 
| 855   LayoutRect localOverflowRectForPaintInvalidation() const override; | 876   LayoutRect localOverflowRectForPaintInvalidation() const override; | 
| 856   bool mapToVisualRectInAncestorSpace( | 877   bool mapToVisualRectInAncestorSpace( | 
| 857       const LayoutBoxModelObject* ancestor, | 878       const LayoutBoxModelObject* ancestor, | 
| 858       LayoutRect&, | 879       LayoutRect&, | 
| 859       VisualRectFlags = DefaultVisualRectFlags) const override; | 880       VisualRectFlags = DefaultVisualRectFlags) const override; | 
| 860 | 881 | 
| 861   LayoutUnit containingBlockLogicalHeightForGetComputedStyle() const; | 882   LayoutUnit containingBlockLogicalHeightForGetComputedStyle() const; | 
| 862 | 883 | 
| 863   LayoutUnit containingBlockLogicalWidthForContent() const override; | 884   LayoutUnit containingBlockLogicalWidthForContent() const override; | 
| 864   LayoutUnit containingBlockLogicalHeightForContent( | 885   LayoutUnit containingBlockLogicalHeightForContent( | 
| 865       AvailableLogicalHeightType) const; | 886       AvailableLogicalHeightType) const; | 
| 866 | 887 | 
| 867   LayoutUnit containingBlockAvailableLineWidth() const; | 888   LayoutUnit containingBlockAvailableLineWidth() const; | 
| 868   LayoutUnit perpendicularContainingBlockLogicalHeight() const; | 889   LayoutUnit perpendicularContainingBlockLogicalHeight() const; | 
| 869 | 890 | 
| 870   virtual void updateLogicalWidth(); | 891   virtual void updateLogicalWidth(); | 
| 871   void updateLogicalHeight(); | 892   void updateLogicalHeight(); | 
| 872   virtual void computeLogicalHeight(LayoutUnit logicalHeight, | 893   virtual void computeLogicalHeight(LayoutUnit logicalHeight, | 
| 873                                     LayoutUnit logicalTop, | 894                                     LayoutUnit logicalTop, | 
| 874                                     LogicalExtentComputedValues&) const; | 895                                     LogicalExtentComputedValues&) const; | 
| 875   // This function will compute the logical border-box height, without laying ou
      t the box. This means that the result | 896   // This function will compute the logical border-box height, without laying | 
| 876   // is only "correct" when the height is explicitly specified. This function ex
      ists so that intrinsic width calculations | 897   // out the box. This means that the result is only "correct" when the height | 
| 877   // have a way to deal with children that have orthogonal flows. | 898   // is explicitly specified. This function exists so that intrinsic width | 
| 878   // When there is no explicit height, this function assumes a content height of
       zero (and returns just border+padding) | 899   // calculations have a way to deal with children that have orthogonal flows. | 
|  | 900   // When there is no explicit height, this function assumes a content height of | 
|  | 901   // zero (and returns just border+padding). | 
| 879   LayoutUnit computeLogicalHeightWithoutLayout() const; | 902   LayoutUnit computeLogicalHeightWithoutLayout() const; | 
| 880 | 903 | 
| 881   void computeLogicalWidth(LogicalExtentComputedValues&) const; | 904   void computeLogicalWidth(LogicalExtentComputedValues&) const; | 
| 882 | 905 | 
| 883   bool stretchesToViewport() const { | 906   bool stretchesToViewport() const { | 
| 884     return document().inQuirksMode() && stretchesToViewportInQuirksMode(); | 907     return document().inQuirksMode() && stretchesToViewportInQuirksMode(); | 
| 885   } | 908   } | 
| 886 | 909 | 
| 887   virtual LayoutSize intrinsicSize() const { return LayoutSize(); } | 910   virtual LayoutSize intrinsicSize() const { return LayoutSize(); } | 
| 888   LayoutUnit intrinsicLogicalWidth() const { | 911   LayoutUnit intrinsicLogicalWidth() const { | 
| 889     return style()->isHorizontalWritingMode() ? intrinsicSize().width() | 912     return style()->isHorizontalWritingMode() ? intrinsicSize().width() | 
| 890                                               : intrinsicSize().height(); | 913                                               : intrinsicSize().height(); | 
| 891   } | 914   } | 
| 892   LayoutUnit intrinsicLogicalHeight() const { | 915   LayoutUnit intrinsicLogicalHeight() const { | 
| 893     return style()->isHorizontalWritingMode() ? intrinsicSize().height() | 916     return style()->isHorizontalWritingMode() ? intrinsicSize().height() | 
| 894                                               : intrinsicSize().width(); | 917                                               : intrinsicSize().width(); | 
| 895   } | 918   } | 
| 896   virtual LayoutUnit intrinsicContentLogicalHeight() const { | 919   virtual LayoutUnit intrinsicContentLogicalHeight() const { | 
| 897     return m_intrinsicContentLogicalHeight; | 920     return m_intrinsicContentLogicalHeight; | 
| 898   } | 921   } | 
| 899 | 922 | 
| 900   // Whether or not the element shrinks to its intrinsic width (rather than fill
      ing the width | 923   // Whether or not the element shrinks to its intrinsic width (rather than | 
| 901   // of a containing block).  HTML4 buttons, <select>s, <input>s, legends, and f
      loating/compact elements do this. | 924   // filling the width of a containing block). HTML4 buttons, <select>s, | 
|  | 925   // <input>s, legends, and floating/compact elements do this. | 
| 902   bool sizesLogicalWidthToFitContent(const Length& logicalWidth) const; | 926   bool sizesLogicalWidthToFitContent(const Length& logicalWidth) const; | 
| 903 | 927 | 
| 904   LayoutUnit shrinkLogicalWidthToAvoidFloats(LayoutUnit childMarginStart, | 928   LayoutUnit shrinkLogicalWidthToAvoidFloats(LayoutUnit childMarginStart, | 
| 905                                              LayoutUnit childMarginEnd, | 929                                              LayoutUnit childMarginEnd, | 
| 906                                              const LayoutBlockFlow* cb) const; | 930                                              const LayoutBlockFlow* cb) const; | 
| 907 | 931 | 
| 908   LayoutUnit computeLogicalWidthUsing(SizeType, | 932   LayoutUnit computeLogicalWidthUsing(SizeType, | 
| 909                                       const Length& logicalWidth, | 933                                       const Length& logicalWidth, | 
| 910                                       LayoutUnit availableLogicalWidth, | 934                                       LayoutUnit availableLogicalWidth, | 
| 911                                       const LayoutBlock* containingBlock) const; | 935                                       const LayoutBlock* containingBlock) const; | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 931       LayoutUnit logicalHeight) const; | 955       LayoutUnit logicalHeight) const; | 
| 932 | 956 | 
| 933   virtual LayoutUnit computeReplacedLogicalWidth( | 957   virtual LayoutUnit computeReplacedLogicalWidth( | 
| 934       ShouldComputePreferred = ComputeActual) const; | 958       ShouldComputePreferred = ComputeActual) const; | 
| 935   virtual LayoutUnit computeReplacedLogicalHeight( | 959   virtual LayoutUnit computeReplacedLogicalHeight( | 
| 936       LayoutUnit estimatedUsedWidth = LayoutUnit()) const; | 960       LayoutUnit estimatedUsedWidth = LayoutUnit()) const; | 
| 937 | 961 | 
| 938   bool percentageLogicalHeightIsResolvable() const; | 962   bool percentageLogicalHeightIsResolvable() const; | 
| 939   LayoutUnit computePercentageLogicalHeight(const Length& height) const; | 963   LayoutUnit computePercentageLogicalHeight(const Length& height) const; | 
| 940 | 964 | 
| 941   // Block flows subclass availableWidth/Height to handle multi column layout (s
      hrinking the width/height available to children when laying out.) | 965   // Block flows subclass availableWidth/Height to handle multi column layout | 
|  | 966   // (shrinking the width/height available to children when laying out.) | 
| 942   LayoutUnit availableLogicalWidth() const { return contentLogicalWidth(); } | 967   LayoutUnit availableLogicalWidth() const { return contentLogicalWidth(); } | 
| 943   LayoutUnit availableLogicalHeight(AvailableLogicalHeightType) const; | 968   LayoutUnit availableLogicalHeight(AvailableLogicalHeightType) const; | 
| 944   LayoutUnit availableLogicalHeightUsing(const Length&, | 969   LayoutUnit availableLogicalHeightUsing(const Length&, | 
| 945                                          AvailableLogicalHeightType) const; | 970                                          AvailableLogicalHeightType) const; | 
| 946 | 971 | 
| 947   // There are a few cases where we need to refer specifically to the available 
      physical width and available physical height. | 972   // There are a few cases where we need to refer specifically to the available | 
| 948   // Relative positioning is one of those cases, since left/top offsets are phys
      ical. | 973   // physical width and available physical height. Relative positioning is one | 
|  | 974   // of those cases, since left/top offsets are physical. | 
| 949   LayoutUnit availableWidth() const { | 975   LayoutUnit availableWidth() const { | 
| 950     return style()->isHorizontalWritingMode() | 976     return style()->isHorizontalWritingMode() | 
| 951                ? availableLogicalWidth() | 977                ? availableLogicalWidth() | 
| 952                : availableLogicalHeight(IncludeMarginBorderPadding); | 978                : availableLogicalHeight(IncludeMarginBorderPadding); | 
| 953   } | 979   } | 
| 954   LayoutUnit availableHeight() const { | 980   LayoutUnit availableHeight() const { | 
| 955     return style()->isHorizontalWritingMode() | 981     return style()->isHorizontalWritingMode() | 
| 956                ? availableLogicalHeight(IncludeMarginBorderPadding) | 982                ? availableLogicalHeight(IncludeMarginBorderPadding) | 
| 957                : availableLogicalWidth(); | 983                : availableLogicalWidth(); | 
| 958   } | 984   } | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1003   } | 1029   } | 
| 1004   virtual bool scrollsOverflowX() const { | 1030   virtual bool scrollsOverflowX() const { | 
| 1005     return hasOverflowClip() && (style()->overflowX() == OverflowScroll || | 1031     return hasOverflowClip() && (style()->overflowX() == OverflowScroll || | 
| 1006                                  hasAutoHorizontalScrollbar()); | 1032                                  hasAutoHorizontalScrollbar()); | 
| 1007   } | 1033   } | 
| 1008   virtual bool scrollsOverflowY() const { | 1034   virtual bool scrollsOverflowY() const { | 
| 1009     return hasOverflowClip() && (style()->overflowY() == OverflowScroll || | 1035     return hasOverflowClip() && (style()->overflowY() == OverflowScroll || | 
| 1010                                  hasAutoVerticalScrollbar()); | 1036                                  hasAutoVerticalScrollbar()); | 
| 1011   } | 1037   } | 
| 1012 | 1038 | 
| 1013   // Elements such as the <input> field override this to specify that they are s
      crollable | 1039   // Elements such as the <input> field override this to specify that they are | 
| 1014   // outside the context of the CSS overflow style | 1040   // scrollable outside the context of the CSS overflow style | 
| 1015   virtual bool isIntrinsicallyScrollable( | 1041   virtual bool isIntrinsicallyScrollable( | 
| 1016       ScrollbarOrientation orientation) const { | 1042       ScrollbarOrientation orientation) const { | 
| 1017     return false; | 1043     return false; | 
| 1018   } | 1044   } | 
| 1019 | 1045 | 
| 1020   bool hasUnsplittableScrollingOverflow() const; | 1046   bool hasUnsplittableScrollingOverflow() const; | 
| 1021 | 1047 | 
| 1022   // Page / column breakability inside block-level objects. | 1048   // Page / column breakability inside block-level objects. | 
| 1023   enum PaginationBreakability { | 1049   enum PaginationBreakability { | 
| 1024     AllowAnyBreaks,  // No restrictions on breaking. May examine children to fin
      d possible break points. | 1050     AllowAnyBreaks,  // No restrictions on breaking. May examine children to | 
| 1025     ForbidBreaks,    // Forbid breaks inside this object. Content cannot be spli
      t nicely into smaller pieces. | 1051                      // find possible break points. | 
| 1026     AvoidBreaks      // Preferably avoid breaks. If not possible, examine childr
      en to find possible break points. | 1052     ForbidBreaks,  // Forbid breaks inside this object. Content cannot be split | 
|  | 1053                    // nicely into smaller pieces. | 
|  | 1054     AvoidBreaks    // Preferably avoid breaks. If not possible, examine children | 
|  | 1055                    // to find possible break points. | 
| 1027   }; | 1056   }; | 
| 1028   PaginationBreakability getPaginationBreakability() const; | 1057   PaginationBreakability getPaginationBreakability() const; | 
| 1029 | 1058 | 
| 1030   LayoutRect localCaretRect( | 1059   LayoutRect localCaretRect( | 
| 1031       InlineBox*, | 1060       InlineBox*, | 
| 1032       int caretOffset, | 1061       int caretOffset, | 
| 1033       LayoutUnit* extraWidthToEndOfLine = nullptr) override; | 1062       LayoutUnit* extraWidthToEndOfLine = nullptr) override; | 
| 1034 | 1063 | 
| 1035   virtual LayoutRect overflowClipRect( | 1064   virtual LayoutRect overflowClipRect( | 
| 1036       const LayoutPoint& location, | 1065       const LayoutPoint& location, | 
| 1037       OverlayScrollbarClipBehavior = IgnoreOverlayScrollbarSize) const; | 1066       OverlayScrollbarClipBehavior = IgnoreOverlayScrollbarSize) const; | 
| 1038   LayoutRect clipRect(const LayoutPoint& location) const; | 1067   LayoutRect clipRect(const LayoutPoint& location) const; | 
| 1039   virtual bool hasControlClip() const { return false; } | 1068   virtual bool hasControlClip() const { return false; } | 
| 1040   virtual LayoutRect controlClipRect(const LayoutPoint&) const { | 1069   virtual LayoutRect controlClipRect(const LayoutPoint&) const { | 
| 1041     return LayoutRect(); | 1070     return LayoutRect(); | 
| 1042   } | 1071   } | 
| 1043 | 1072 | 
| 1044   // Returns the combination of overflow clip, contain: paint clip and CSS clip 
      for this object, in local space. | 1073   // Returns the combination of overflow clip, contain: paint clip and CSS clip | 
|  | 1074   // for this object, in local space. | 
| 1045   LayoutRect clippingRect() const; | 1075   LayoutRect clippingRect() const; | 
| 1046 | 1076 | 
| 1047   virtual void paintBoxDecorationBackground(const PaintInfo&, | 1077   virtual void paintBoxDecorationBackground(const PaintInfo&, | 
| 1048                                             const LayoutPoint&) const; | 1078                                             const LayoutPoint&) const; | 
| 1049   virtual void paintMask(const PaintInfo&, const LayoutPoint&) const; | 1079   virtual void paintMask(const PaintInfo&, const LayoutPoint&) const; | 
| 1050   void imageChanged(WrappedImagePtr, const IntRect* = nullptr) override; | 1080   void imageChanged(WrappedImagePtr, const IntRect* = nullptr) override; | 
| 1051   ResourcePriority computeResourcePriority() const final; | 1081   ResourcePriority computeResourcePriority() const final; | 
| 1052 | 1082 | 
| 1053   void logicalExtentAfterUpdatingLogicalWidth(const LayoutUnit& logicalTop, | 1083   void logicalExtentAfterUpdatingLogicalWidth(const LayoutUnit& logicalTop, | 
| 1054                                               LogicalExtentComputedValues&); | 1084                                               LogicalExtentComputedValues&); | 
| 1055 | 1085 | 
| 1056   PositionWithAffinity positionForPoint(const LayoutPoint&) override; | 1086   PositionWithAffinity positionForPoint(const LayoutPoint&) override; | 
| 1057 | 1087 | 
| 1058   void removeFloatingOrPositionedChildFromBlockLists(); | 1088   void removeFloatingOrPositionedChildFromBlockLists(); | 
| 1059 | 1089 | 
| 1060   PaintLayer* enclosingFloatPaintingLayer() const; | 1090   PaintLayer* enclosingFloatPaintingLayer() const; | 
| 1061 | 1091 | 
| 1062   virtual int firstLineBoxBaseline() const { return -1; } | 1092   virtual int firstLineBoxBaseline() const { return -1; } | 
| 1063   virtual int inlineBlockBaseline(LineDirectionMode) const { | 1093   virtual int inlineBlockBaseline(LineDirectionMode) const { | 
| 1064     return -1; | 1094     return -1; | 
| 1065   }  // Returns -1 if we should skip this box when computing the baseline of an 
      inline-block. | 1095   }  // Returns -1 if we should skip this box when computing the baseline of an | 
|  | 1096      // inline-block. | 
| 1066 | 1097 | 
| 1067   virtual Node* nodeForHitTest() const { return node(); } | 1098   virtual Node* nodeForHitTest() const { return node(); } | 
| 1068 | 1099 | 
| 1069   bool shrinkToAvoidFloats() const; | 1100   bool shrinkToAvoidFloats() const; | 
| 1070   virtual bool avoidsFloats() const; | 1101   virtual bool avoidsFloats() const; | 
| 1071 | 1102 | 
| 1072   void markChildForPaginationRelayoutIfNeeded(LayoutBox& child, | 1103   void markChildForPaginationRelayoutIfNeeded(LayoutBox& child, | 
| 1073                                               SubtreeLayoutScope&); | 1104                                               SubtreeLayoutScope&); | 
| 1074 | 1105 | 
| 1075   bool isWritingModeRoot() const { | 1106   bool isWritingModeRoot() const { | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1107       bool firstLine, | 1138       bool firstLine, | 
| 1108       LineDirectionMode, | 1139       LineDirectionMode, | 
| 1109       LinePositionMode = PositionOnContainingLine) const override; | 1140       LinePositionMode = PositionOnContainingLine) const override; | 
| 1110 | 1141 | 
| 1111   LayoutUnit offsetLeft(const Element*) const override; | 1142   LayoutUnit offsetLeft(const Element*) const override; | 
| 1112   LayoutUnit offsetTop(const Element*) const override; | 1143   LayoutUnit offsetTop(const Element*) const override; | 
| 1113 | 1144 | 
| 1114   LayoutPoint flipForWritingModeForChild(const LayoutBox* child, | 1145   LayoutPoint flipForWritingModeForChild(const LayoutBox* child, | 
| 1115                                          const LayoutPoint&) const; | 1146                                          const LayoutPoint&) const; | 
| 1116   LayoutUnit flipForWritingMode(LayoutUnit position) const WARN_UNUSED_RETURN { | 1147   LayoutUnit flipForWritingMode(LayoutUnit position) const WARN_UNUSED_RETURN { | 
| 1117     // The offset is in the block direction (y for horizontal writing modes, x f
      or vertical writing modes). | 1148     // The offset is in the block direction (y for horizontal writing modes, x | 
|  | 1149     // for vertical writing modes). | 
| 1118     if (!UNLIKELY(hasFlippedBlocksWritingMode())) | 1150     if (!UNLIKELY(hasFlippedBlocksWritingMode())) | 
| 1119       return position; | 1151       return position; | 
| 1120     return logicalHeight() - position; | 1152     return logicalHeight() - position; | 
| 1121   } | 1153   } | 
| 1122   LayoutPoint flipForWritingMode(const LayoutPoint& position) const | 1154   LayoutPoint flipForWritingMode(const LayoutPoint& position) const | 
| 1123       WARN_UNUSED_RETURN { | 1155       WARN_UNUSED_RETURN { | 
| 1124     if (!UNLIKELY(hasFlippedBlocksWritingMode())) | 1156     if (!UNLIKELY(hasFlippedBlocksWritingMode())) | 
| 1125       return position; | 1157       return position; | 
| 1126     return isHorizontalWritingMode() | 1158     return isHorizontalWritingMode() | 
| 1127                ? LayoutPoint(position.x(), m_frameRect.height() - position.y()) | 1159                ? LayoutPoint(position.x(), m_frameRect.height() - position.y()) | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1174   bool hasVisualOverflow() const { | 1206   bool hasVisualOverflow() const { | 
| 1175     return m_overflow && !borderBoxRect().contains(visualOverflowRect()); | 1207     return m_overflow && !borderBoxRect().contains(visualOverflowRect()); | 
| 1176   } | 1208   } | 
| 1177 | 1209 | 
| 1178   virtual bool needsPreferredWidthsRecalculation() const; | 1210   virtual bool needsPreferredWidthsRecalculation() const; | 
| 1179 | 1211 | 
| 1180   // See README.md for an explanation of scroll origin. | 1212   // See README.md for an explanation of scroll origin. | 
| 1181   virtual IntSize originAdjustmentForScrollbars() const; | 1213   virtual IntSize originAdjustmentForScrollbars() const; | 
| 1182   IntSize scrolledContentOffset() const; | 1214   IntSize scrolledContentOffset() const; | 
| 1183 | 1215 | 
| 1184   // Maps a rect in scrolling contents space to box space and apply overflow cli
      p if needed. | 1216   // Maps a rect in scrolling contents space to box space and apply overflow | 
| 1185   // Returns true if no clipping applied or the rect actually intersects the cli
      pping region. | 1217   // clip if needed. Returns true if no clipping applied or the rect actually | 
| 1186   // If edgeInclusive is true, then this method may return true even | 1218   // intersects the clipping region. If edgeInclusive is true, then this method | 
| 1187   // if the resulting rect has zero area. | 1219   // may return true even if the resulting rect has zero area. | 
| 1188   bool mapScrollingContentsRectToBoxSpace( | 1220   bool mapScrollingContentsRectToBoxSpace( | 
| 1189       LayoutRect&, | 1221       LayoutRect&, | 
| 1190       ApplyOverflowClipFlag, | 1222       ApplyOverflowClipFlag, | 
| 1191       VisualRectFlags = DefaultVisualRectFlags) const; | 1223       VisualRectFlags = DefaultVisualRectFlags) const; | 
| 1192 | 1224 | 
| 1193   virtual bool hasRelativeLogicalWidth() const; | 1225   virtual bool hasRelativeLogicalWidth() const; | 
| 1194   virtual bool hasRelativeLogicalHeight() const; | 1226   virtual bool hasRelativeLogicalHeight() const; | 
| 1195 | 1227 | 
| 1196   bool hasHorizontalLayoutOverflow() const { | 1228   bool hasHorizontalLayoutOverflow() const { | 
| 1197     if (!m_overflow) | 1229     if (!m_overflow) | 
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1282   void willBeRemovedFromTree() override; | 1314   void willBeRemovedFromTree() override; | 
| 1283 | 1315 | 
| 1284   void styleWillChange(StyleDifference, const ComputedStyle& newStyle) override; | 1316   void styleWillChange(StyleDifference, const ComputedStyle& newStyle) override; | 
| 1285   void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override; | 1317   void styleDidChange(StyleDifference, const ComputedStyle* oldStyle) override; | 
| 1286   void updateFromStyle() override; | 1318   void updateFromStyle() override; | 
| 1287 | 1319 | 
| 1288   virtual ItemPosition selfAlignmentNormalBehavior() const { | 1320   virtual ItemPosition selfAlignmentNormalBehavior() const { | 
| 1289     return ItemPositionStretch; | 1321     return ItemPositionStretch; | 
| 1290   } | 1322   } | 
| 1291 | 1323 | 
| 1292   // Returns false if it could not cheaply compute the extent (e.g. fixed backgr
      ound), in which case the returned rect may be incorrect. | 1324   // Returns false if it could not cheaply compute the extent (e.g. fixed | 
| 1293   // FIXME: make this a const method once the LayoutBox reference in BoxPainter 
      is const. | 1325   // background), in which case the returned rect may be incorrect. | 
|  | 1326   // FIXME: make this a const method once the LayoutBox reference in BoxPainter | 
|  | 1327   // is const. | 
| 1294   bool getBackgroundPaintedExtent(LayoutRect&) const; | 1328   bool getBackgroundPaintedExtent(LayoutRect&) const; | 
| 1295   virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, | 1329   virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, | 
| 1296                                                  unsigned maxDepthToTest) const; | 1330                                                  unsigned maxDepthToTest) const; | 
| 1297   bool computeBackgroundIsKnownToBeObscured() const override; | 1331   bool computeBackgroundIsKnownToBeObscured() const override; | 
| 1298 | 1332 | 
| 1299   virtual void computePositionedLogicalWidth( | 1333   virtual void computePositionedLogicalWidth( | 
| 1300       LogicalExtentComputedValues&) const; | 1334       LogicalExtentComputedValues&) const; | 
| 1301 | 1335 | 
| 1302   LayoutUnit computeIntrinsicLogicalWidthUsing( | 1336   LayoutUnit computeIntrinsicLogicalWidthUsing( | 
| 1303       const Length& logicalWidthLength, | 1337       const Length& logicalWidthLength, | 
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1416       const Length& logicalBottom, | 1450       const Length& logicalBottom, | 
| 1417       const Length& marginLogicalTop, | 1451       const Length& marginLogicalTop, | 
| 1418       const Length& marginLogicalBottom, | 1452       const Length& marginLogicalBottom, | 
| 1419       LogicalExtentComputedValues&) const; | 1453       LogicalExtentComputedValues&) const; | 
| 1420 | 1454 | 
| 1421   LayoutUnit fillAvailableMeasure(LayoutUnit availableLogicalWidth) const; | 1455   LayoutUnit fillAvailableMeasure(LayoutUnit availableLogicalWidth) const; | 
| 1422   LayoutUnit fillAvailableMeasure(LayoutUnit availableLogicalWidth, | 1456   LayoutUnit fillAvailableMeasure(LayoutUnit availableLogicalWidth, | 
| 1423                                   LayoutUnit& marginStart, | 1457                                   LayoutUnit& marginStart, | 
| 1424                                   LayoutUnit& marginEnd) const; | 1458                                   LayoutUnit& marginEnd) const; | 
| 1425 | 1459 | 
| 1426   // Calculates the intrinsic(https://drafts.csswg.org/css-sizing-3/#intrinsic) 
      logical widths for this layout box. | 1460   // Calculates the intrinsic(https://drafts.csswg.org/css-sizing-3/#intrinsic) | 
|  | 1461   // logical widths for this layout box. | 
| 1427   // | 1462   // | 
| 1428   // intrinsicWidth is defined as: | 1463   // intrinsicWidth is defined as: | 
| 1429   //     intrinsic size of content (without our border and padding) + scrollbarW
      idth. | 1464   //     intrinsic size of content (without our border and padding) + | 
|  | 1465   //     scrollbarWidth. | 
| 1430   // | 1466   // | 
| 1431   // preferredWidth is defined as: | 1467   // preferredWidth is defined as: | 
| 1432   //     fixedWidth OR (intrinsicWidth plus border and padding). | 1468   //     fixedWidth OR (intrinsicWidth plus border and padding). | 
| 1433   //     Note: fixedWidth includes border and padding and scrollbarWidth. | 1469   //     Note: fixedWidth includes border and padding and scrollbarWidth. | 
| 1434   virtual void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, | 1470   virtual void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, | 
| 1435                                              LayoutUnit& maxLogicalWidth) const; | 1471                                              LayoutUnit& maxLogicalWidth) const; | 
| 1436 | 1472 | 
| 1437   // This function calculates the preferred widths for an object. | 1473   // This function calculates the preferred widths for an object. | 
| 1438   // | 1474   // | 
| 1439   // This function is only expected to be called if | 1475   // This function is only expected to be called if | 
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1560 } | 1596 } | 
| 1561 | 1597 | 
| 1562 inline LayoutBox* LayoutBox::nextSiblingMultiColumnBox() const { | 1598 inline LayoutBox* LayoutBox::nextSiblingMultiColumnBox() const { | 
| 1563   ASSERT(isLayoutMultiColumnSpannerPlaceholder() || isLayoutMultiColumnSet()); | 1599   ASSERT(isLayoutMultiColumnSpannerPlaceholder() || isLayoutMultiColumnSet()); | 
| 1564   return nextSiblingBox(); | 1600   return nextSiblingBox(); | 
| 1565 } | 1601 } | 
| 1566 | 1602 | 
| 1567 inline void LayoutBox::setInlineBoxWrapper(InlineBox* boxWrapper) { | 1603 inline void LayoutBox::setInlineBoxWrapper(InlineBox* boxWrapper) { | 
| 1568   if (boxWrapper) { | 1604   if (boxWrapper) { | 
| 1569     ASSERT(!m_inlineBoxWrapper); | 1605     ASSERT(!m_inlineBoxWrapper); | 
| 1570     // m_inlineBoxWrapper should already be nullptr. Deleting it is a safeguard 
      against security issues. | 1606     // m_inlineBoxWrapper should already be nullptr. Deleting it is a safeguard | 
| 1571     // Otherwise, there will two line box wrappers keeping the reference to this
       layoutObject, and | 1607     // against security issues. Otherwise, there will two line box wrappers | 
| 1572     // only one will be notified when the layoutObject is getting destroyed. The
       second line box wrapper | 1608     // keeping the reference to this layoutObject, and only one will be notified | 
|  | 1609     // when the layoutObject is getting destroyed. The second line box wrapper | 
| 1573     // will keep a stale reference. | 1610     // will keep a stale reference. | 
| 1574     if (UNLIKELY(m_inlineBoxWrapper != nullptr)) | 1611     if (UNLIKELY(m_inlineBoxWrapper != nullptr)) | 
| 1575       deleteLineBoxWrapper(); | 1612       deleteLineBoxWrapper(); | 
| 1576   } | 1613   } | 
| 1577 | 1614 | 
| 1578   m_inlineBoxWrapper = boxWrapper; | 1615   m_inlineBoxWrapper = boxWrapper; | 
| 1579 } | 1616 } | 
| 1580 | 1617 | 
| 1581 inline bool LayoutBox::isForcedFragmentainerBreakValue(EBreak breakValue) { | 1618 inline bool LayoutBox::isForcedFragmentainerBreakValue(EBreak breakValue) { | 
| 1582   return breakValue == BreakColumn || breakValue == BreakLeft || | 1619   return breakValue == BreakColumn || breakValue == BreakLeft || | 
| 1583          breakValue == BreakPage || breakValue == BreakRecto || | 1620          breakValue == BreakPage || breakValue == BreakRecto || | 
| 1584          breakValue == BreakRight || breakValue == BreakVerso; | 1621          breakValue == BreakRight || breakValue == BreakVerso; | 
| 1585 } | 1622 } | 
| 1586 | 1623 | 
| 1587 }  // namespace blink | 1624 }  // namespace blink | 
| 1588 | 1625 | 
| 1589 #endif  // LayoutBox_h | 1626 #endif  // LayoutBox_h | 
| OLD | NEW | 
|---|