TextPosition ScriptController::eventHandlerPosition() const { ScriptableDocumentParser* parser = m_frame->document()->scriptableDocumentParser(); if (parser) return parser->textPosition(); return TextPosition::minimumPosition(); }
// FIXME: Callers should probably use ScriptController::eventHandlerLineNumber() static int parserLineNumber(Document* document) { ScriptableDocumentParser* parser = document->scriptableDocumentParser(); if (!parser) return 1; return parser->lineNumber().oneBasedInt(); }
int ScriptController::eventHandlerLineNumber() const { // JSC expects 1-based line numbers, so we must add one here to get it right. ScriptableDocumentParser* parser = m_frame->document()->scriptableDocumentParser(); if (parser) return parser->lineNumber() + 1; return 0; }
// FIXME: Why is this different from SVGDocumentExtensions parserLineNumber? // FIXME: Callers should probably use ScriptController::eventHandlerLineNumber() static int parserLineNumber(Document* document) { if (!document) return 0; ScriptableDocumentParser* parser = document->scriptableDocumentParser(); if (!parser) return 0; return parser->lineNumber() + 1; }
TextPosition ScriptController::eventHandlerPosition() const { // FIXME: If we are not currently parsing, we should use our current location // in JavaScript, to cover cases like "element.setAttribute('click', ...)". // FIXME: This location maps to the end of the HTML tag, and not to the // exact column number belonging to the event handler attribute. ScriptableDocumentParser* parser = m_frame.document()->scriptableDocumentParser(); if (parser) return parser->textPosition(); return TextPosition::minimumPosition(); }
void PageConsole::addMessage(MessageSource source, MessageLevel level, const String& message, unsigned long requestIdentifier, Document* document) { String url; if (document) url = document->url().string(); unsigned line = 0; if (document && document->parsing() && !document->isInDocumentWrite() && document->scriptableDocumentParser()) { ScriptableDocumentParser* parser = document->scriptableDocumentParser(); if (!parser->isWaitingForScripts() && !parser->isExecutingScript()) line = parser->lineNumber().oneBasedInt(); } addMessage(source, level, message, url, line, 0, 0, requestIdentifier); }
void PageConsole::addMessage(MessageSource source, MessageLevel level, const String& message, unsigned long requestIdentifier, Document* document) { String url; if (document) url = document->url().string(); // FIXME: <http://webkit.org/b/114319> PageConsole::addMessage should automatically determine column number alongside line number unsigned line = 0; if (document && document->parsing() && !document->isInDocumentWrite() && document->scriptableDocumentParser()) { ScriptableDocumentParser* parser = document->scriptableDocumentParser(); if (!parser->isWaitingForScripts() && !parser->isExecutingScript()) line = parser->lineNumber().oneBasedInt(); } addMessage(source, level, message, url, line, 0, 0, 0, requestIdentifier); }
void PageConsole::addMessage(MessageSource source, MessageLevel level, const String& message, unsigned long requestIdentifier, Document* document) { String url; if (document) url = document->url().string(); // FIXME: <http://webkit.org/b/114319> PageConsole::addMessage should automatically determine column number alongside line number. // 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. // 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. // Also, we should determine line numbers for script generated messages (e.g. calling getImageData on a canvas). // We probably need to split this function into multiple ones, as appropriate for different call sites. Or maybe decide based on MessageSource. unsigned line = 0; if (document && document->parsing() && !document->isInDocumentWrite() && document->scriptableDocumentParser()) { ScriptableDocumentParser* parser = document->scriptableDocumentParser(); if (!parser->isWaitingForScripts() && !JSMainThreadExecState::currentState()) line = parser->lineNumber().oneBasedInt(); } addMessage(source, level, message, url, line, 0, 0, 0, requestIdentifier); }