Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: trunk/Source/core/xml/XMLHttpRequest.cpp

Issue 23180002: Revert 156078 "Fix XMLHttpRequest leak document when send() is c..." (Closed) Base URL: svn://svn.chromium.org/blink/
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « trunk/Source/core/xml/XMLHttpRequest.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org> 3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org>
4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org> 4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org>
5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved. 5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved.
6 * Copyright (C) 2012 Intel Corporation 6 * Copyright (C) 2012 Intel Corporation
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 m_error = false; 744 m_error = false;
745 745
746 if (m_async) { 746 if (m_async) {
747 if (m_upload) 747 if (m_upload)
748 request.setReportUploadProgress(true); 748 request.setReportUploadProgress(true);
749 749
750 // ThreadableLoader::create can return null here, for example if we're n o longer attached to a page. 750 // ThreadableLoader::create can return null here, for example if we're n o longer attached to a page.
751 // This is true while running onunload handlers. 751 // This is true while running onunload handlers.
752 // FIXME: Maybe we need to be able to send XMLHttpRequests from onunload , <http://bugs.webkit.org/show_bug.cgi?id=10904>. 752 // FIXME: Maybe we need to be able to send XMLHttpRequests from onunload , <http://bugs.webkit.org/show_bug.cgi?id=10904>.
753 // FIXME: Maybe create() can return null for other reasons too? 753 // FIXME: Maybe create() can return null for other reasons too?
754 ASSERT(!m_loader);
755 m_loader = ThreadableLoader::create(scriptExecutionContext(), this, requ est, options); 754 m_loader = ThreadableLoader::create(scriptExecutionContext(), this, requ est, options);
756 if (m_loader) { 755 if (m_loader) {
757 // Neither this object nor the JavaScript wrapper should be deleted while 756 // Neither this object nor the JavaScript wrapper should be deleted while
758 // a request is in progress because we need to keep the listeners al ive, 757 // a request is in progress because we need to keep the listeners al ive,
759 // and they are referenced by the JavaScript wrapper. 758 // and they are referenced by the JavaScript wrapper.
760
761 // m_loader was null, so there should be no pending activity at this point.
762 ASSERT(!hasPendingActivity());
763 setPendingActivity(this); 759 setPendingActivity(this);
764 } 760 }
765 } else { 761 } else {
766 request.setPriority(ResourceLoadPriorityVeryHigh); 762 request.setPriority(ResourceLoadPriorityVeryHigh);
767 InspectorInstrumentation::willLoadXHRSynchronously(scriptExecutionContex t()); 763 InspectorInstrumentation::willLoadXHRSynchronously(scriptExecutionContex t());
768 ThreadableLoader::loadResourceSynchronously(scriptExecutionContext(), re quest, *this, options); 764 ThreadableLoader::loadResourceSynchronously(scriptExecutionContext(), re quest, *this, options);
769 InspectorInstrumentation::didLoadXHRSynchronously(scriptExecutionContext ()); 765 InspectorInstrumentation::didLoadXHRSynchronously(scriptExecutionContext ());
770 } 766 }
771 767
772 if (!m_exceptionCode && m_error) 768 if (!m_exceptionCode && m_error)
(...skipping 25 matching lines...) Expand all
798 } 794 }
799 795
800 m_progressEventThrottle.dispatchEventAndLoadEnd(XMLHttpRequestProgressEvent: :create(eventNames().abortEvent)); 796 m_progressEventThrottle.dispatchEventAndLoadEnd(XMLHttpRequestProgressEvent: :create(eventNames().abortEvent));
801 if (!m_uploadComplete) { 797 if (!m_uploadComplete) {
802 m_uploadComplete = true; 798 m_uploadComplete = true;
803 if (m_upload && m_uploadEventsAllowed) 799 if (m_upload && m_uploadEventsAllowed)
804 m_upload->dispatchEventAndLoadEnd(XMLHttpRequestProgressEvent::creat e(eventNames().abortEvent)); 800 m_upload->dispatchEventAndLoadEnd(XMLHttpRequestProgressEvent::creat e(eventNames().abortEvent));
805 } 801 }
806 } 802 }
807 803
808 void XMLHttpRequest::internalAbort(DropProtection async) 804 void XMLHttpRequest::internalAbort()
809 { 805 {
810 bool hadLoader = m_loader; 806 bool hadLoader = m_loader;
811 807
812 m_error = true; 808 m_error = true;
813 809
814 // FIXME: when we add the support for multi-part XHR, we will have to think be careful with this initialization. 810 // FIXME: when we add the support for multi-part XHR, we will have to think be careful with this initialization.
815 m_receivedLength = 0; 811 m_receivedLength = 0;
816 812
817 if (hadLoader) { 813 if (hadLoader) {
818 m_loader->cancel(); 814 m_loader->cancel();
819 m_loader = 0; 815 m_loader = 0;
820 } 816 }
821 817
822 m_decoder = 0; 818 m_decoder = 0;
823 819
824 InspectorInstrumentation::didFailXHRLoading(scriptExecutionContext(), this); 820 InspectorInstrumentation::didFailXHRLoading(scriptExecutionContext(), this);
825 821
826 if (hadLoader) { 822 if (hadLoader)
827 if (async == DropProtectionAsync) 823 dropProtectionSoon();
828 dropProtectionSoon();
829 else
830 dropProtection();
831 }
832 } 824 }
833 825
834 void XMLHttpRequest::clearResponse() 826 void XMLHttpRequest::clearResponse()
835 { 827 {
836 m_response = ResourceResponse(); 828 m_response = ResourceResponse();
837 clearResponseBuffers(); 829 clearResponseBuffers();
838 } 830 }
839 831
840 void XMLHttpRequest::clearResponseBuffers() 832 void XMLHttpRequest::clearResponseBuffers()
841 { 833 {
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 m_progressEventThrottle.suspend(); 1215 m_progressEventThrottle.suspend();
1224 } 1216 }
1225 1217
1226 void XMLHttpRequest::resume() 1218 void XMLHttpRequest::resume()
1227 { 1219 {
1228 m_progressEventThrottle.resume(); 1220 m_progressEventThrottle.resume();
1229 } 1221 }
1230 1222
1231 void XMLHttpRequest::stop() 1223 void XMLHttpRequest::stop()
1232 { 1224 {
1233 internalAbort(DropProtectionAsync); 1225 internalAbort();
1234 } 1226 }
1235 1227
1236 void XMLHttpRequest::contextDestroyed() 1228 void XMLHttpRequest::contextDestroyed()
1237 { 1229 {
1238 ASSERT(!m_loader); 1230 ASSERT(!m_loader);
1239 ActiveDOMObject::contextDestroyed(); 1231 ActiveDOMObject::contextDestroyed();
1240 } 1232 }
1241 1233
1242 const AtomicString& XMLHttpRequest::interfaceName() const 1234 const AtomicString& XMLHttpRequest::interfaceName() const
1243 { 1235 {
1244 return eventNames().interfaceForXMLHttpRequest; 1236 return eventNames().interfaceForXMLHttpRequest;
1245 } 1237 }
1246 1238
1247 ScriptExecutionContext* XMLHttpRequest::scriptExecutionContext() const 1239 ScriptExecutionContext* XMLHttpRequest::scriptExecutionContext() const
1248 { 1240 {
1249 return ActiveDOMObject::scriptExecutionContext(); 1241 return ActiveDOMObject::scriptExecutionContext();
1250 } 1242 }
1251 1243
1252 EventTargetData* XMLHttpRequest::eventTargetData() 1244 EventTargetData* XMLHttpRequest::eventTargetData()
1253 { 1245 {
1254 return &m_eventTargetData; 1246 return &m_eventTargetData;
1255 } 1247 }
1256 1248
1257 EventTargetData* XMLHttpRequest::ensureEventTargetData() 1249 EventTargetData* XMLHttpRequest::ensureEventTargetData()
1258 { 1250 {
1259 return &m_eventTargetData; 1251 return &m_eventTargetData;
1260 } 1252 }
1261 1253
1262 } // namespace WebCore 1254 } // namespace WebCore
OLDNEW
« no previous file with comments | « trunk/Source/core/xml/XMLHttpRequest.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698