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