• 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 #include "config.h"
6 #include "Response.h"
7 
8 #include "bindings/v8/Dictionary.h"
9 #include "core/fileapi/Blob.h"
10 #include "modules/serviceworkers/ResponseInit.h"
11 #include "platform/NotImplemented.h"
12 #include "public/platform/WebServiceWorkerResponse.h"
13 
14 namespace WebCore {
15 
create(Blob * body,const Dictionary & responseInit)16 PassRefPtr<Response> Response::create(Blob* body, const Dictionary& responseInit)
17 {
18     RefPtr<BlobDataHandle> blobDataHandle = body ? body->blobDataHandle() : nullptr;
19 
20     // FIXME: Maybe append or override content-length and content-type headers using the blob. The spec will clarify what to do:
21     // https://github.com/slightlyoff/ServiceWorker/issues/192
22     return adoptRef(new Response(blobDataHandle.release(), ResponseInit(responseInit)));
23 }
24 
headers() const25 PassRefPtr<HeaderMap> Response::headers() const
26 {
27     // FIXME: Implement. Spec will eventually whitelist allowable headers.
28     return m_headers;
29 }
30 
populateWebServiceWorkerResponse(blink::WebServiceWorkerResponse & response)31 void Response::populateWebServiceWorkerResponse(blink::WebServiceWorkerResponse& response)
32 {
33     response.setStatus(status());
34     response.setStatusText(statusText());
35     response.setHeaders(m_headers->headerMap());
36     response.setBlobDataHandle(m_blobDataHandle);
37 }
38 
Response(PassRefPtr<BlobDataHandle> blobDataHandle,const ResponseInit & responseInit)39 Response::Response(PassRefPtr<BlobDataHandle> blobDataHandle, const ResponseInit& responseInit)
40     : m_status(responseInit.status)
41     , m_statusText(responseInit.statusText)
42     , m_headers(responseInit.headers)
43     , m_blobDataHandle(blobDataHandle)
44 {
45     ScriptWrappable::init(this);
46 
47     if (!m_headers)
48         m_headers = HeaderMap::create();
49 }
50 
51 } // namespace WebCore
52