Remove the Timer parameters from timer callbacks
[WebKit-https.git] / Source / WebCore / page / EventSource.h
index a8b8b41..fac7332 100644 (file)
@@ -1,6 +1,5 @@
 /*
- * Copyright (C) 2009 Ericsson AB
- * All rights reserved.
+ * Copyright (C) 2009, 2012 Ericsson AB. All rights reserved.
  * Copyright (C) 2010 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -35,7 +34,7 @@
 
 #include "ActiveDOMObject.h"
 #include "EventTarget.h"
-#include "KURL.h"
+#include "URL.h"
 #include "ThreadableLoaderClient.h"
 #include "Timer.h"
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-    class MessageEvent;
-    class ResourceResponse;
-    class TextResourceDecoder;
-    class ThreadableLoader;
-
-    class EventSource : public RefCounted<EventSource>, public EventTarget, private ThreadableLoaderClient, public ActiveDOMObject {
-        WTF_MAKE_FAST_ALLOCATED;
-    public:
-        static PassRefPtr<EventSource> create(const String& url, ScriptExecutionContext*, ExceptionCode&);
-        virtual ~EventSource();
-
-        static const unsigned long long defaultReconnectDelay;
-
-        String url() const;
-
-        enum State {
-            CONNECTING = 0,
-            OPEN = 1,
-            CLOSED = 2,
-        };
-
-        State readyState() const;
-
-        DEFINE_ATTRIBUTE_EVENT_LISTENER(open);
-        DEFINE_ATTRIBUTE_EVENT_LISTENER(message);
-        DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
-
-        void close();
-
-        using RefCounted<EventSource>::ref;
-        using RefCounted<EventSource>::deref;
-
-        virtual EventSource* toEventSource() { return this; }
-        virtual ScriptExecutionContext* scriptExecutionContext() const;
-
-        virtual void stop();
-
-    private:
-        EventSource(const KURL&, ScriptExecutionContext*);
-
-        virtual void refEventTarget() { ref(); }
-        virtual void derefEventTarget() { deref(); }
-        virtual EventTargetData* eventTargetData();
-        virtual EventTargetData* ensureEventTargetData();
-
-        virtual void didReceiveResponse(unsigned long, const ResourceResponse&);
-        virtual void didReceiveData(const char*, int);
-        virtual void didFinishLoading(unsigned long, double);
-        virtual void didFail(const ResourceError&);
-        virtual void didFailRedirectCheck();
-
-        void connect();
-        void networkRequestEnded();
-        void scheduleReconnect();
-        void reconnectTimerFired(Timer<EventSource>*);
-        void parseEventStream();
-        void parseEventStreamLine(unsigned int pos, int fieldLength, int lineLength);
-        PassRefPtr<MessageEvent> createMessageEvent();
-
-        KURL m_url;
-        State m_state;
-
-        RefPtr<TextResourceDecoder> m_decoder;
-        RefPtr<ThreadableLoader> m_loader;
-        Timer<EventSource> m_reconnectTimer;
-        Vector<UChar> m_receiveBuf;
-        bool m_discardTrailingNewline;
-        bool m_requestInFlight;
-
-        String m_eventName;
-        Vector<UChar> m_data;
-        String m_lastEventId;
-        unsigned long long m_reconnectDelay;
-        String m_origin;
-        
-        EventTargetData m_eventTargetData;
-    };
+class Dictionary;
+class MessageEvent;
+class ResourceResponse;
+class TextResourceDecoder;
+class ThreadableLoader;
+
+class EventSource final : public RefCounted<EventSource>, public EventTargetWithInlineData, private ThreadableLoaderClient, public ActiveDOMObject {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    static PassRefPtr<EventSource> create(ScriptExecutionContext&, const String& url, const Dictionary&, ExceptionCode&);
+    virtual ~EventSource();
+
+    static const unsigned long long defaultReconnectDelay;
+
+    String url() const;
+    bool withCredentials() const;
+
+    typedef short State;
+    static const State CONNECTING = 0;
+    static const State OPEN = 1;
+    static const State CLOSED = 2;
+
+    State readyState() const;
+
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(open);
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(message);
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
+
+    void close();
+
+    using RefCounted<EventSource>::ref;
+    using RefCounted<EventSource>::deref;
+
+    virtual EventTargetInterface eventTargetInterface() const override { return EventSourceEventTargetInterfaceType; }
+    virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
+
+private:
+    EventSource(ScriptExecutionContext&, const URL&, const Dictionary&);
+
+    virtual void refEventTarget() override { ref(); }
+    virtual void derefEventTarget() override { deref(); }
+
+    virtual void didReceiveResponse(unsigned long, const ResourceResponse&) override;
+    virtual void didReceiveData(const char*, int) override;
+    virtual void didFinishLoading(unsigned long, double) override;
+    virtual void didFail(const ResourceError&) override;
+    virtual void didFailAccessControlCheck(const ResourceError&) override;
+    virtual void didFailRedirectCheck() override;
+
+    virtual void stop() override;
+
+    void connect();
+    void networkRequestEnded();
+    void scheduleInitialConnect();
+    void scheduleReconnect();
+    void connectTimerFired();
+    void abortConnectionAttempt();
+    void parseEventStream();
+    void parseEventStreamLine(unsigned pos, int fieldLength, int lineLength);
+    PassRefPtr<MessageEvent> createMessageEvent();
+
+    URL m_url;
+    bool m_withCredentials;
+    State m_state;
+
+    RefPtr<TextResourceDecoder> m_decoder;
+    RefPtr<ThreadableLoader> m_loader;
+    Timer m_connectTimer;
+    Vector<UChar> m_receiveBuf;
+    bool m_discardTrailingNewline;
+    bool m_requestInFlight;
+
+    String m_eventName;
+    Vector<UChar> m_data;
+    String m_currentlyParsedEventId;
+    String m_lastEventId;
+    unsigned long long m_reconnectDelay;
+    String m_eventStreamOrigin;
+};
 
 } // namespace WebCore