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.
5 #ifndef WebServiceWorkerResponse_h
6 #define WebServiceWorkerResponse_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"
16 #include "wtf/Forward.h"
17 #include "wtf/HashMap.h"
18 #include "wtf/text/StringHash.h"
25 class WebHTTPHeaderVisitor;
26 class WebServiceWorkerResponsePrivate;
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 {
33 ~WebServiceWorkerResponse() { reset(); }
34 WebServiceWorkerResponse();
35 WebServiceWorkerResponse(const WebServiceWorkerResponse& other) { assign(other); }
36 WebServiceWorkerResponse& operator=(const WebServiceWorkerResponse& other)
43 void assign(const WebServiceWorkerResponse&);
45 void setURL(const WebURL&);
48 void setStatus(unsigned short);
49 unsigned short status() const;
51 void setStatusText(const WebString&);
52 WebString statusText() const;
54 void setResponseType(WebServiceWorkerResponseType);
55 WebServiceWorkerResponseType responseType() const;
57 void setHeader(const WebString& key, const WebString& value);
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);
63 WebVector<WebString> getHeaderKeys() const;
64 WebString getHeader(const WebString& key) const;
65 void visitHTTPHeaderFields(WebHTTPHeaderVisitor*) const;
67 void setBlob(const WebString& uuid, uint64_t size);
68 WebString blobUUID() const;
69 uint64_t blobSize() const;
72 const HTTPHeaderMap& headers() const;
74 void setBlobDataHandle(PassRefPtr<BlobDataHandle>);
75 PassRefPtr<BlobDataHandle> blobDataHandle() const;
79 WebPrivatePtr<WebServiceWorkerResponsePrivate> m_private;
84 #endif // WebServiceWorkerResponse_h