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.
6 #include "public/platform/WebServiceWorkerRequest.h"
8 #include "platform/blob/BlobData.h"
9 #include "platform/weborigin/KURL.h"
10 #include "public/platform/WebHTTPHeaderVisitor.h"
11 #include "public/platform/WebURLRequest.h"
15 class WebServiceWorkerRequestPrivate : public RefCounted<WebServiceWorkerRequestPrivate> {
17 WebServiceWorkerRequestPrivate()
18 : m_mode(WebURLRequest::FetchRequestModeNoCORS)
19 , m_credentialsMode(WebURLRequest::FetchCredentialsModeOmit)
20 , m_requestContext(WebURLRequest::RequestContextUnspecified)
21 , m_frameType(WebURLRequest::FrameTypeNone)
27 HTTPHeaderMap m_headers;
28 RefPtr<BlobDataHandle> blobDataHandle;
30 WebURLRequest::FetchRequestMode m_mode;
31 WebURLRequest::FetchCredentialsMode m_credentialsMode;
32 WebURLRequest::RequestContext m_requestContext;
33 WebURLRequest::FrameType m_frameType;
37 WebServiceWorkerRequest::WebServiceWorkerRequest()
38 : m_private(adoptRef(new WebServiceWorkerRequestPrivate))
42 void WebServiceWorkerRequest::reset()
47 void WebServiceWorkerRequest::assign(const WebServiceWorkerRequest& other)
49 m_private = other.m_private;
52 void WebServiceWorkerRequest::setURL(const WebURL& url)
54 m_private->m_url = url;
57 WebURL WebServiceWorkerRequest::url() const
59 return m_private->m_url;
62 void WebServiceWorkerRequest::setMethod(const WebString& method)
64 m_private->m_method = method;
67 WebString WebServiceWorkerRequest::method() const
69 return m_private->m_method;
72 void WebServiceWorkerRequest::setHeader(const WebString& key, const WebString& value)
74 if (equalIgnoringCase(key, "referer"))
76 m_private->m_headers.set(key, value);
79 void WebServiceWorkerRequest::appendHeader(const WebString& key, const WebString& value)
81 if (equalIgnoringCase(key, "referer"))
83 HTTPHeaderMap::AddResult result = m_private->m_headers.add(key, value);
84 if (!result.isNewEntry)
85 result.storedValue->value = result.storedValue->value + ", " + String(value);
88 void WebServiceWorkerRequest::visitHTTPHeaderFields(WebHTTPHeaderVisitor* headerVisitor) const
90 for (HTTPHeaderMap::const_iterator i = m_private->m_headers.begin(), end = m_private->m_headers.end(); i != end; ++i)
91 headerVisitor->visitHeader(i->key, i->value);
94 const HTTPHeaderMap& WebServiceWorkerRequest::headers() const
96 return m_private->m_headers;
99 void WebServiceWorkerRequest::setBlob(const WebString& uuid, long long size)
101 m_private->blobDataHandle = BlobDataHandle::create(uuid, String(), size);
104 PassRefPtr<BlobDataHandle> WebServiceWorkerRequest::blobDataHandle() const
106 return m_private->blobDataHandle;
109 void WebServiceWorkerRequest::setReferrer(const WebString& referrer, WebReferrerPolicy referrerPolicy)
111 m_private->m_referrer = Referrer(referrer, static_cast<ReferrerPolicy>(referrerPolicy));
114 WebURL WebServiceWorkerRequest::referrerUrl() const
116 return KURL(ParsedURLString, m_private->m_referrer.referrer);
119 WebReferrerPolicy WebServiceWorkerRequest::referrerPolicy() const
121 return static_cast<WebReferrerPolicy>(m_private->m_referrer.referrerPolicy);
124 const Referrer& WebServiceWorkerRequest::referrer() const
126 return m_private->m_referrer;
129 void WebServiceWorkerRequest::setMode(WebURLRequest::FetchRequestMode mode)
131 m_private->m_mode = mode;
134 WebURLRequest::FetchRequestMode WebServiceWorkerRequest::mode() const
136 return m_private->m_mode;
139 void WebServiceWorkerRequest::setCredentialsMode(WebURLRequest::FetchCredentialsMode credentialsMode)
141 m_private->m_credentialsMode = credentialsMode;
144 WebURLRequest::FetchCredentialsMode WebServiceWorkerRequest::credentialsMode() const
146 return m_private->m_credentialsMode;
149 void WebServiceWorkerRequest::setRequestContext(WebURLRequest::RequestContext requestContext)
151 m_private->m_requestContext = requestContext;
154 WebURLRequest::RequestContext WebServiceWorkerRequest::requestContext() const
156 return m_private->m_requestContext;
159 void WebServiceWorkerRequest::setFrameType(WebURLRequest::FrameType frameType)
161 m_private->m_frameType = frameType;
164 WebURLRequest::FrameType WebServiceWorkerRequest::frameType() const
166 return m_private->m_frameType;
169 void WebServiceWorkerRequest::setIsReload(bool isReload)
171 m_private->m_isReload = isReload;
174 bool WebServiceWorkerRequest::isReload() const
176 return m_private->m_isReload;