Home | History | Annotate | Download | only in exported
      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 "public/platform/WebServiceWorkerRequest.h"
      7 
      8 #include "platform/blob/BlobData.h"
      9 #include "platform/weborigin/KURL.h"
     10 #include "public/platform/WebHTTPHeaderVisitor.h"
     11 
     12 namespace blink {
     13 
     14 class WebServiceWorkerRequestPrivate : public RefCounted<WebServiceWorkerRequestPrivate> {
     15 public:
     16     WebServiceWorkerRequestPrivate()
     17         : m_isReload(false) { }
     18     WebURL m_url;
     19     WebString m_method;
     20     HTTPHeaderMap m_headers;
     21     RefPtr<BlobDataHandle> blobDataHandle;
     22     Referrer m_referrer;
     23     bool m_isReload;
     24 };
     25 
     26 WebServiceWorkerRequest::WebServiceWorkerRequest()
     27     : m_private(adoptRef(new WebServiceWorkerRequestPrivate))
     28 {
     29 }
     30 
     31 void WebServiceWorkerRequest::reset()
     32 {
     33     m_private.reset();
     34 }
     35 
     36 void WebServiceWorkerRequest::assign(const WebServiceWorkerRequest& other)
     37 {
     38     m_private = other.m_private;
     39 }
     40 
     41 void WebServiceWorkerRequest::setURL(const WebURL& url)
     42 {
     43     m_private->m_url = url;
     44 }
     45 
     46 WebURL WebServiceWorkerRequest::url() const
     47 {
     48     return m_private->m_url;
     49 }
     50 
     51 void WebServiceWorkerRequest::setMethod(const WebString& method)
     52 {
     53     m_private->m_method = method;
     54 }
     55 
     56 WebString WebServiceWorkerRequest::method() const
     57 {
     58     return m_private->m_method;
     59 }
     60 
     61 void WebServiceWorkerRequest::setHeader(const WebString& key, const WebString& value)
     62 {
     63     if (equalIgnoringCase(key, "referer"))
     64         return;
     65     m_private->m_headers.set(key, value);
     66 }
     67 
     68 void WebServiceWorkerRequest::appendHeader(const WebString& key, const WebString& value)
     69 {
     70     if (equalIgnoringCase(key, "referer"))
     71         return;
     72     HTTPHeaderMap::AddResult result = m_private->m_headers.add(key, value);
     73     if (!result.isNewEntry)
     74         result.storedValue->value = result.storedValue->value + ", " + String(value);
     75 }
     76 
     77 void WebServiceWorkerRequest::visitHTTPHeaderFields(WebHTTPHeaderVisitor* headerVisitor) const
     78 {
     79     for (HTTPHeaderMap::const_iterator i = m_private->m_headers.begin(), end = m_private->m_headers.end(); i != end; ++i)
     80         headerVisitor->visitHeader(i->key, i->value);
     81 }
     82 
     83 const HTTPHeaderMap& WebServiceWorkerRequest::headers() const
     84 {
     85     return m_private->m_headers;
     86 }
     87 
     88 void WebServiceWorkerRequest::setBlob(const WebString& uuid, long long size)
     89 {
     90     m_private->blobDataHandle = BlobDataHandle::create(uuid, String(), size);
     91 }
     92 
     93 PassRefPtr<BlobDataHandle> WebServiceWorkerRequest::blobDataHandle() const
     94 {
     95     return m_private->blobDataHandle;
     96 }
     97 
     98 void WebServiceWorkerRequest::setReferrer(const WebString& referrer, WebReferrerPolicy referrerPolicy)
     99 {
    100     m_private->m_referrer = Referrer(referrer, static_cast<ReferrerPolicy>(referrerPolicy));
    101 }
    102 
    103 WebURL WebServiceWorkerRequest::referrerUrl() const
    104 {
    105     return KURL(ParsedURLString, m_private->m_referrer.referrer);
    106 }
    107 
    108 WebReferrerPolicy WebServiceWorkerRequest::referrerPolicy() const
    109 {
    110     return static_cast<WebReferrerPolicy>(m_private->m_referrer.referrerPolicy);
    111 }
    112 
    113 const Referrer& WebServiceWorkerRequest::referrer() const
    114 {
    115     return m_private->m_referrer;
    116 }
    117 
    118 void WebServiceWorkerRequest::setIsReload(bool isReload)
    119 {
    120     m_private->m_isReload = isReload;
    121 }
    122 
    123 bool WebServiceWorkerRequest::isReload() const
    124 {
    125     return m_private->m_isReload;
    126 }
    127 
    128 } // namespace blink
    129