Changeset 160374 in webkit


Ignore:
Timestamp:
Dec 10, 2013 10:53:51 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

PageConsole::addMessage should automatically determine column number alongside line number
https://bugs.webkit.org/show_bug.cgi?id=114319

Patch by László Langó <lango@inf.u-szeged.hu> on 2013-12-10
Reviewed by Joseph Pecoraro.

Source/WebCore:

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::InlineStyleSheetOwner):

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::ScriptElement):

  • dom/ScriptableDocumentParser.h:
  • dom/StyledElement.cpp:

(WebCore::StyledElement::styleAttributeChanged):

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser):
(WebCore::HTMLDocumentParser::pumpPendingSpeculations):

  • html/parser/HTMLDocumentParser.h:
  • inspector/InspectorResourceAgent.cpp:

(WebCore::InspectorResourceAgent::buildInitiatorObject):

  • page/Console.cpp:

(WebCore::internalAddMessage):

  • page/PageConsole.cpp:

(WebCore::PageConsole::printSourceURLAndPosition):
(WebCore::PageConsole::addMessage):

  • page/PageConsole.h:
  • xml/parser/XMLDocumentParser.h:
  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::error):

LayoutTests:

  • inspector-protocol/page/deny-X-FrameOption-expected.txt: Added.
  • inspector-protocol/page/deny-X-FrameOption.html: Added.
