File: Request.h

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (84 lines) | stat: -rw-r--r-- 2,864 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef Request_h
#define Request_h

#include "bindings/core/v8/Dictionary.h"
#include "bindings/core/v8/ScriptWrappable.h"
#include "bindings/modules/v8/UnionTypesModules.h"
#include "modules/fetch/Body.h"
#include "modules/fetch/FetchRequestData.h"
#include "modules/fetch/Headers.h"
#include "platform/heap/Handle.h"
#include "platform/weborigin/KURL.h"
#include "public/platform/WebURLRequest.h"
#include "wtf/RefPtr.h"
#include "wtf/text/WTFString.h"

namespace blink {

class BodyStreamBuffer;
class RequestInit;
class WebServiceWorkerRequest;

typedef RequestOrUSVString RequestInfo;

class Request final : public Body {
    DEFINE_WRAPPERTYPEINFO();
public:
    ~Request() override { }

    // From Request.idl:
    static Request* create(ExecutionContext*, const RequestInfo&, const Dictionary&, ExceptionState&);

    static Request* create(ExecutionContext*, const String&, ExceptionState&);
    static Request* create(ExecutionContext*, const String&, const Dictionary&, ExceptionState&);
    static Request* create(ExecutionContext*, Request*, ExceptionState&);
    static Request* create(ExecutionContext*, Request*, const Dictionary&, ExceptionState&);
    static Request* create(ExecutionContext*, FetchRequestData*);
    static Request* create(ExecutionContext*, const WebServiceWorkerRequest&);
    // The 'FetchRequestData' object is shared between requests, as it is
    // immutable to the user after Request creation. Headers are copied.
    static Request* create(const Request&);

    const FetchRequestData* request() { return m_request; }

    // From Request.idl:
    String method() const;
    KURL url() const;
    Headers* headers() const { return m_headers; }
    String referrer() const;
    String mode() const;
    String credentials() const;

    // From Request.idl:
    Request* clone(ExceptionState&) const;

    void populateWebServiceWorkerRequest(WebServiceWorkerRequest&) const;

    void setBodyBlobHandle(PassRefPtr<BlobDataHandle>);
    bool hasBody() const { return m_request->blobDataHandle(); }

    void trace(Visitor*) override;

private:
    explicit Request(const Request&);
    Request(ExecutionContext*, FetchRequestData*);
    Request(ExecutionContext*, const WebServiceWorkerRequest&);

    static Request* createRequestWithRequestOrString(ExecutionContext*, Request*, const String&, const RequestInit&, ExceptionState&);
    void clearHeaderList();

    PassRefPtr<BlobDataHandle> blobDataHandle() const override;
    BodyStreamBuffer* buffer() const override;
    String contentTypeForBuffer() const override;

    const Member<FetchRequestData> m_request;
    const Member<Headers> m_headers;
};

} // namespace blink

#endif // Request_h