1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file. 4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef WebServiceWorkerResponse_h 6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define WebServiceWorkerResponse_h 7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 8d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "WebCommon.h" 9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebPrivatePtr.h" 10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebString.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "public/platform/WebURL.h" 12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "public/platform/WebVector.h" 13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 14d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#if INSIDE_BLINK 15d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "wtf/Forward.h" 16d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "wtf/HashMap.h" 17d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "wtf/text/StringHash.h" 18f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#endif 19d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)namespace blink { 21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 22e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class BlobDataHandle; 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass HTTPHeaderMap; 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass WebHTTPHeaderVisitor; 25d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)class WebServiceWorkerResponsePrivate; 26d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Represents a response to a fetch operation. ServiceWorker uses this to 28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// respond to a FetchEvent dispatched by the browser. The plan is for the Cache 29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// and fetch() API to also use it. 30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class BLINK_PLATFORM_EXPORT WebServiceWorkerResponse { 31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public: 32d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) ~WebServiceWorkerResponse() { reset(); } 33d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WebServiceWorkerResponse(); 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebServiceWorkerResponse(const WebServiceWorkerResponse& other) { assign(other); } 35d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WebServiceWorkerResponse& operator=(const WebServiceWorkerResponse& other) 36d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) { 37d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) assign(other); 38d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) return *this; 39d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) } 40d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 41d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void reset(); 42d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void assign(const WebServiceWorkerResponse&); 43d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setURL(const WebURL&); 45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebURL url() const; 46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 47d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void setStatus(unsigned short); 48d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) unsigned short status() const; 49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setStatusText(const WebString&); 51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebString statusText() const; 52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 53d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) void setHeader(const WebString& key, const WebString& value); 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // If the key already exists, appends the value to the same key (comma 567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // delimited) else creates a new entry. 577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void appendHeader(const WebString& key, const WebString& value); 587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 59d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WebVector<WebString> getHeaderKeys() const; 60d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WebString getHeader(const WebString& key) const; 617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void visitHTTPHeaderFields(WebHTTPHeaderVisitor*) const; 62d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 63f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebString blobUUID() const; 64f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 65d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#if INSIDE_BLINK 667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci const HTTPHeaderMap& headers() const; 67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 68e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) void setBlobDataHandle(PassRefPtr<BlobDataHandle>); 69e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) PassRefPtr<BlobDataHandle> blobDataHandle() const; 70f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#endif 71d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 72d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private: 73d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WebPrivatePtr<WebServiceWorkerResponsePrivate> m_private; 74d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}; 75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 76d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} // namespace blink 77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // WebServiceWorkerResponse_h 79