Move URL from WebCore to WTF
[WebKit-https.git] / Source / WebCore / workers / WorkerScriptLoader.h
index 9a5d593..04a41c2 100644 (file)
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *
  */
 
-#ifndef WorkerScriptLoader_h
-#define WorkerScriptLoader_h
-
-#if ENABLE(WORKERS)
+#pragma once
 
-#include "KURL.h"
+#include "ContentSecurityPolicyResponseHeaders.h"
+#include "FetchOptions.h"
+#include "ResourceError.h"
 #include "ResourceRequest.h"
 #include "ThreadableLoader.h"
 #include "ThreadableLoaderClient.h"
-
-#include <wtf/FastAllocBase.h>
-#include <wtf/PassRefPtr.h>
+#include <memory>
+#include <wtf/FastMalloc.h>
 #include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
+#include <wtf/URL.h>
 #include <wtf/text/StringBuilder.h>
 
 namespace WebCore {
 
-    class ResourceRequest;
-    class ResourceResponse;
-    class ScriptExecutionContext;
-    class TextResourceDecoder;
-    class WorkerScriptLoaderClient;
-
-    class WorkerScriptLoader : public RefCounted<WorkerScriptLoader>, public ThreadableLoaderClient {
-        WTF_MAKE_FAST_ALLOCATED;
-    public:
-        static PassRefPtr<WorkerScriptLoader> create()
-        {
-            return adoptRef(new WorkerScriptLoader());
-        }
-
-        void loadSynchronously(ScriptExecutionContext*, const KURL&, CrossOriginRequestPolicy);
-        void loadAsynchronously(ScriptExecutionContext*, const KURL&, CrossOriginRequestPolicy, WorkerScriptLoaderClient*);
-
-        void notifyError();
-
-        String script();
-        const KURL& url() const { return m_url; }
-        const KURL& responseURL() const;
-        bool failed() const { return m_failed; }
-        unsigned long identifier() const { return m_identifier; }
-
-        virtual void didReceiveResponse(unsigned long /*identifier*/, const ResourceResponse&) OVERRIDE;
-        virtual void didReceiveData(const char* data, int dataLength) OVERRIDE;
-        virtual void didFinishLoading(unsigned long identifier, double) OVERRIDE;
-        virtual void didFail(const ResourceError&) OVERRIDE;
-        virtual void didFailRedirectCheck() OVERRIDE;
-
-#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
-        void setTargetType(ResourceRequest::TargetType targetType) { m_targetType = targetType; }
-#endif
-
-    private:
-        friend class WTF::RefCounted<WorkerScriptLoader>;
-
-        WorkerScriptLoader();
-        ~WorkerScriptLoader();
-
-        PassOwnPtr<ResourceRequest> createResourceRequest();
-        void notifyFinished();
-
-        WorkerScriptLoaderClient* m_client;
-        RefPtr<ThreadableLoader> m_threadableLoader;
-        String m_responseEncoding;        
-        RefPtr<TextResourceDecoder> m_decoder;
-        StringBuilder m_script;
-        KURL m_url;
-        KURL m_responseURL;
-        bool m_failed;
-        unsigned long m_identifier;
-        bool m_finishing;
-#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
-        ResourceRequest::TargetType m_targetType;
-#endif
-    };
+class ResourceResponse;
+class ScriptExecutionContext;
+class TextResourceDecoder;
+class WorkerScriptLoaderClient;
+
+class WorkerScriptLoader : public RefCounted<WorkerScriptLoader>, public ThreadableLoaderClient {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    static Ref<WorkerScriptLoader> create()
+    {
+        return adoptRef(*new WorkerScriptLoader);
+    }
+
+    std::optional<Exception> loadSynchronously(ScriptExecutionContext*, const URL&, FetchOptions::Mode, FetchOptions::Cache, ContentSecurityPolicyEnforcement, const String& initiatorIdentifier);
+    void loadAsynchronously(ScriptExecutionContext&, ResourceRequest&&, FetchOptions&&, ContentSecurityPolicyEnforcement, ServiceWorkersMode, WorkerScriptLoaderClient&);
+
+    void notifyError();
+
+    String script();
+    const ContentSecurityPolicyResponseHeaders& contentSecurityPolicy() const { return m_contentSecurityPolicy; }
+    const URL& url() const { return m_url; }
+    const URL& responseURL() const;
+    const String& responseMIMEType() const { return m_responseMIMEType; }
+    bool failed() const { return m_failed; }
+    unsigned long identifier() const { return m_identifier; }
+    const ResourceError& error() const { return m_error; }
+
+    void didReceiveResponse(unsigned long identifier, const ResourceResponse&) override;
+    void didReceiveData(const char* data, int dataLength) override;
+    void didFinishLoading(unsigned long identifier) override;
+    void didFail(const ResourceError&) override;
+
+    void cancel();
+
+private:
+    friend class WTF::RefCounted<WorkerScriptLoader>;
+
+    WorkerScriptLoader();
+    ~WorkerScriptLoader();
+
+    std::unique_ptr<ResourceRequest> createResourceRequest(const String& initiatorIdentifier);
+    void notifyFinished();
+
+    WorkerScriptLoaderClient* m_client { nullptr };
+    RefPtr<ThreadableLoader> m_threadableLoader;
+    String m_responseEncoding;
+    RefPtr<TextResourceDecoder> m_decoder;
+    StringBuilder m_script;
+    URL m_url;
+    URL m_responseURL;
+    String m_responseMIMEType;
+    FetchOptions::Destination m_destination;
+    ContentSecurityPolicyResponseHeaders m_contentSecurityPolicy;
+    unsigned long m_identifier { 0 };
+    bool m_failed { false };
+    bool m_finishing { false };
+    ResourceError m_error;
+};
 
 } // namespace WebCore
-
-#endif // ENABLE(WORKERS)
-
-#endif // WorkerScriptLoader_h