1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebURLResponse.h" 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "ResourceResponse.h" 35e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include "ResourceLoadTiming.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebHTTPHeaderVisitor.h" 384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "WebHTTPLoadInfo.h" 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebString.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebURL.h" 41e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include "WebURLLoadTiming.h" 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebURLResponsePrivate.h" 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 44e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include <wtf/RefPtr.h> 45e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace WebCore; 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// The standard implementation of WebURLResponsePrivate, which maintains 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// ownership of a ResourceResponse instance. 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebURLResponsePrivateImpl : public WebURLResponsePrivate { 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic: 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURLResponsePrivateImpl() 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_resourceResponse = &m_resourceResponseAllocation; 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURLResponsePrivateImpl(const WebURLResponsePrivate* p) 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_resourceResponseAllocation(*p->m_resourceResponse) 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_resourceResponse = &m_resourceResponseAllocation; 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void dispose() { delete this; } 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ResourceResponse m_resourceResponseAllocation; 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::initialize() 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block assign(new WebURLResponsePrivateImpl()); 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::reset() 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block assign(0); 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::assign(const WebURLResponse& r) 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (&r != this) 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block assign(r.m_private ? new WebURLResponsePrivateImpl(r.m_private) : 0); 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebURLResponse::isNull() const 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return !m_private || m_private->m_resourceResponse->isNull(); 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 91643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebURL WebURLResponse::url() const 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->url(); 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setURL(const WebURL& url) 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setURL(url); 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 101e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkeunsigned WebURLResponse::connectionID() const 102e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 103e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return m_private->m_resourceResponse->connectionID(); 104e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 105e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 106e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid WebURLResponse::setConnectionID(unsigned connectionID) 107e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 108e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke m_private->m_resourceResponse->setConnectionID(connectionID); 109e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 110e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 111967717af5423377c967781471ee106e2bb4e11c8Ben Murdochbool WebURLResponse::connectionReused() const 112967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 113967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch return m_private->m_resourceResponse->connectionReused(); 114967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 115967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 116967717af5423377c967781471ee106e2bb4e11c8Ben Murdochvoid WebURLResponse::setConnectionReused(bool connectionReused) 117967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 118967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch m_private->m_resourceResponse->setConnectionReused(connectionReused); 119967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 120967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 121e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeWebURLLoadTiming WebURLResponse::loadTiming() 122e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 123e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return WebURLLoadTiming(m_private->m_resourceResponse->resourceLoadTiming()); 124e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 125e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 126e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid WebURLResponse::setLoadTiming(const WebURLLoadTiming& timing) 127e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 128e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke RefPtr<ResourceLoadTiming> loadTiming = PassRefPtr<ResourceLoadTiming>(timing); 129e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke m_private->m_resourceResponse->setResourceLoadTiming(loadTiming.release()); 130e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 131e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 1324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangWebHTTPLoadInfo WebURLResponse::httpLoadInfo() 133a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 1344576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return WebHTTPLoadInfo(m_private->m_resourceResponse->resourceLoadInfo()); 135a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 136a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 1374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid WebURLResponse::setHTTPLoadInfo(const WebHTTPLoadInfo& value) 138a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 1394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang m_private->m_resourceResponse->setResourceLoadInfo(value); 140a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 141a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 1426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsendouble WebURLResponse::responseTime() const 1436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1446c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return m_private->m_resourceResponse->responseTime(); 1456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenvoid WebURLResponse::setResponseTime(double responseTime) 1486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen m_private->m_resourceResponse->setResponseTime(responseTime); 1506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 152643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebURLResponse::mimeType() const 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->mimeType(); 155643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 156643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 157643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setMIMEType(const WebString& mimeType) 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setMimeType(mimeType); 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocklong long WebURLResponse::expectedContentLength() const 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->expectedContentLength(); 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setExpectedContentLength(long long expectedContentLength) 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setExpectedContentLength(expectedContentLength); 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 172643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebURLResponse::textEncodingName() const 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->textEncodingName(); 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setTextEncodingName(const WebString& textEncodingName) 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setTextEncodingName(textEncodingName); 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 182643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebURLResponse::suggestedFileName() const 183643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->suggestedFilename(); 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setSuggestedFileName(const WebString& suggestedFileName) 188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setSuggestedFilename(suggestedFileName); 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 192643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockint WebURLResponse::httpStatusCode() const 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->httpStatusCode(); 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setHTTPStatusCode(int httpStatusCode) 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setHTTPStatusCode(httpStatusCode); 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 202643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebURLResponse::httpStatusText() const 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 204643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->httpStatusText(); 205643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 206643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 207643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setHTTPStatusText(const WebString& httpStatusText) 208643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 209643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setHTTPStatusText(httpStatusText); 210643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 212643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebURLResponse::httpHeaderField(const WebString& name) const 213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->httpHeaderField(name); 215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 217643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setHTTPHeaderField(const WebString& name, const WebString& value) 218643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 219643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setHTTPHeaderField(name, value); 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 221643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::addHTTPHeaderField(const WebString& name, const WebString& value) 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 224dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (name.isNull() || value.isNull()) 225dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 226643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // FIXME: Add an addHTTPHeaderField method to ResourceResponse. 227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const HTTPHeaderMap& map = m_private->m_resourceResponse->httpHeaderFields(); 228643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String valueStr(value); 229643ca7872b450ea4efacab6188849e5aac2ba161Steve Block pair<HTTPHeaderMap::iterator, bool> result = 230643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const_cast<HTTPHeaderMap*>(&map)->add(name, valueStr); 231643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!result.second) 232643ca7872b450ea4efacab6188849e5aac2ba161Steve Block result.first->second += ", " + valueStr; 233643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 234643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 235643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::clearHTTPHeaderField(const WebString& name) 236643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 237643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // FIXME: Add a clearHTTPHeaderField method to ResourceResponse. 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const HTTPHeaderMap& map = m_private->m_resourceResponse->httpHeaderFields(); 239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const_cast<HTTPHeaderMap*>(&map)->remove(name); 240643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::visitHTTPHeaderFields(WebHTTPHeaderVisitor* visitor) const 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const HTTPHeaderMap& map = m_private->m_resourceResponse->httpHeaderFields(); 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (HTTPHeaderMap::const_iterator it = map.begin(); it != map.end(); ++it) 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block visitor->visitHeader(it->first, it->second); 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 248643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockdouble WebURLResponse::lastModifiedDate() const 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return static_cast<double>(m_private->m_resourceResponse->lastModifiedDate()); 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 254643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setLastModifiedDate(double lastModifiedDate) 255643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setLastModifiedDate(static_cast<time_t>(lastModifiedDate)); 257643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 259643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocklong long WebURLResponse::appCacheID() const 260643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 261643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->appCacheID(); 262643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 264643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setAppCacheID(long long appCacheID) 265643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setAppCacheID(appCacheID); 267643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 268643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 269643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebURL WebURLResponse::appCacheManifestURL() const 270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 271643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->appCacheManifestURL(); 272643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 273643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 274643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setAppCacheManifestURL(const WebURL& url) 275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 276643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setAppCacheManifestURL(url); 277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 278643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 279643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebCString WebURLResponse::securityInfo() const 280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // FIXME: getSecurityInfo is misnamed. 282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->m_resourceResponse->getSecurityInfo(); 283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 285643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::setSecurityInfo(const WebCString& securityInfo) 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->m_resourceResponse->setSecurityInfo(securityInfo); 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 289643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 290643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockResourceResponse& WebURLResponse::toMutableResourceResponse() 291643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(m_private); 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(m_private->m_resourceResponse); 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return *m_private->m_resourceResponse; 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockconst ResourceResponse& WebURLResponse::toResourceResponse() const 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(m_private); 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ASSERT(m_private->m_resourceResponse); 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return *m_private->m_resourceResponse; 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 306e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkebool WebURLResponse::wasCached() const 307e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 308e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return m_private->m_resourceResponse->wasCached(); 309e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 310e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 311e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid WebURLResponse::setWasCached(bool value) 312e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 313e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke m_private->m_resourceResponse->setWasCached(value); 314e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 315e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 316d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool WebURLResponse::wasFetchedViaSPDY() const 317d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 318d0825bca7fe65beaee391d30da42e937db621564Steve Block return m_private->m_resourceResponse->wasFetchedViaSPDY(); 319d0825bca7fe65beaee391d30da42e937db621564Steve Block} 320d0825bca7fe65beaee391d30da42e937db621564Steve Block 321d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid WebURLResponse::setWasFetchedViaSPDY(bool value) 322d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 323d0825bca7fe65beaee391d30da42e937db621564Steve Block m_private->m_resourceResponse->setWasFetchedViaSPDY(value); 324d0825bca7fe65beaee391d30da42e937db621564Steve Block} 325d0825bca7fe65beaee391d30da42e937db621564Steve Block 3266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenbool WebURLResponse::wasNpnNegotiated() const 3276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 3286c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return m_private->m_resourceResponse->wasNpnNegotiated(); 3296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 3306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 3316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenvoid WebURLResponse::setWasNpnNegotiated(bool value) 3326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 3336c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen m_private->m_resourceResponse->setWasNpnNegotiated(value); 3346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 3356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 33606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenbool WebURLResponse::wasAlternateProtocolAvailable() const 33706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 33806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_private->m_resourceResponse->wasAlternateProtocolAvailable(); 33906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 34006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 34106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebURLResponse::setWasAlternateProtocolAvailable(bool value) 34206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 34306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen m_private->m_resourceResponse->setWasAlternateProtocolAvailable(value); 34406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 34506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 346545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochbool WebURLResponse::wasFetchedViaProxy() const 347545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 348545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return m_private->m_resourceResponse->wasFetchedViaProxy(); 349545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 350545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 351545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochvoid WebURLResponse::setWasFetchedViaProxy(bool value) 352545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 353545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch m_private->m_resourceResponse->setWasFetchedViaProxy(value); 354545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 355545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 356dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockbool WebURLResponse::isMultipartPayload() const 357dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 358dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_private->m_resourceResponse->isMultipartPayload(); 359dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 360dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 361dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid WebURLResponse::setIsMultipartPayload(bool value) 362dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 363dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private->m_resourceResponse->setIsMultipartPayload(value); 364dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 365dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 366967717af5423377c967781471ee106e2bb4e11c8Ben MurdochWebString WebURLResponse::downloadFilePath() const 367967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 36881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return m_private->m_resourceResponse->downloadFilePath(); 369967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 370967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 371967717af5423377c967781471ee106e2bb4e11c8Ben Murdochvoid WebURLResponse::setDownloadFilePath(const WebString& downloadFilePath) 372967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 37381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_private->m_resourceResponse->setDownloadFilePath(downloadFilePath.utf8().data()); 37481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 37581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 37681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochWebString WebURLResponse::remoteIPAddress() const 37781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 37881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return m_private->m_resourceResponse->remoteIPAddress(); 37981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 38081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 38181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebURLResponse::setRemoteIPAddress(const WebString& remoteIPAddress) 38281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 38381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_private->m_resourceResponse->setRemoteIPAddress(remoteIPAddress); 384967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 385967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 38681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochunsigned short WebURLResponse::remotePort() const 3872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 38881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return m_private->m_resourceResponse->remotePort(); 3892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 39181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid WebURLResponse::setRemotePort(unsigned short remotePort) 3922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 39381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_private->m_resourceResponse->setRemotePort(remotePort); 3942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 396643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebURLResponse::assign(WebURLResponsePrivate* p) 397643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 398643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Subclasses may call this directly so a self-assignment check is needed 399643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // here as well as in the public assign method. 400643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (m_private == p) 401643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 402643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (m_private) 403643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->dispose(); 404643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private = p; 405643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 406643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 407643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 408