2006-09-19 Eric Seidel <eric@eseidel.com>
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Sep 2006 09:48:22 +0000 (09:48 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Sep 2006 09:48:22 +0000 (09:48 +0000)
        Reviewed by hyatt.

        Exceptions thrown from <script> tags in XHTML/SVG docs show the wrong line numbers
        http://bugzilla.opendarwin.org/show_bug.cgi?id=10846

        No automated test case possible until http://bugzilla.opendarwin.org/show_bug.cgi?id=10905 is resolved.

        * dom/XMLTokenizer.cpp:
        (WebCore::XMLTokenizer::XMLTokenizer):
        (WebCore::XMLTokenizer::startElementNs):
        (WebCore::XMLTokenizer::endElementNs):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16447 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/dom/XMLTokenizer.cpp

index 93039a71454324e838008c3a77e5a3cb4a1a8ea7..b35bd18f26cedd68350f09c8bdbc50aec9e552d8 100644 (file)
@@ -1,3 +1,17 @@
+2006-09-19  Eric Seidel  <eric@eseidel.com>
+
+        Reviewed by hyatt.
+
+        Exceptions thrown from <script> tags in XHTML/SVG docs show the wrong line numbers
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=10846
+        
+        No automated test case possible until http://bugzilla.opendarwin.org/show_bug.cgi?id=10905 is resolved.
+
+        * dom/XMLTokenizer.cpp:
+        (WebCore::XMLTokenizer::XMLTokenizer):
+        (WebCore::XMLTokenizer::startElementNs):
+        (WebCore::XMLTokenizer::endElementNs):
+
 2006-09-19  Krzysztof Kowalczyk <kkowalczyk@gmail.com>
 
         Reviewed by eseidel.  Landed by eseidel.
index 06f5ffd6c104d80d7b3bd705579862e2b3ea2055..df71cfb33be685dfb37608a4f492f32701bc859b 100644 (file)
@@ -143,6 +143,7 @@ private:
 
     CachedScript *m_pendingScript;
     RefPtr<Element> m_scriptElement;
+    int m_scriptStartLine;
     
     bool m_parsingFragment;
     String m_defaultNamespaceURI;
@@ -537,6 +538,7 @@ XMLTokenizer::XMLTokenizer(Document *_doc, FrameView *_view)
     , m_lastErrorLine(0)
     , m_lastErrorColumn(0)
     , m_pendingScript(0)
+    , m_scriptStartLine(0)
     , m_parsingFragment(false)
     , m_pendingCallbacks(new PendingCallbacks)
 {
@@ -559,6 +561,7 @@ XMLTokenizer::XMLTokenizer(DocumentFragment *fragment, Element *parentElement)
     , m_lastErrorLine(0)
     , m_lastErrorColumn(0)
     , m_pendingScript(0)
+    , m_scriptStartLine(0)
     , m_parsingFragment(true)
     , m_pendingCallbacks(new PendingCallbacks)
 {
@@ -764,7 +767,10 @@ void XMLTokenizer::startElementNs(const xmlChar *xmlLocalName, const xmlChar *xm
 
     if (newElement->hasTagName(scriptTag))
         static_cast<HTMLScriptElement *>(newElement.get())->setCreatedByParser(true);
-
+    
+    if (newElement->hasTagName(HTMLNames::scriptTag) || newElement->hasTagName(SVGNames::scriptTag))
+        m_scriptStartLine = lineNumber();
+    
     if (!m_currentNode->addChild(newElement.get())) {
         stopParsing();
         return;
@@ -834,7 +840,7 @@ void XMLTokenizer::endElementNs()
                 if (child->isTextNode() || child->nodeType() == Node::CDATA_SECTION_NODE)
                     scriptCode += static_cast<CharacterData*>(child)->data();
             }
-            m_view->frame()->executeScript(0, scriptCode);
+            m_view->frame()->executeScript(m_doc->URL(), m_scriptStartLine - 1, 0, scriptCode);
         }
         
         m_requestingScript = false;