OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // A URLRequestJob class that simulates network errors (including https | 5 // A URLRequestJob class that simulates network errors (including https |
6 // related). | 6 // related). |
7 // It is based on URLRequestMockHttpJob. | 7 // It is based on URLRequestMockHttpJob. |
8 | 8 |
9 #ifndef CHROME_BROWSER_NET_URL_REQUEST_MOCK_NET_ERROR_JOB_H_ | 9 #ifndef CHROME_BROWSER_NET_URL_REQUEST_MOCK_NET_ERROR_JOB_H_ |
10 #define CHROME_BROWSER_NET_URL_REQUEST_MOCK_NET_ERROR_JOB_H_ | 10 #define CHROME_BROWSER_NET_URL_REQUEST_MOCK_NET_ERROR_JOB_H_ |
11 #pragma once | 11 #pragma once |
12 | 12 |
13 #include "chrome/browser/net/url_request_mock_http_job.h" | 13 #include "chrome/browser/net/url_request_mock_http_job.h" |
14 | 14 |
15 class URLRequestMockNetErrorJob : public URLRequestMockHTTPJob { | 15 class URLRequestMockNetErrorJob : public URLRequestMockHTTPJob { |
16 public: | 16 public: |
17 URLRequestMockNetErrorJob(URLRequest* request, | 17 URLRequestMockNetErrorJob(net::URLRequest* request, |
18 const std::vector<int>& errors, | 18 const std::vector<int>& errors, |
19 net::X509Certificate* ssl_cert, | 19 net::X509Certificate* ssl_cert, |
20 const FilePath& file_path); | 20 const FilePath& file_path); |
21 | 21 |
22 virtual void Start(); | 22 virtual void Start(); |
23 virtual void ContinueDespiteLastError(); | 23 virtual void ContinueDespiteLastError(); |
24 | 24 |
25 // Add the specified URL to the list of URLs that should be mocked. When this | 25 // Add the specified URL to the list of URLs that should be mocked. When this |
26 // URL is hit, the specified |errors| will be played. If any of these errors | 26 // URL is hit, the specified |errors| will be played. If any of these errors |
27 // is a cert error, |ssl_cert| will be used as the ssl cert when notifying of | 27 // is a cert error, |ssl_cert| will be used as the ssl cert when notifying of |
28 // the error. |ssl_cert| can be NULL if |errors| does not contain any cert | 28 // the error. |ssl_cert| can be NULL if |errors| does not contain any cert |
29 // errors. |base| is the location on disk where the file mocking the URL | 29 // errors. |base| is the location on disk where the file mocking the URL |
30 // contents and http-headers should be retrieved from. | 30 // contents and http-headers should be retrieved from. |
31 static void AddMockedURL(const GURL& url, | 31 static void AddMockedURL(const GURL& url, |
32 const std::wstring& base, | 32 const std::wstring& base, |
33 const std::vector<int>& errors, | 33 const std::vector<int>& errors, |
34 net::X509Certificate* ssl_cert); | 34 net::X509Certificate* ssl_cert); |
35 | 35 |
36 // Removes the specified |url| from the list of mocked urls. | 36 // Removes the specified |url| from the list of mocked urls. |
37 static void RemoveMockedURL(const GURL& url); | 37 static void RemoveMockedURL(const GURL& url); |
38 | 38 |
39 private: | 39 private: |
40 ~URLRequestMockNetErrorJob(); | 40 ~URLRequestMockNetErrorJob(); |
41 | 41 |
42 static URLRequest::ProtocolFactory Factory; | 42 static net::URLRequest::ProtocolFactory Factory; |
43 | 43 |
44 void StartAsync(); | 44 void StartAsync(); |
45 | 45 |
46 // The errors to simulate. | 46 // The errors to simulate. |
47 std::vector<int> errors_; | 47 std::vector<int> errors_; |
48 | 48 |
49 // The certificate to use for SSL errors. | 49 // The certificate to use for SSL errors. |
50 scoped_refptr<net::X509Certificate> ssl_cert_; | 50 scoped_refptr<net::X509Certificate> ssl_cert_; |
51 | 51 |
52 struct MockInfo; | 52 struct MockInfo; |
53 typedef std::map<GURL, MockInfo> URLMockInfoMap; | 53 typedef std::map<GURL, MockInfo> URLMockInfoMap; |
54 static URLMockInfoMap url_mock_info_map_; | 54 static URLMockInfoMap url_mock_info_map_; |
55 | 55 |
56 DISALLOW_COPY_AND_ASSIGN(URLRequestMockNetErrorJob); | 56 DISALLOW_COPY_AND_ASSIGN(URLRequestMockNetErrorJob); |
57 }; | 57 }; |
58 | 58 |
59 #endif // CHROME_BROWSER_NET_URL_REQUEST_MOCK_NET_ERROR_JOB_H_ | 59 #endif // CHROME_BROWSER_NET_URL_REQUEST_MOCK_NET_ERROR_JOB_H_ |
OLD | NEW |