Location:
trunk
Files:
2 added
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r160366 r160374  
     12013-12-10  László Langó  <lango@inf.u-szeged.hu>
     2
     3        PageConsole::addMessage should automatically determine column number alongside line number
     4        https://bugs.webkit.org/show_bug.cgi?id=114319
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        * inspector-protocol/page/deny-X-FrameOption-expected.txt: Added.
     9        * inspector-protocol/page/deny-X-FrameOption.html: Added.
     10
    1112013-12-10  Michał Pakuła vel Rutka  <m.pakula@samsung.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r160370 r160374  
     12013-12-10  László Langó  <lango@inf.u-szeged.hu>
     2
     3        PageConsole::addMessage should automatically determine column number alongside line number
     4        https://bugs.webkit.org/show_bug.cgi?id=114319
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        * dom/InlineStyleSheetOwner.cpp:
     9        (WebCore::InlineStyleSheetOwner::InlineStyleSheetOwner):
     10        * dom/ScriptElement.cpp:
     11        (WebCore::ScriptElement::ScriptElement):
     12        * dom/ScriptableDocumentParser.h:
     13        * dom/StyledElement.cpp:
     14        (WebCore::StyledElement::styleAttributeChanged):
     15        * html/parser/HTMLDocumentParser.cpp:
     16        (WebCore::HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser):
     17        (WebCore::HTMLDocumentParser::pumpPendingSpeculations):
     18        * html/parser/HTMLDocumentParser.h:
     19        * inspector/InspectorResourceAgent.cpp:
     20        (WebCore::InspectorResourceAgent::buildInitiatorObject):
     21        * page/Console.cpp:
     22        (WebCore::internalAddMessage):
     23        * page/PageConsole.cpp:
     24        (WebCore::PageConsole::printSourceURLAndPosition):
     25        (WebCore::PageConsole::addMessage):
     26        * page/PageConsole.h:
     27        * xml/parser/XMLDocumentParser.h:
     28        * xml/parser/XMLDocumentParserLibxml2.cpp:
     29        (WebCore::XMLDocumentParser::error):
     30
    1312013-12-10  Andreas Kling  <akling@apple.com>
    232
  • trunk/Source/WebCore/dom/InlineStyleSheetOwner.cpp

    r158569 r160374  
    3939{
    4040    if (createdByParser && document.scriptableDocumentParser() && !document.isInDocumentWrite())
    41         m_startLineNumber = document.scriptableDocumentParser()->lineNumber();
     41        m_startLineNumber = document.scriptableDocumentParser()->textPosition().m_line;
    4242}
    4343
  • trunk/Source/WebCore/dom/ScriptElement.cpp

    r158569 r160374  
    7676    ASSERT(m_element);
    7777    if (parserInserted && m_element->document().scriptableDocumentParser() && !m_element->document().isInDocumentWrite())
    78         m_startLineNumber = m_element->document().scriptableDocumentParser()->lineNumber();
     78        m_startLineNumber = m_element->document().scriptableDocumentParser()->textPosition().m_line;
    7979}
    8080
  • trunk/Source/WebCore/dom/ScriptableDocumentParser.h

    r156980 r160374  
    4545    virtual bool isWaitingForScripts() const = 0;
    4646
    47     // These are used to expose the current line/column to the scripting system.
    48     virtual OrdinalNumber lineNumber() const = 0;
    4947    virtual TextPosition textPosition() const = 0;
    5048
  • trunk/Source/WebCore/dom/StyledElement.cpp

    r159856 r160374  
    196196    WTF::OrdinalNumber startLineNumber = WTF::OrdinalNumber::beforeFirst();
    197197    if (document().scriptableDocumentParser() && !document().isInDocumentWrite())
    198         startLineNumber = document().scriptableDocumentParser()->lineNumber();
     198        startLineNumber = document().scriptableDocumentParser()->textPosition().m_line;
    199199
    200200    if (newStyleString.isNull()) {
  • trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp

    r158650 r160374  
    315315    Ref<HTMLDocumentParser> protect(*this);
    316316
    317     InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), lineNumber().zeroBasedInt());
     317    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), textPosition().m_line.zeroBasedInt());
    318318
    319319    ASSERT(m_speculations.isEmpty());
     
    321321    processParsedChunkFromBackgroundParser(chunk);
    322322
    323     InspectorInstrumentation::didWriteHTML(cookie, lineNumber().zeroBasedInt());
     323    InspectorInstrumentation::didWriteHTML(cookie, textPosition().m_line.zeroBasedInt());
    324324}
    325325
     
    459459
    460460    // FIXME: Pass in current input length.
    461     InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), lineNumber().zeroBasedInt());
     461    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willWriteHTML(document(), textPosition().m_line.zeroBasedInt());
    462462
    463463    double startTime = monotonicallyIncreasingTime();
     
    475475    }
    476476
    477     InspectorInstrumentation::didWriteHTML(cookie, lineNumber().zeroBasedInt());
     477    InspectorInstrumentation::didWriteHTML(cookie, textPosition().m_line.zeroBasedInt());
    478478}
    479479
     
    829829}
    830830
    831 OrdinalNumber HTMLDocumentParser::lineNumber() const
    832 {
    833 #if ENABLE(THREADED_HTML_PARSER)
    834     if (m_haveBackgroundParser)
    835         return m_textPosition.m_line;
    836 #endif
    837 
    838     return m_input.current().currentLine();
    839 }
    840 
    841831TextPosition HTMLDocumentParser::textPosition() const
    842832{
  • trunk/Source/WebCore/html/parser/HTMLDocumentParser.h

    r157653 r160374  
    8181
    8282    virtual TextPosition textPosition() const;
    83     virtual OrdinalNumber lineNumber() const;
    8483
    8584    virtual void suspendScheduledTasks();
  • trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp

    r159268 r160374  
    455455            .setType(TypeBuilder::Network::Initiator::Type::Parser);
    456456        initiatorObject->setUrl(document->url().string());
    457         initiatorObject->setLineNumber(document->scriptableDocumentParser()->lineNumber().oneBasedInt());
     457        initiatorObject->setLineNumber(document->scriptableDocumentParser()->textPosition().m_line.oneBasedInt());
    458458        return initiatorObject;
    459459    }
  • trunk/Source/WebCore/page/Console.cpp

    r155774 r160374  
    9393        return;
    9494
    95     PageConsole::printSourceURLAndLine(lastCaller.sourceURL(), lastCaller.lineNumber());
     95    PageConsole::printSourceURLAndPosition(lastCaller.sourceURL(), lastCaller.lineNumber());
    9696    PageConsole::printMessageSourceAndLevelPrefix(ConsoleAPIMessageSource, level);
    9797
  • trunk/Source/WebCore/page/PageConsole.cpp

    r156625 r160374  
    6565}
    6666
    67 void PageConsole::printSourceURLAndLine(const String& sourceURL, unsigned lineNumber)
     67void PageConsole::printSourceURLAndPosition(const String& sourceURL, unsigned lineNumber, unsigned columnNumber)
    6868{
    6969    if (!sourceURL.isEmpty()) {
    70         if (lineNumber > 0)
    71             printf("%s:%d: ", sourceURL.utf8().data(), lineNumber);
     70        if (lineNumber > 0 && columnNumber > 0)
     71            printf("%s:%u:%u: ", sourceURL.utf8().data(), lineNumber, columnNumber);
    7272        else
    7373            printf("%s: ", sourceURL.utf8().data());
     
    143143    if (document)
    144144        url = document->url().string();
    145     // FIXME: <http://webkit.org/b/114319> PageConsole::addMessage should automatically determine column number alongside line number.
    146145    // FIXME: The below code attempts to determine line numbers for parser generated errors, but this is not the only reason why we can get here.
    147146    // For example, if we are still parsing and get a WebSocket network error, it will be erroneously attributed to a line where parsing was paused.
    148147    // Also, we should determine line numbers for script generated messages (e.g. calling getImageData on a canvas).
    149148    // We probably need to split this function into multiple ones, as appropriate for different call sites. Or maybe decide based on MessageSource.
     149    // https://bugs.webkit.org/show_bug.cgi?id=125340
    150150    unsigned line = 0;
     151    unsigned column = 0;
    151152    if (document && document->parsing() && !document->isInDocumentWrite() && document->scriptableDocumentParser()) {
    152153        ScriptableDocumentParser* parser = document->scriptableDocumentParser();
    153         if (!parser->isWaitingForScripts() && !JSMainThreadExecState::currentState())
    154             line = parser->lineNumber().oneBasedInt();
    155     }
    156     addMessage(source, level, message, url, line, 0, 0, 0, requestIdentifier);
     154        if (!parser->isWaitingForScripts() && !JSMainThreadExecState::currentState()) {
     155            TextPosition position = parser->textPosition();
     156            line = position.m_line.oneBasedInt();
     157            column = position.m_column.oneBasedInt();
     158        }
     159    }
     160    addMessage(source, level, message, url, line, column, 0, 0, requestIdentifier);
    157161}
    158162
     
    183187        return;
    184188
    185     printSourceURLAndLine(url, lineNumber);
     189    printSourceURLAndPosition(url, lineNumber, columnNumber);
    186190    printMessageSourceAndLevelPrefix(source, level);
    187191
  • trunk/Source/WebCore/page/PageConsole.h

    r156625 r160374  
    4949    ~PageConsole();
    5050
    51     static void printSourceURLAndLine(const String& sourceURL, unsigned lineNumber);
     51    static void printSourceURLAndPosition(const String& sourceURL, unsigned lineNumber, unsigned columnNumber = 0);
    5252    static void printMessageSourceAndLevelPrefix(MessageSource, MessageLevel);
    5353
  • trunk/Source/WebCore/xml/parser/XMLDocumentParser.h

    r159178 r160374  
    106106        virtual void stopParsing();
    107107        virtual void detach();
    108         virtual OrdinalNumber lineNumber() const;
    109         OrdinalNumber columnNumber() const;
    110108
    111109        // from CachedResourceClient
  • trunk/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp

    r160024 r160374  
    973973#endif
    974974
     975    TextPosition position = textPosition();
    975976    if (m_parserPaused)
    976         m_pendingCallbacks->appendErrorCallback(type, reinterpret_cast<const xmlChar*>(m), lineNumber(), columnNumber());
     977        m_pendingCallbacks->appendErrorCallback(type, reinterpret_cast<const xmlChar*>(m), position.m_line, position.m_column);
    977978    else
    978979        handleError(type, m, textPosition());
     
    14271428#endif
    14281429
    1429 OrdinalNumber XMLDocumentParser::lineNumber() const
    1430 {
    1431     return OrdinalNumber::fromOneBasedInt(context() ? context()->input->line : 1);
    1432 }
    1433 
    1434 OrdinalNumber XMLDocumentParser::columnNumber() const
    1435 {
    1436     return OrdinalNumber::fromOneBasedInt(context() ? context()->input->col : 1);
    1437 }
    1438 
    14391430TextPosition XMLDocumentParser::textPosition() const
    14401431{
Note: See TracChangeset for help on using the changeset viewer.