| Index: third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
|
| diff --git a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
|
| index 5e72a29c9afc3c8ba06b9c108e09435ff03696a5..b55fd3f6a8cea1eb785193392a3b829aa9ece13a 100644
|
| --- a/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
|
| +++ b/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequest.cpp
|
| @@ -1094,10 +1094,7 @@ void XMLHttpRequest::abort() {
|
| }
|
|
|
| void XMLHttpRequest::dispose() {
|
| - if (m_loader) {
|
| - m_error = true;
|
| - m_loader->cancel();
|
| - }
|
| + contextDestroyed(getExecutionContext());
|
| }
|
|
|
| void XMLHttpRequest::clearVariablesForLoading() {
|
| @@ -1118,6 +1115,12 @@ void XMLHttpRequest::clearVariablesForLoading() {
|
| }
|
|
|
| bool XMLHttpRequest::internalAbort() {
|
| + // Fast path for repeated internalAbort()s; this
|
| + // will happen if an XHR object is notified of context
|
| + // destruction followed by finalization.
|
| + if (m_error && !m_loader)
|
| + return true;
|
| +
|
| m_error = true;
|
|
|
| if (m_responseDocumentParser && !m_responseDocumentParser->isStopped())
|
| @@ -1807,9 +1810,8 @@ void XMLHttpRequest::resume() {
|
| m_progressEventThrottle->resume();
|
| }
|
|
|
| -void XMLHttpRequest::contextDestroyed(ExecutionContext*) {
|
| - InspectorInstrumentation::didFailXHRLoading(getExecutionContext(), this, this,
|
| - m_method, m_url);
|
| +void XMLHttpRequest::contextDestroyed(ExecutionContext* context) {
|
| + InspectorInstrumentation::detachClientRequest(context, this);
|
| m_progressEventThrottle->stop();
|
| internalAbort();
|
|
|
|
|