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 18namespace WebCore { 19class BlobDataHandle; 20} 21#endif 22 23namespace blink { 24 25class 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. 30class BLINK_PLATFORM_EXPORT WebServiceWorkerResponse { 31public: 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 63private: 64 WebPrivatePtr<WebServiceWorkerResponsePrivate> m_private; 65}; 66 67} // namespace blink 68 69#endif // WebServiceWorkerResponse_h 70