1f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)// found in the LICENSE file. 4f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 5f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#ifndef WebServiceWorkerRequest_h 6f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#define WebServiceWorkerRequest_h 7f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 8f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "WebCommon.h" 9f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "public/platform/WebPrivatePtr.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "public/platform/WebReferrerPolicy.h" 11f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "public/platform/WebString.h" 12f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "public/platform/WebURL.h" 13f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 14f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#if INSIDE_BLINK 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/network/HTTPHeaderMap.h" 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/weborigin/Referrer.h" 17f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "wtf/Forward.h" 18f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "wtf/text/StringHash.h" 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include <utility> 20f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#endif 21f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 22f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)namespace blink { 23f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 249e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)class BlobDataHandle; 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass WebHTTPHeaderVisitor; 26f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)class WebServiceWorkerRequestPrivate; 27f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Represents a request for a web resource. 29f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)class BLINK_PLATFORM_EXPORT WebServiceWorkerRequest { 30f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)public: 31f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) ~WebServiceWorkerRequest() { reset(); } 32f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebServiceWorkerRequest(); 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebServiceWorkerRequest(const WebServiceWorkerRequest& other) { assign(other); } 34f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebServiceWorkerRequest& operator=(const WebServiceWorkerRequest& other) 35f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) { 36f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) assign(other); 37f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) return *this; 38f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) } 39f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 40f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) void reset(); 41f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) void assign(const WebServiceWorkerRequest&); 42f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 43f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) void setURL(const WebURL&); 44f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebURL url() const; 45f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 46f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) void setMethod(const WebString&); 47f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebString method() const; 48f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 49f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) void setHeader(const WebString& key, const WebString& value); 50f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // If the key already exists, the value is appended to the existing value 527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // with a comma delimiter between them. 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void appendHeader(const WebString& key, const WebString& value); 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void visitHTTPHeaderFields(WebHTTPHeaderVisitor*) const; 567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 579e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) void setBlob(const WebString& uuid, long long size); 589e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 59197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setReferrer(const WebString&, WebReferrerPolicy); 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebURL referrerUrl() const; 617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WebReferrerPolicy referrerPolicy() const; 62197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 63197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setIsReload(bool); 64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool isReload() const; 65197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 66f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#if INSIDE_BLINK 67e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) const HTTPHeaderMap& headers() const; 689e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) PassRefPtr<BlobDataHandle> blobDataHandle() const; 69e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) const Referrer& referrer() const; 70f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#endif 71f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 72f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)private: 73f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebPrivatePtr<WebServiceWorkerRequestPrivate> m_private; 74f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)}; 75f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 76f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} // namespace blink 77f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 78f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#endif // WebServiceWorkerRequest_h 79