WebResponse.h revision f3cc3c8581afce262b099794508129d16120adc0
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 41d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrickclass URLRequest; 42d4ff0cc91b5eb975d563f355f9f4c7358e0e2c06Iain Merrick 439de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsennamespace android { 449de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 459de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenclass WebResponse { 469de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 479de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenpublic: 489de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen WebResponse() {} 499de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen WebResponse(URLRequest*); 507d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick WebResponse(const std::string &url, const std::string &mimeType, long long expectedSize, const std::string &encoding, int httpStatusCode); 519de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 527d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick const std::string& getUrl() const; 537d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick void setUrl(const std::string&); 547d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick 557d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick const std::string& getMimeType() const; 567d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick bool getHeader(const std::string& header, std::string* result) const; 577d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick long long getExpectedSize() const; 587d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain 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 649de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsenprivate: 659d2b5a35cbe2528f07d9aa33b2b8cf025f266090Iain Merrick net::Error m_error; 669de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_encoding; 679de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen int m_httpStatusCode; 6821baf41667f5ac764512f0168a702390daf45bf3Kristian Monsen std::string m_host; 699de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_httpStatusText; 707d2f6c10941c9083e9ec30fb08444a5755ff8bc9Iain Merrick long long m_expectedSize; 719de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_mime; 729de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen std::string m_url; 739de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 74f3cc3c8581afce262b099794508129d16120adc0Iain Merrick struct CaseInsensitiveLessThan { 75f3cc3c8581afce262b099794508129d16120adc0Iain Merrick bool operator()(const std::string& lhs, const std::string& rhs) const { 76f3cc3c8581afce262b099794508129d16120adc0Iain Merrick return strcasecmp(lhs.c_str(), rhs.c_str()) < 0; 77f3cc3c8581afce262b099794508129d16120adc0Iain Merrick } 78f3cc3c8581afce262b099794508129d16120adc0Iain Merrick }; 79f3cc3c8581afce262b099794508129d16120adc0Iain Merrick 80f3cc3c8581afce262b099794508129d16120adc0Iain Merrick // Header fields are case insensitive, so we use a case-insensitive map. 81f3cc3c8581afce262b099794508129d16120adc0Iain Merrick // See RFC 822, 3.4.7, "CASE INDEPENDENCE". 82f3cc3c8581afce262b099794508129d16120adc0Iain Merrick std::map<std::string, std::string, CaseInsensitiveLessThan> m_headerFields; 83787e29b54f206839549283289018384538f050f0John Reck 84787e29b54f206839549283289018384538f050f0John Reck void setMimeType(const std::string &mimeType); 859de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen}; 869de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 879de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen} // namespace android 889de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen 899de447de54fcb62a01a3338bb4d2f4d1716f522dKristian Monsen#endif 90