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