| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "headless/public/util/url_fetcher.h" |
| |
| #include <utility> |
| |
| #include "base/logging.h" |
| #include "net/http/http_response_headers.h" |
| #include "net/http/http_util.h" |
| |
| namespace headless { |
| |
| void URLFetcher::ResultListener::OnFetchCompleteExtractHeaders( |
| const GURL& final_url, |
| int http_response_code, |
| const char* response_data, |
| size_t response_data_size) { |
| size_t read_offset = 0; |
| int header_size = |
| net::HttpUtil::LocateEndOfHeaders(response_data, response_data_size); |
| scoped_refptr<net::HttpResponseHeaders> response_headers; |
| |
| if (header_size == -1) { |
| LOG(WARNING) << "Can't find headers in result for url: " << final_url; |
| response_headers = new net::HttpResponseHeaders(""); |
| } else { |
| response_headers = new net::HttpResponseHeaders( |
| net::HttpUtil::AssembleRawHeaders(response_data, header_size)); |
| read_offset = header_size; |
| } |
| |
| CHECK_LE(read_offset, response_data_size); |
| OnFetchComplete(final_url, http_response_code, std::move(response_headers), |
| response_data + read_offset, |
| response_data_size - read_offset); |
| } |
| |
| void URLFetcher::StartFetch(const GURL& rewritten_url, |
| const std::string& method, |
| const net::HttpRequestHeaders& request_headers, |
| const std::string& devtools_request_id, |
| ResultListener* result_listener) { |
| StartFetch(rewritten_url, method, request_headers, result_listener); |
| } |
| |
| void URLFetcher::StartFetch(const GURL& rewritten_url, |
| const std::string& method, |
| const net::HttpRequestHeaders& request_headers, |
| ResultListener* result_listener) {} |
| |
| } // namespace headless |