JavaScriptCore:
[WebKit-https.git] / WebCore / platform / TransferJob.h
1 /*
2  * Copyright (C) 2004, 2006 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef TransferJob_H_
27 #define TransferJob_H_
28
29 #include "StringHash.h"
30 #include "Timer.h"
31 #include "TransferJobClient.h" // for PlatformResponse
32 #include <wtf/HashMap.h>
33
34 #ifdef WIN32
35 typedef unsigned long DWORD;
36 typedef unsigned long DWORD_PTR;
37 typedef void* LPVOID;
38 typedef LPVOID HINTERNET;
39 typedef unsigned WPARAM;
40 typedef long LPARAM;
41 typedef struct HWND__* HWND;
42 typedef _W64 long LONG_PTR;
43 typedef LONG_PTR LRESULT;
44 #endif
45
46 #if __APPLE__
47 #ifdef __OBJC__
48 @class KWQResourceLoader;
49 #else
50 class KWQResourceLoader;
51 #endif
52 #endif
53
54 class KURL;
55
56 namespace WebCore {
57
58 class FormData;
59 class TransferJobInternal;
60 class DocLoader;
61
62 class TransferJob {
63 public:
64     TransferJob(TransferJobClient*, const String& method, const KURL&);
65     TransferJob(TransferJobClient*, const String& method, const KURL&, const FormData& postData);
66     ~TransferJob();
67
68     bool start(DocLoader*);
69
70     int error() const;
71     void setError(int);
72     String errorText() const;
73     bool isErrorPage() const;
74     String queryMetaData(const String&) const;
75     void addMetaData(const String& key, const String& value);
76     void addMetaData(const HashMap<String, String>&);
77     void kill();
78
79     KURL url() const;
80     String method() const;
81     FormData postData() const;
82
83 #if __APPLE__
84     void setLoader(KWQResourceLoader*);
85 #endif
86 #if WIN32
87     void fileLoadTimer(Timer<TransferJob>* timer);
88     friend void __stdcall transferJobStatusCallback(HINTERNET, DWORD_PTR, DWORD, LPVOID, DWORD);
89     friend LRESULT __stdcall TransferJobWndProc(HWND, unsigned message, WPARAM, LPARAM);
90 #endif
91
92 #if PLATFORM(GDK)
93     TransferJobInternal * getInternal() { return d;}
94 #endif
95
96     void cancel();
97     
98     TransferJobClient* client() const;
99
100     void receivedResponse(PlatformResponse);
101
102 private:
103     void assembleResponseHeaders() const;
104     void retrieveCharset() const;
105
106     TransferJobInternal* d;
107 };
108
109 }
110
111 #endif // TransferJob_H_