• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 Request_h
6 #define Request_h
7 
8 #include "bindings/core/v8/Dictionary.h"
9 #include "bindings/core/v8/ScriptWrappable.h"
10 #include "modules/serviceworkers/Body.h"
11 #include "modules/serviceworkers/FetchRequestData.h"
12 #include "modules/serviceworkers/Headers.h"
13 #include "platform/heap/Handle.h"
14 #include "platform/weborigin/KURL.h"
15 #include "wtf/RefPtr.h"
16 #include "wtf/text/WTFString.h"
17 
18 namespace blink {
19 
20 class RequestInit;
21 struct ResourceLoaderOptions;
22 class ResourceRequest;
23 struct ThreadableLoaderOptions;
24 class WebServiceWorkerRequest;
25 
26 class Request FINAL : public Body {
27     DEFINE_WRAPPERTYPEINFO();
28 public:
~Request()29     virtual ~Request() { }
30     static Request* create(ExecutionContext*, const String&, ExceptionState&);
31     static Request* create(ExecutionContext*, const String&, const Dictionary&, ExceptionState&);
32     static Request* create(ExecutionContext*, Request*, ExceptionState&);
33     static Request* create(ExecutionContext*, Request*, const Dictionary&, ExceptionState&);
34     static Request* create(ExecutionContext*, FetchRequestData*);
35     static Request* create(ExecutionContext*, const WebServiceWorkerRequest&);
36     // The 'FetchRequestData' object is shared between requests, as it is
37     // immutable to the user after Request creation. Headers are copied.
38     static Request* create(const Request&);
39 
request()40     const FetchRequestData* request() { return m_request; }
41 
42     String method() const;
43     String url() const;
headers()44     Headers* headers() const { return m_headers; }
45     String referrer() const;
46     String mode() const;
47     String credentials() const;
48 
49     Request* clone() const;
50 
51     void populateWebServiceWorkerRequest(WebServiceWorkerRequest&);
52 
53     void setBodyBlobHandle(PassRefPtr<BlobDataHandle>);
54 
55     virtual void trace(Visitor*)  OVERRIDE;
56 
57 private:
58     explicit Request(const Request&);
59     Request(ExecutionContext*, FetchRequestData*);
60     Request(ExecutionContext*, const WebServiceWorkerRequest&);
61 
62     static Request* createRequestWithRequestData(ExecutionContext*, FetchRequestData*, const RequestInit&, FetchRequestData::Mode, FetchRequestData::Credentials, ExceptionState&);
63     void clearHeaderList();
64 
65     virtual PassRefPtr<BlobDataHandle> blobDataHandle() OVERRIDE;
66 
67     const Member<FetchRequestData> m_request;
68     const Member<Headers> m_headers;
69 };
70 
71 } // namespace blink
72 
73 #endif // Request_h
74