Home | History | Annotate | Download | only in serviceworkers
      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 
     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 
     25 PassRefPtr<HeaderMap> Response::headers() const
     26 {
     27     // FIXME: Implement. Spec will eventually whitelist allowable headers.
     28     return m_headers;
     29 }
     30 
     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 
     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