19de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen/* 29de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * Copyright 2010, The Android Open Source Project 39de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * 49de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * Redistribution and use in source and binary forms, with or without 59de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * modification, are permitted provided that the following conditions 69de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * are met: 79de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * * Redistributions of source code must retain the above copyright 89de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * notice, this list of conditions and the following disclaimer. 99de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * * Redistributions in binary form must reproduce the above copyright 109de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * notice, this list of conditions and the following disclaimer in the 119de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * documentation and/or other materials provided with the distribution. 129de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * 139de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 149de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 159de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 169de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 179de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 189de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 199de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 209de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 219de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 229de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 239de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 249de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen */ 259de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 269de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#ifndef WebResponse_h 279de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#define WebResponse_h 289de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 29bdcebcb37eb20e212451130aee402c1927ad0e14Kristian Monsen#include "ChromiumIncludes.h" 309de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#include "KURL.h" 319d2b5a35cbe2528f07d9aa33b2b8cf025f266090Iain Merrick#include "WebViewClientError.h" 329de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 339de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#include <map> 349de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#include <string> 359de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 369de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsennamespace WebCore { 379de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenclass ResourceResponse; 3821baf41667f5ac764512f0168a702390daf45bf3Kristian Monsenclass ResourceError; 399de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen} 409de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 419de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsennamespace android { 429de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 439de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenclass WebResponse { 449de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 459de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenpublic: 469de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen WebResponse() {} 4741c4de163e4183c0e2a74c5c296de8a734ecc516Kristian Monsen WebResponse(net::URLRequest*); 487d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick WebResponse(const std::string &url, const std::string &mimeType, long long expectedSize, const std::string &encoding, int httpStatusCode); 499de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 507d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick const std::string& getUrl() const; 517d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick void setUrl(const std::string&); 527d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick 537911c3f54e13fc70b49ed513e2be226129cd4ea7Ben Murdoch const std::string& getMimeType(); // Use only on WebCore thread. 547d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick bool getHeader(const std::string& header, std::string* result) const; 557d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick long long getExpectedSize() const; 567d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick 57e777e7663bb6cecc72754dbf56e068f5b6ea30d5Iain Merrick const net::SSLInfo& getSslInfo() const { return m_sslInfo; } 58e777e7663bb6cecc72754dbf56e068f5b6ea30d5Iain Merrick 597d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick // The create() methods create WebCore objects. They must only be called on the WebKit thread. 607d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick WebCore::KURL createKurl(); 619de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen WebCore::ResourceResponse createResourceResponse(); 6221baf41667f5ac764512f0168a702390daf45bf3Kristian Monsen WebCore::ResourceError createResourceError(); 639de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 6427f2ed8c9c05acf5dbc69547127ad580fb8801fcKristian Monsen static const std::string resolveMimeType(const std::string& url, const std::string& old_mime); 65e95b4a7d9ed67e6d6960e33e794e653aa0bd3887Ben Murdoch 669de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenprivate: 679d2b5a35cbe2528f07d9aa33b2b8cf025f266090Iain Merrick net::Error m_error; 689de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_encoding; 699de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen int m_httpStatusCode; 7021baf41667f5ac764512f0168a702390daf45bf3Kristian Monsen std::string m_host; 719de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_httpStatusText; 727d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick long long m_expectedSize; 739de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_mime; 749de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_url; 75e777e7663bb6cecc72754dbf56e068f5b6ea30d5Iain Merrick net::SSLInfo m_sslInfo; 769de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 77f3cc3c8581afce262b099794508129d16120adc0Iain Merrick struct CaseInsensitiveLessThan { 78f3cc3c8581afce262b099794508129d16120adc0Iain Merrick bool operator()(const std::string& lhs, const std::string& rhs) const { 79f3cc3c8581afce262b099794508129d16120adc0Iain Merrick return strcasecmp(lhs.c_str(), rhs.c_str()) < 0; 80f3cc3c8581afce262b099794508129d16120adc0Iain Merrick } 81f3cc3c8581afce262b099794508129d16120adc0Iain Merrick }; 82f3cc3c8581afce262b099794508129d16120adc0Iain Merrick 83f3cc3c8581afce262b099794508129d16120adc0Iain Merrick // Header fields are case insensitive, so we use a case-insensitive map. 84f3cc3c8581afce262b099794508129d16120adc0Iain Merrick // See RFC 822, 3.4.7, "CASE INDEPENDENCE". 85f3cc3c8581afce262b099794508129d16120adc0Iain Merrick std::map<std::string, std::string, CaseInsensitiveLessThan> m_headerFields; 86787e29b54f206839549283289018384538f050f0John Reck 879de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen}; 889de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 899de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen} // namespace android 909de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 919de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#endif 92