• Home
  • History
  • Annotate
  • 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 "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:
WebServiceWorkerRequestPrivate()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 
WebServiceWorkerRequest()26 WebServiceWorkerRequest::WebServiceWorkerRequest()
27     : m_private(adoptRef(new WebServiceWorkerRequestPrivate))
28 {
29 }
30 
reset()31 void WebServiceWorkerRequest::reset()
32 {
33     m_private.reset();
34 }
35 
assign(const WebServiceWorkerRequest & other)36 void WebServiceWorkerRequest::assign(const WebServiceWorkerRequest& other)
37 {
38     m_private = other.m_private;
39 }
40 
setURL(const WebURL & url)41 void WebServiceWorkerRequest::setURL(const WebURL& url)
42 {
43     m_private->m_url = url;
44 }
45 
url() const46 WebURL WebServiceWorkerRequest::url() const
47 {
48     return m_private->m_url;
49 }
50 
setMethod(const WebString & method)51 void WebServiceWorkerRequest::setMethod(const WebString& method)
52 {
53     m_private->m_method = method;
54 }
55 
method() const56 WebString WebServiceWorkerRequest::method() const
57 {
58     return m_private->m_method;
59 }
60 
setHeader(const WebString & key,const WebString & value)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 
appendHeader(const WebString & key,const WebString & value)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 
visitHTTPHeaderFields(WebHTTPHeaderVisitor * headerVisitor) const77 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 
headers() const83 const HTTPHeaderMap& WebServiceWorkerRequest::headers() const
84 {
85     return m_private->m_headers;
86 }
87 
setBlob(const WebString & uuid,long long size)88 void WebServiceWorkerRequest::setBlob(const WebString& uuid, long long size)
89 {
90     m_private->blobDataHandle = BlobDataHandle::create(uuid, String(), size);
91 }
92 
blobDataHandle() const93 PassRefPtr<BlobDataHandle> WebServiceWorkerRequest::blobDataHandle() const
94 {
95     return m_private->blobDataHandle;
96 }
97 
setReferrer(const WebString & referrer,WebReferrerPolicy referrerPolicy)98 void WebServiceWorkerRequest::setReferrer(const WebString& referrer, WebReferrerPolicy referrerPolicy)
99 {
100     m_private->m_referrer = Referrer(referrer, static_cast<ReferrerPolicy>(referrerPolicy));
101 }
102 
referrerUrl() const103 WebURL WebServiceWorkerRequest::referrerUrl() const
104 {
105     return KURL(ParsedURLString, m_private->m_referrer.referrer);
106 }
107 
referrerPolicy() const108 WebReferrerPolicy WebServiceWorkerRequest::referrerPolicy() const
109 {
110     return static_cast<WebReferrerPolicy>(m_private->m_referrer.referrerPolicy);
111 }
112 
referrer() const113 const Referrer& WebServiceWorkerRequest::referrer() const
114 {
115     return m_private->m_referrer;
116 }
117 
setIsReload(bool isReload)118 void WebServiceWorkerRequest::setIsReload(bool isReload)
119 {
120     m_private->m_isReload = isReload;
121 }
122 
isReload() const123 bool WebServiceWorkerRequest::isReload() const
124 {
125     return m_private->m_isReload;
126 }
127 
128 } // namespace blink
129