Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / public / platform / WebServiceWorkerResponse.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef WebServiceWorkerResponse_h
6 #define WebServiceWorkerResponse_h
7
8 #include "WebCommon.h"
9 #include "public/platform/WebPrivatePtr.h"
10 #include "public/platform/WebServiceWorkerResponseType.h"
11 #include "public/platform/WebString.h"
12 #include "public/platform/WebURL.h"
13 #include "public/platform/WebVector.h"
14
15 #if INSIDE_BLINK
16 #include "wtf/Forward.h"
17 #include "wtf/HashMap.h"
18 #include "wtf/text/StringHash.h"
19 #endif
20
21 namespace blink {
22
23 class BlobDataHandle;
24 class HTTPHeaderMap;
25 class WebHTTPHeaderVisitor;
26 class WebServiceWorkerResponsePrivate;
27
28 // Represents a response to a fetch operation. ServiceWorker uses this to
29 // respond to a FetchEvent dispatched by the browser. The plan is for the Cache
30 // and fetch() API to also use it.
31 class BLINK_PLATFORM_EXPORT WebServiceWorkerResponse {
32 public:
33     ~WebServiceWorkerResponse() { reset(); }
34     WebServiceWorkerResponse();
35     WebServiceWorkerResponse(const WebServiceWorkerResponse& other) { assign(other); }
36     WebServiceWorkerResponse& operator=(const WebServiceWorkerResponse& other)
37     {
38         assign(other);
39         return *this;
40     }
41
42     void reset();
43     void assign(const WebServiceWorkerResponse&);
44
45     void setURL(const WebURL&);
46     WebURL url() const;
47
48     void setStatus(unsigned short);
49     unsigned short status() const;
50
51     void setStatusText(const WebString&);
52     WebString statusText() const;
53
54     void setResponseType(WebServiceWorkerResponseType);
55     WebServiceWorkerResponseType responseType() const;
56
57     void setHeader(const WebString& key, const WebString& value);
58
59     // If the key already exists, appends the value to the same key (comma
60     // delimited) else creates a new entry.
61     void appendHeader(const WebString& key, const WebString& value);
62
63     WebVector<WebString> getHeaderKeys() const;
64     WebString getHeader(const WebString& key) const;
65     void visitHTTPHeaderFields(WebHTTPHeaderVisitor*) const;
66
67     void setBlob(const WebString& uuid, uint64_t size);
68     WebString blobUUID() const;
69     uint64_t blobSize() const;
70
71 #if INSIDE_BLINK
72     const HTTPHeaderMap& headers() const;
73
74     void setBlobDataHandle(PassRefPtr<BlobDataHandle>);
75     PassRefPtr<BlobDataHandle> blobDataHandle() const;
76 #endif
77
78 private:
79     WebPrivatePtr<WebServiceWorkerResponsePrivate> m_private;
80 };
81
82 } // namespace blink
83
84 #endif // WebServiceWorkerResponse_h