• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/WebString.h"
11 #include "public/platform/WebVector.h"
12 
13 #if INSIDE_BLINK
14 #include "wtf/Forward.h"
15 #include "wtf/HashMap.h"
16 #include "wtf/text/StringHash.h"
17 
18 namespace WebCore {
19 class BlobDataHandle;
20 }
21 #endif
22 
23 namespace blink {
24 
25 class WebServiceWorkerResponsePrivate;
26 
27 // Represents a response to a fetch operation. ServiceWorker uses this to
28 // respond to a FetchEvent dispatched by the browser. The plan is for the Cache
29 // and fetch() API to also use it.
30 class BLINK_PLATFORM_EXPORT WebServiceWorkerResponse {
31 public:
~WebServiceWorkerResponse()32     ~WebServiceWorkerResponse() { reset(); }
33     WebServiceWorkerResponse();
34     WebServiceWorkerResponse& operator=(const WebServiceWorkerResponse& other)
35     {
36         assign(other);
37         return *this;
38     }
39 
40     void reset();
41     void assign(const WebServiceWorkerResponse&);
42 
43     void setStatus(unsigned short);
44     unsigned short status() const;
45 
46     void setStatusText(const WebString&);
47     WebString statusText() const;
48 
49     void setHeader(const WebString& key, const WebString& value);
50     WebVector<WebString> getHeaderKeys() const;
51     WebString getHeader(const WebString& key) const;
52 
53     WebString blobUUID() const;
54 
55 #if INSIDE_BLINK
56     void setHeaders(const HashMap<String, String>&);
57     const HashMap<String, String>& headers() const;
58 
59     void setBlobDataHandle(PassRefPtr<WebCore::BlobDataHandle>);
60     PassRefPtr<WebCore::BlobDataHandle> blobDataHandle() const;
61 #endif
62 
63 private:
64     WebPrivatePtr<WebServiceWorkerResponsePrivate> m_private;
65 };
66 
67 } // namespace blink
68 
69 #endif // WebServiceWorkerResponse_h
70