Reviewed by Darin.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Dec 2003 06:56:10 +0000 (06:56 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Dec 2003 06:56:10 +0000 (06:56 +0000)
<rdar://problem/3504156>: XMLHttpRequest reuse test fails
<rdar://problem/3505158>: XMLHttpRequest "abort with open" test fails

        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::open):
        (KJS::XMLHttpRequest::abort):
        (KJS::XMLHttpRequestProtoFunc::tryCall):

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/xmlhttprequest.cpp

index e52145a..dba58c8 100644 (file)
@@ -2,6 +2,18 @@
 
         Reviewed by Darin.
 
+       <rdar://problem/3504156>: XMLHttpRequest reuse test fails
+       <rdar://problem/3505158>: XMLHttpRequest "abort with open" test fails
+
+        * khtml/ecma/xmlhttprequest.cpp:
+        (KJS::XMLHttpRequest::open):
+        (KJS::XMLHttpRequest::abort):
+        (KJS::XMLHttpRequestProtoFunc::tryCall):
+
+2003-12-10  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
        <rdar://problem/3507175>: Setting timeout function can allocate JS objects without lock
 
         * khtml/ecma/kjs_window.cpp:
index 1e119c5..fd6023c 100644 (file)
@@ -263,10 +263,27 @@ bool XMLHttpRequest::urlMatchesDocumentDomain(const KURL& _url) const
 
 void XMLHttpRequest::open(const QString& _method, const KURL& _url, bool _async)
 {
+  abort();
+  aborted = false;
+
+  // clear stuff from possible previous load
+  requestHeaders = QString();
+  responseHeaders = QString();
+  response = QString();
+  createdDocument = false;
+  responseXML = DOM::Document();
+
+  changeState(Uninitialized);
+
+  if (aborted) {
+    return;
+  }
+
   if (!urlMatchesDocumentDomain(_url)) {
     return;
   }
 
+  
   method = _method;
   url = _url;
   async = _async;
@@ -334,6 +351,10 @@ void XMLHttpRequest::abort()
     job->kill();
     job = 0;
   }
+  if (decoder) {
+    decoder->deref();
+    decoder = 0;
+  }
   aborted = true;
 }
 
@@ -548,10 +569,6 @@ Value XMLHttpRequestProtoFunc::tryCall(ExecState *exec, Object &thisObj, const L
        return Undefined();
       }
     
-      if (request->state != Uninitialized) {
-       return Undefined();
-      }
-
       QString method = args[0].toString(exec).qstring();
       KURL url = KURL(Window::retrieveActive(exec)->part()->htmlDocument().completeURL(args[1].toString(exec).qstring()).string());