Changeset 166715 in webkit


Ignore:
Timestamp:
Apr 3, 2014 6:27:53 AM (10 years ago)
Author:
abucur@adobe.com
Message:

[CSS Regions] Include region range information when printing the render tree
https://bugs.webkit.org/show_bug.cgi?id=131159

Reviewed by Mihnea Ovidenie.

With this change showRenderObject() will print the region range for objects inside
a flow thread. The format is:
Rs: <startRegion> Re: <endRegion>

Because this can be called anytime during debugging, it's necessary to disable the
current flow thread caching to prevent using the wrong flow thread for an object.

Tests: No new tests, no functional change.

  • rendering/RenderFlowThread.cpp:

(WebCore::CurrentRenderFlowThreadDisabler::CurrentRenderFlowThreadDisabler):
(WebCore::CurrentRenderFlowThreadDisabler::~CurrentRenderFlowThreadDisabler):

  • rendering/RenderFlowThread.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::showRegionsInformation): Added.
(WebCore::RenderObject::showRenderObject):

  • rendering/RenderObject.h:
Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r166714 r166715  
     12014-04-03  Andrei Bucur  <abucur@adobe.com>
     2
     3        [CSS Regions] Include region range information when printing the render tree
     4        https://bugs.webkit.org/show_bug.cgi?id=131159
     5
     6        Reviewed by Mihnea Ovidenie.
     7
     8        With this change showRenderObject() will print the region range for objects inside
     9        a flow thread. The format is:
     10        Rs: <startRegion> Re: <endRegion>
     11
     12        Because this can be called anytime during debugging, it's necessary to disable the
     13        current flow thread caching to prevent using the wrong flow thread for an object.
     14
     15        Tests: No new tests, no functional change.
     16
     17        * rendering/RenderFlowThread.cpp:
     18        (WebCore::CurrentRenderFlowThreadDisabler::CurrentRenderFlowThreadDisabler):
     19        (WebCore::CurrentRenderFlowThreadDisabler::~CurrentRenderFlowThreadDisabler):
     20        * rendering/RenderFlowThread.h:
     21        * rendering/RenderObject.cpp:
     22        (WebCore::RenderObject::showRegionsInformation): Added.
     23        (WebCore::RenderObject::showRenderObject):
     24        * rendering/RenderObject.h:
     25
    1262014-04-03  Antti Koivisto  <antti@apple.com>
    227
  • trunk/Source/WebCore/rendering/RenderFlowThread.cpp

    r166631 r166715  
    130130    m_regionsInvalidated = true;
    131131}
    132 
    133 class CurrentRenderFlowThreadDisabler {
    134     WTF_MAKE_NONCOPYABLE(CurrentRenderFlowThreadDisabler);
    135 public:
    136     CurrentRenderFlowThreadDisabler(RenderView* view)
    137         : m_view(view)
    138         , m_renderFlowThread(0)
    139     {
    140         m_renderFlowThread = m_view->flowThreadController().currentRenderFlowThread();
    141         if (m_renderFlowThread)
    142             view->flowThreadController().setCurrentRenderFlowThread(0);
    143     }
    144     ~CurrentRenderFlowThreadDisabler()
    145     {
    146         if (m_renderFlowThread)
    147             m_view->flowThreadController().setCurrentRenderFlowThread(m_renderFlowThread);
    148     }
    149 private:
    150     RenderView* m_view;
    151     RenderFlowThread* m_renderFlowThread;
    152 };
    153132
    154133void RenderFlowThread::validateRegions()
     
    14591438}
    14601439
     1440CurrentRenderFlowThreadDisabler::CurrentRenderFlowThreadDisabler(RenderView* view)
     1441    : m_view(view)
     1442    , m_renderFlowThread(0)
     1443{
     1444    m_renderFlowThread = m_view->flowThreadController().currentRenderFlowThread();
     1445    if (m_renderFlowThread)
     1446        view->flowThreadController().setCurrentRenderFlowThread(0);
     1447}
     1448
     1449CurrentRenderFlowThreadDisabler::~CurrentRenderFlowThreadDisabler()
     1450{
     1451    if (m_renderFlowThread)
     1452        m_view->flowThreadController().setCurrentRenderFlowThread(m_renderFlowThread);
     1453}
     1454
    14611455
    14621456} // namespace WebCore
  • trunk/Source/WebCore/rendering/RenderFlowThread.h

    r166489 r166715  
    349349};
    350350
     351class CurrentRenderFlowThreadDisabler {
     352    WTF_MAKE_NONCOPYABLE(CurrentRenderFlowThreadDisabler);
     353public:
     354    CurrentRenderFlowThreadDisabler(RenderView*);
     355    ~CurrentRenderFlowThreadDisabler();
     356private:
     357    RenderView* m_view;
     358    RenderFlowThread* m_renderFlowThread;
     359};
     360
    351361// This structure is used by PODIntervalTree for debugging.
    352362#ifndef NDEBUG
  • trunk/Source/WebCore/rendering/RenderObject.cpp

    r166138 r166715  
    14371437}
    14381438
     1439void RenderObject::showRegionsInformation(int& printedCharacters) const
     1440{
     1441    CurrentRenderFlowThreadDisabler flowThreadDisabler(&view());
     1442
     1443    if (RenderFlowThread* flowThread = flowThreadContainingBlock()) {
     1444        const RenderBox* box = isBox() ? toRenderBox(this) : nullptr;
     1445        if (box) {
     1446            RenderRegion* startRegion = nullptr;
     1447            RenderRegion* endRegion = nullptr;
     1448            flowThread->getRegionRangeForBox(box, startRegion, endRegion);
     1449            printedCharacters += fprintf(stderr, " Rs:%p Re:%p", startRegion, endRegion);
     1450        }
     1451    }
     1452}
     1453
    14391454void RenderObject::showRenderObject(int printedCharacters) const
    14401455{
     
    14471462
    14481463    printedCharacters += fprintf(stderr, "%s %p", renderName(), this);
     1464    showRegionsInformation(printedCharacters);
    14491465
    14501466    if (node()) {
  • trunk/Source/WebCore/rendering/RenderObject.h

    r166124 r166715  
    278278    // We don't make printedCharacters an optional parameter so that
    279279    // showRenderObject can be called from gdb easily.
    280     void showRenderObject(int printedCharacters) const;
    281     void showRenderTreeAndMark(const RenderObject* markedObject1 = 0, const char* markedLabel1 = 0, const RenderObject* markedObject2 = 0, const char* markedLabel2 = 0, int depth = 0) const;
     280    void showRenderObject(int) const;
     281    void showRenderTreeAndMark(const RenderObject* = 0, const char* = 0, const RenderObject* = 0, const char* = 0, int = 0) const;
     282    void showRegionsInformation(int&) const;
    282283#endif
    283284
Note: See TracChangeset for help on using the changeset viewer.