• 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 Response_h
6 #define Response_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/FetchResponseData.h"
12 #include "modules/serviceworkers/Headers.h"
13 #include "platform/blob/BlobData.h"
14 #include "platform/heap/Handle.h"
15 #include "wtf/Forward.h"
16 
17 namespace blink {
18 
19 class Blob;
20 class ExceptionState;
21 class ResponseInit;
22 class WebServiceWorkerResponse;
23 
24 class Response FINAL : public Body {
25     DEFINE_WRAPPERTYPEINFO();
26 public:
~Response()27     virtual ~Response() { }
28     static Response* create(ExecutionContext*, Blob*, const Dictionary&, ExceptionState&);
29     static Response* create(ExecutionContext*, const String&, const Dictionary&, ExceptionState&);
30     static Response* create(ExecutionContext*, const ArrayBuffer*, const Dictionary&, ExceptionState&);
31     static Response* create(ExecutionContext*, const ArrayBufferView*, const Dictionary&, ExceptionState&);
32     static Response* create(ExecutionContext*, Blob*, const ResponseInit&, ExceptionState&);
33     static Response* create(ExecutionContext*, FetchResponseData*);
34     static Response* create(ExecutionContext*, const WebServiceWorkerResponse&);
35     // The 'FetchResponseData' object is shared between responses, as it is
36     // immutable to the user after Response creation. Headers are copied.
37     static Response* create(const Response&);
38 
39     String type() const;
40     String url() const;
41     unsigned short status() const;
42     String statusText() const;
43     Headers* headers() const;
44 
45     Response* clone() const;
46 
47     void populateWebServiceWorkerResponse(WebServiceWorkerResponse&);
48 
49     virtual void trace(Visitor*) OVERRIDE;
50 
51 private:
52     explicit Response(const Response&);
53     explicit Response(ExecutionContext*);
54     Response(ExecutionContext*, FetchResponseData*);
55     Response(ExecutionContext*, const WebServiceWorkerResponse&);
56 
57     virtual PassRefPtr<BlobDataHandle> blobDataHandle() OVERRIDE;
58 
59     const Member<FetchResponseData> m_response;
60     const Member<Headers> m_headers;
61 };
62 
63 } // namespace blink
64 
65 #endif // Response_h
66