| Index: Source/core/xml/XMLHttpRequest.h
|
| diff --git a/Source/core/xml/XMLHttpRequest.h b/Source/core/xml/XMLHttpRequest.h
|
| index 6cd13dc0f5f4985c47ec79d02e8e37a176e920a6..9e20da86ad502b41836ca93a50d77db5463f449f 100644
|
| --- a/Source/core/xml/XMLHttpRequest.h
|
| +++ b/Source/core/xml/XMLHttpRequest.h
|
| @@ -30,7 +30,6 @@
|
| #include "core/loader/ThreadableLoaderClient.h"
|
| #include "core/xml/XMLHttpRequestEventTarget.h"
|
| #include "core/xml/XMLHttpRequestProgressEventThrottle.h"
|
| -#include "platform/AsyncMethodRunner.h"
|
| #include "platform/network/FormData.h"
|
| #include "platform/network/ResourceResponse.h"
|
| #include "platform/weborigin/SecurityOrigin.h"
|
| @@ -57,6 +56,9 @@ class XMLHttpRequest FINAL : public ScriptWrappable, public RefCounted<XMLHttpRe
|
| WTF_MAKE_FAST_ALLOCATED;
|
| REFCOUNTED_EVENT_TARGET(XMLHttpRequest);
|
| public:
|
| + // XMLHttpRequest instances must be used with a wrapper since this class's
|
| + // lifetime management is designed assuming the V8 holds a ref on it while
|
| + // hasPendingActivity() returns true.
|
| static PassRefPtr<XMLHttpRequest> create(ExecutionContext*, PassRefPtr<SecurityOrigin> = 0);
|
| virtual ~XMLHttpRequest();
|
|
|
| @@ -79,12 +81,11 @@ public:
|
| ResponseTypeStream
|
| };
|
|
|
| - enum DropProtection {
|
| - DropProtectionSync,
|
| - DropProtectionAsync,
|
| - };
|
| -
|
| + // ActiveDOMObject implementaions
|
| virtual void contextDestroyed() OVERRIDE;
|
| + // Keep the JavaScript wrapper alive while a request is in progress so that
|
| + // this object (which is a listener for m_loader) is also kept alive.
|
| + virtual bool hasPendingActivity() const OVERRIDE;
|
| virtual void suspend() OVERRIDE;
|
| virtual void resume() OVERRIDE;
|
| virtual void stop() OVERRIDE;
|
| @@ -176,12 +177,13 @@ private:
|
| void changeState(State newState);
|
| void dispatchReadyStateChangeEvent();
|
|
|
| - void dropProtectionSoon();
|
| - void dropProtection();
|
| // Clears variables used only while the resource is being loaded.
|
| void clearVariablesForLoading();
|
| - // Returns false iff reentry happened and a new load is started.
|
| - bool internalAbort(DropProtection = DropProtectionSync);
|
| + // Returns false iff reentry happened and a new load is started. This
|
| + // instance may be destroyed after this method call. If you need do some
|
| + // work later, put a temporary reference on this instance before calling
|
| + // this method
|
| + bool internalAbort();
|
| // Clears variables holding response header and body data.
|
| void clearResponse();
|
| void clearRequest();
|
| @@ -261,7 +263,6 @@ private:
|
|
|
| // An enum corresponding to the allowed string values for the responseType attribute.
|
| ResponseTypeCode m_responseTypeCode;
|
| - AsyncMethodRunner<XMLHttpRequest> m_dropProtectionRunner;
|
| RefPtr<SecurityOrigin> m_securityOrigin;
|
| };
|
|
|
|
|