1 // Copyright 2017 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.
4 
5 #include "content/public/test/slow_download_http_response.h"
6 
7 #include "base/strings/stringprintf.h"
8 
9 namespace content {
10 
11 // static
12 const char SlowDownloadHttpResponse::kUnknownSizeUrl[] =
13     "/download-unknown-size";
14 const char SlowDownloadHttpResponse::kKnownSizeUrl[] = "/download-known-size";
15 
16 // static
17 std::unique_ptr<net::test_server::HttpResponse>
HandleSlowDownloadRequest(const net::test_server::HttpRequest & request)18 SlowDownloadHttpResponse::HandleSlowDownloadRequest(
19     const net::test_server::HttpRequest& request) {
20   auto response =
21       std::make_unique<SlowDownloadHttpResponse>(request.relative_url);
22   if (!response->IsHandledUrl()) {
23     return nullptr;
24   }
25   return std::move(response);
26 }
27 
SlowDownloadHttpResponse(const std::string & url)28 SlowDownloadHttpResponse::SlowDownloadHttpResponse(const std::string& url)
29     : SlowHttpResponse(url) {}
30 
31 SlowDownloadHttpResponse::~SlowDownloadHttpResponse() = default;
32 
IsHandledUrl()33 bool SlowDownloadHttpResponse::IsHandledUrl() {
34   return (url() == SlowDownloadHttpResponse::kUnknownSizeUrl ||
35           url() == SlowDownloadHttpResponse::kKnownSizeUrl ||
36           SlowHttpResponse::IsHandledUrl());
37 }
38 
AddResponseHeaders(std::string * response)39 void SlowDownloadHttpResponse::AddResponseHeaders(std::string* response) {
40   response->append("Content-type: application/octet-stream\r\n");
41   response->append("Cache-Control: max-age=0\r\n");
42 
43   if (base::LowerCaseEqualsASCII(kKnownSizeUrl, url())) {
44     response->append(
45         base::StringPrintf("Content-Length: %d\r\n",
46                            kFirstResponsePartSize + kSecondResponsePartSize));
47   }
48 }
49 
50 }  // namespace content
51