Reviewed by John.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Feb 2005 17:05:32 +0000 (17:05 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Feb 2005 17:05:32 +0000 (17:05 +0000)
        - fixed <rdar://problem/3915449> paths are relative to the old src URL after document.open, which is supposed to clear the document, including the URL

        * khtml/xml/dom_docimpl.h: Added a new openInternal function for use by KHTMLPart.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::open): Changed to do everything we did before, but also clear the URL and set the
        base URL based on the enclosing document. This is the basic JavaScript/DOM operation of opening a
        document, which is supposed to clear the document, including the URL. In the long run we might want
        to do even more document "resetting and clearing" in here, but this URL clearing is what's needed
        now to fix the most important problem.
        (DocumentImpl::openInternal): Moved the old open code in here, except for the "parsing" check, which
        is unnecessary and inappropriate in the one place we call this.

        * khtml/khtml_part.cpp: (KHTMLPart::begin): Call openInternal instead of open.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/khtml_part.cpp
WebCore/khtml/xml/dom_docimpl.cpp
WebCore/khtml/xml/dom_docimpl.h

index 506a201332d9d296428e01be05af22a6174b2334..dfc4f6c8ce5b17413a1bcc8faa55e22bf1247602 100644 (file)
@@ -1,3 +1,21 @@
+2005-02-11  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3915449> paths are relative to the old src URL after document.open, which is supposed to clear the document, including the URL
+
+        * khtml/xml/dom_docimpl.h: Added a new openInternal function for use by KHTMLPart.
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::open): Changed to do everything we did before, but also clear the URL and set the
+        base URL based on the enclosing document. This is the basic JavaScript/DOM operation of opening a
+        document, which is supposed to clear the document, including the URL. In the long run we might want
+        to do even more document "resetting and clearing" in here, but this URL clearing is what's needed
+        now to fix the most important problem.
+        (DocumentImpl::openInternal): Moved the old open code in here, except for the "parsing" check, which
+        is unnecessary and inappropriate in the one place we call this.
+
+        * khtml/khtml_part.cpp: (KHTMLPart::begin): Call openInternal instead of open.
+
 2005-02-10  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Hyatt
index 2f78235be4e4c96d4b548532df42a4564cc55924..b3e4bb001280fef398f2cda74a312c7030c678c2 100644 (file)
@@ -1571,7 +1571,7 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset )
   d->m_doc->setRestoreState(args.docState);
 #endif
 
-  d->m_doc->open();
+  d->m_doc->openInternal();
   d->m_doc->setParsing(true);
   // clear widget
   if (d->m_view)
index afee8f0f29b55980f3cad31ccfa3154d3987a863..575da11b8fefc9ba801b993bde74fb08e4a61c1e 100644 (file)
@@ -1331,6 +1331,17 @@ void DocumentImpl::open(  )
 {
     if (parsing()) return;
 
+    openInternal();
+
+    // This is work that we should probably do in clear(), but we can't have it
+    // happen when openInternal() is called unless we reorganize KHTMLPart code.
+    setURL(QString());
+    DocumentImpl *parent = parentDocument();
+    setBaseURL(parent ? parent->baseURL() : QString());
+}
+
+void DocumentImpl::openInternal()
+{
     if (m_tokenizer)
         close();
 
index c54bcf253b061624042ab69fd37f8116537f812a..f3d2b17fda31fd95ec651d283f3d121af66f347e 100644 (file)
@@ -302,6 +302,7 @@ public:
     void updateSelection();
     
     void open();
+    void openInternal();
     void close();
     void closeInternal ( bool checkTokenizer );
     void write ( const DOMString &text );