Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Side by Side Diff: net/proxy/proxy_script_fetcher_unittest.cc

Issue 2817043: Reduce the copying of string data between C++ and javascript in proxy_resolver_v8.cc. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix comment typo 'converts' Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/proxy/proxy_script_fetcher.cc ('k') | net/proxy/proxy_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "net/proxy/proxy_script_fetcher.h" 5 #include "net/proxy/proxy_script_fetcher.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "net/base/net_util.h" 10 #include "net/base/net_util.h"
11 #include "net/base/ssl_config_service_defaults.h" 11 #include "net/base/ssl_config_service_defaults.h"
12 #include "net/base/test_completion_callback.h" 12 #include "net/base/test_completion_callback.h"
13 #include "net/disk_cache/disk_cache.h" 13 #include "net/disk_cache/disk_cache.h"
14 #include "net/http/http_cache.h" 14 #include "net/http/http_cache.h"
15 #include "net/url_request/url_request_unittest.h" 15 #include "net/url_request/url_request_unittest.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "testing/platform_test.h" 17 #include "testing/platform_test.h"
18 18
19 // TODO(eroman): 19 // TODO(eroman):
20 // - Test canceling an outstanding request. 20 // - Test canceling an outstanding request.
21 // - Test deleting ProxyScriptFetcher while a request is in progress. 21 // - Test deleting ProxyScriptFetcher while a request is in progress.
22 22
23 const wchar_t kDocRoot[] = L"net/data/proxy_script_fetcher_unittest"; 23 const wchar_t kDocRoot[] = L"net/data/proxy_script_fetcher_unittest";
24 24
25 struct FetchResult { 25 struct FetchResult {
26 int code; 26 int code;
27 std::string bytes; 27 string16 text;
28 }; 28 };
29 29
30 // A non-mock URL request which can access http:// and file:// urls. 30 // A non-mock URL request which can access http:// and file:// urls.
31 class RequestContext : public URLRequestContext { 31 class RequestContext : public URLRequestContext {
32 public: 32 public:
33 RequestContext() { 33 RequestContext() {
34 net::ProxyConfig no_proxy; 34 net::ProxyConfig no_proxy;
35 host_resolver_ = net::CreateSystemHostResolver(); 35 host_resolver_ = net::CreateSystemHostResolver();
36 proxy_service_ = net::ProxyService::CreateFixed(no_proxy); 36 proxy_service_ = net::ProxyService::CreateFixed(no_proxy);
37 ssl_config_service_ = new net::SSLConfigServiceDefaults; 37 ssl_config_service_ = new net::SSLConfigServiceDefaults;
(...skipping 25 matching lines...) Expand all
63 } 63 }
64 64
65 typedef PlatformTest ProxyScriptFetcherTest; 65 typedef PlatformTest ProxyScriptFetcherTest;
66 66
67 TEST_F(ProxyScriptFetcherTest, FileUrl) { 67 TEST_F(ProxyScriptFetcherTest, FileUrl) {
68 scoped_refptr<URLRequestContext> context = new RequestContext; 68 scoped_refptr<URLRequestContext> context = new RequestContext;
69 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 69 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
70 ProxyScriptFetcher::Create(context)); 70 ProxyScriptFetcher::Create(context));
71 71
72 { // Fetch a non-existent file. 72 { // Fetch a non-existent file.
73 std::string bytes; 73 string16 text;
74 TestCompletionCallback callback; 74 TestCompletionCallback callback;
75 int result = pac_fetcher->Fetch(GetTestFileUrl("does-not-exist"), 75 int result = pac_fetcher->Fetch(GetTestFileUrl("does-not-exist"),
76 &bytes, &callback); 76 &text, &callback);
77 EXPECT_EQ(ERR_IO_PENDING, result); 77 EXPECT_EQ(ERR_IO_PENDING, result);
78 EXPECT_EQ(ERR_FILE_NOT_FOUND, callback.WaitForResult()); 78 EXPECT_EQ(ERR_FILE_NOT_FOUND, callback.WaitForResult());
79 EXPECT_TRUE(bytes.empty()); 79 EXPECT_TRUE(text.empty());
80 } 80 }
81 { // Fetch a file that exists. 81 { // Fetch a file that exists.
82 std::string bytes; 82 string16 text;
83 TestCompletionCallback callback; 83 TestCompletionCallback callback;
84 int result = pac_fetcher->Fetch(GetTestFileUrl("pac.txt"), 84 int result = pac_fetcher->Fetch(GetTestFileUrl("pac.txt"),
85 &bytes, &callback); 85 &text, &callback);
86 EXPECT_EQ(ERR_IO_PENDING, result); 86 EXPECT_EQ(ERR_IO_PENDING, result);
87 EXPECT_EQ(OK, callback.WaitForResult()); 87 EXPECT_EQ(OK, callback.WaitForResult());
88 EXPECT_EQ("-pac.txt-\n", bytes); 88 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text);
89 } 89 }
90 } 90 }
91 91
92 // Note that all mime types are allowed for PAC file, to be consistent 92 // Note that all mime types are allowed for PAC file, to be consistent
93 // with other browsers. 93 // with other browsers.
94 TEST_F(ProxyScriptFetcherTest, HttpMimeType) { 94 TEST_F(ProxyScriptFetcherTest, HttpMimeType) {
95 scoped_refptr<HTTPTestServer> server = 95 scoped_refptr<HTTPTestServer> server =
96 HTTPTestServer::CreateServer(kDocRoot, NULL); 96 HTTPTestServer::CreateServer(kDocRoot, NULL);
97 ASSERT_TRUE(NULL != server.get()); 97 ASSERT_TRUE(NULL != server.get());
98 scoped_refptr<URLRequestContext> context = new RequestContext; 98 scoped_refptr<URLRequestContext> context = new RequestContext;
99 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 99 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
100 ProxyScriptFetcher::Create(context)); 100 ProxyScriptFetcher::Create(context));
101 101
102 { // Fetch a PAC with mime type "text/plain" 102 { // Fetch a PAC with mime type "text/plain"
103 GURL url = server->TestServerPage("files/pac.txt"); 103 GURL url = server->TestServerPage("files/pac.txt");
104 std::string bytes; 104 string16 text;
105 TestCompletionCallback callback; 105 TestCompletionCallback callback;
106 int result = pac_fetcher->Fetch(url, &bytes, &callback); 106 int result = pac_fetcher->Fetch(url, &text, &callback);
107 EXPECT_EQ(ERR_IO_PENDING, result); 107 EXPECT_EQ(ERR_IO_PENDING, result);
108 EXPECT_EQ(OK, callback.WaitForResult()); 108 EXPECT_EQ(OK, callback.WaitForResult());
109 EXPECT_EQ("-pac.txt-\n", bytes); 109 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text);
110 } 110 }
111 { // Fetch a PAC with mime type "text/html" 111 { // Fetch a PAC with mime type "text/html"
112 GURL url = server->TestServerPage("files/pac.html"); 112 GURL url = server->TestServerPage("files/pac.html");
113 std::string bytes; 113 string16 text;
114 TestCompletionCallback callback; 114 TestCompletionCallback callback;
115 int result = pac_fetcher->Fetch(url, &bytes, &callback); 115 int result = pac_fetcher->Fetch(url, &text, &callback);
116 EXPECT_EQ(ERR_IO_PENDING, result); 116 EXPECT_EQ(ERR_IO_PENDING, result);
117 EXPECT_EQ(OK, callback.WaitForResult()); 117 EXPECT_EQ(OK, callback.WaitForResult());
118 EXPECT_EQ("-pac.html-\n", bytes); 118 EXPECT_EQ(ASCIIToUTF16("-pac.html-\n"), text);
119 } 119 }
120 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" 120 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig"
121 GURL url = server->TestServerPage("files/pac.nsproxy"); 121 GURL url = server->TestServerPage("files/pac.nsproxy");
122 std::string bytes; 122 string16 text;
123 TestCompletionCallback callback; 123 TestCompletionCallback callback;
124 int result = pac_fetcher->Fetch(url, &bytes, &callback); 124 int result = pac_fetcher->Fetch(url, &text, &callback);
125 EXPECT_EQ(ERR_IO_PENDING, result); 125 EXPECT_EQ(ERR_IO_PENDING, result);
126 EXPECT_EQ(OK, callback.WaitForResult()); 126 EXPECT_EQ(OK, callback.WaitForResult());
127 EXPECT_EQ("-pac.nsproxy-\n", bytes); 127 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text);
128 } 128 }
129 } 129 }
130 130
131 TEST_F(ProxyScriptFetcherTest, HttpStatusCode) { 131 TEST_F(ProxyScriptFetcherTest, HttpStatusCode) {
132 scoped_refptr<HTTPTestServer> server = 132 scoped_refptr<HTTPTestServer> server =
133 HTTPTestServer::CreateServer(kDocRoot, NULL); 133 HTTPTestServer::CreateServer(kDocRoot, NULL);
134 ASSERT_TRUE(NULL != server.get()); 134 ASSERT_TRUE(NULL != server.get());
135 scoped_refptr<URLRequestContext> context = new RequestContext; 135 scoped_refptr<URLRequestContext> context = new RequestContext;
136 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 136 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
137 ProxyScriptFetcher::Create(context)); 137 ProxyScriptFetcher::Create(context));
138 138
139 { // Fetch a PAC which gives a 500 -- FAIL 139 { // Fetch a PAC which gives a 500 -- FAIL
140 GURL url = server->TestServerPage("files/500.pac"); 140 GURL url = server->TestServerPage("files/500.pac");
141 std::string bytes; 141 string16 text;
142 TestCompletionCallback callback; 142 TestCompletionCallback callback;
143 int result = pac_fetcher->Fetch(url, &bytes, &callback); 143 int result = pac_fetcher->Fetch(url, &text, &callback);
144 EXPECT_EQ(ERR_IO_PENDING, result); 144 EXPECT_EQ(ERR_IO_PENDING, result);
145 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); 145 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult());
146 EXPECT_TRUE(bytes.empty()); 146 EXPECT_TRUE(text.empty());
147 } 147 }
148 { // Fetch a PAC which gives a 404 -- FAIL 148 { // Fetch a PAC which gives a 404 -- FAIL
149 GURL url = server->TestServerPage("files/404.pac"); 149 GURL url = server->TestServerPage("files/404.pac");
150 std::string bytes; 150 string16 text;
151 TestCompletionCallback callback; 151 TestCompletionCallback callback;
152 int result = pac_fetcher->Fetch(url, &bytes, &callback); 152 int result = pac_fetcher->Fetch(url, &text, &callback);
153 EXPECT_EQ(ERR_IO_PENDING, result); 153 EXPECT_EQ(ERR_IO_PENDING, result);
154 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); 154 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult());
155 EXPECT_TRUE(bytes.empty()); 155 EXPECT_TRUE(text.empty());
156 } 156 }
157 } 157 }
158 158
159 TEST_F(ProxyScriptFetcherTest, ContentDisposition) { 159 TEST_F(ProxyScriptFetcherTest, ContentDisposition) {
160 scoped_refptr<HTTPTestServer> server = 160 scoped_refptr<HTTPTestServer> server =
161 HTTPTestServer::CreateServer(kDocRoot, NULL); 161 HTTPTestServer::CreateServer(kDocRoot, NULL);
162 ASSERT_TRUE(NULL != server.get()); 162 ASSERT_TRUE(NULL != server.get());
163 scoped_refptr<URLRequestContext> context = new RequestContext; 163 scoped_refptr<URLRequestContext> context = new RequestContext;
164 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 164 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
165 ProxyScriptFetcher::Create(context)); 165 ProxyScriptFetcher::Create(context));
166 166
167 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should 167 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should
168 // have no effect. 168 // have no effect.
169 GURL url = server->TestServerPage("files/downloadable.pac"); 169 GURL url = server->TestServerPage("files/downloadable.pac");
170 std::string bytes; 170 string16 text;
171 TestCompletionCallback callback; 171 TestCompletionCallback callback;
172 int result = pac_fetcher->Fetch(url, &bytes, &callback); 172 int result = pac_fetcher->Fetch(url, &text, &callback);
173 EXPECT_EQ(ERR_IO_PENDING, result); 173 EXPECT_EQ(ERR_IO_PENDING, result);
174 EXPECT_EQ(OK, callback.WaitForResult()); 174 EXPECT_EQ(OK, callback.WaitForResult());
175 EXPECT_EQ("-downloadable.pac-\n", bytes); 175 EXPECT_EQ(ASCIIToUTF16("-downloadable.pac-\n"), text);
176 } 176 }
177 177
178 TEST_F(ProxyScriptFetcherTest, NoCache) { 178 TEST_F(ProxyScriptFetcherTest, NoCache) {
179 scoped_refptr<HTTPTestServer> server = 179 scoped_refptr<HTTPTestServer> server =
180 HTTPTestServer::CreateServer(kDocRoot, NULL); 180 HTTPTestServer::CreateServer(kDocRoot, NULL);
181 ASSERT_TRUE(NULL != server.get()); 181 ASSERT_TRUE(NULL != server.get());
182 scoped_refptr<URLRequestContext> context = new RequestContext; 182 scoped_refptr<URLRequestContext> context = new RequestContext;
183 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 183 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
184 ProxyScriptFetcher::Create(context)); 184 ProxyScriptFetcher::Create(context));
185 185
186 // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour. 186 // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour.
187 GURL url = server->TestServerPage("files/cacheable_1hr.pac"); 187 GURL url = server->TestServerPage("files/cacheable_1hr.pac");
188 { 188 {
189 std::string bytes; 189 string16 text;
190 TestCompletionCallback callback; 190 TestCompletionCallback callback;
191 int result = pac_fetcher->Fetch(url, &bytes, &callback); 191 int result = pac_fetcher->Fetch(url, &text, &callback);
192 EXPECT_EQ(ERR_IO_PENDING, result); 192 EXPECT_EQ(ERR_IO_PENDING, result);
193 EXPECT_EQ(OK, callback.WaitForResult()); 193 EXPECT_EQ(OK, callback.WaitForResult());
194 EXPECT_EQ("-cacheable_1hr.pac-\n", bytes); 194 EXPECT_EQ(ASCIIToUTF16("-cacheable_1hr.pac-\n"), text);
195 } 195 }
196 196
197 // Now kill the HTTP server. 197 // Now kill the HTTP server.
198 EXPECT_TRUE(server->Stop()); // Verify it shutdown synchronously. 198 EXPECT_TRUE(server->Stop()); // Verify it shutdown synchronously.
199 server = NULL; 199 server = NULL;
200 200
201 // Try to fetch the file again -- if should fail, since the server is not 201 // Try to fetch the file again -- if should fail, since the server is not
202 // running anymore. (If it were instead being loaded from cache, we would 202 // running anymore. (If it were instead being loaded from cache, we would
203 // get a success. 203 // get a success.
204 { 204 {
205 std::string bytes; 205 string16 text;
206 TestCompletionCallback callback; 206 TestCompletionCallback callback;
207 int result = pac_fetcher->Fetch(url, &bytes, &callback); 207 int result = pac_fetcher->Fetch(url, &text, &callback);
208 EXPECT_EQ(ERR_IO_PENDING, result); 208 EXPECT_EQ(ERR_IO_PENDING, result);
209 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult()); 209 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult());
210 } 210 }
211 } 211 }
212 212
213 TEST_F(ProxyScriptFetcherTest, TooLarge) { 213 TEST_F(ProxyScriptFetcherTest, TooLarge) {
214 scoped_refptr<HTTPTestServer> server = 214 scoped_refptr<HTTPTestServer> server =
215 HTTPTestServer::CreateServer(kDocRoot, NULL); 215 HTTPTestServer::CreateServer(kDocRoot, NULL);
216 ASSERT_TRUE(NULL != server.get()); 216 ASSERT_TRUE(NULL != server.get());
217 scoped_refptr<URLRequestContext> context = new RequestContext; 217 scoped_refptr<URLRequestContext> context = new RequestContext;
218 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 218 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
219 ProxyScriptFetcher::Create(context)); 219 ProxyScriptFetcher::Create(context));
220 220
221 // Set the maximum response size to 50 bytes. 221 // Set the maximum response size to 50 bytes.
222 int prev_size = ProxyScriptFetcher::SetSizeConstraintForUnittest(50); 222 int prev_size = ProxyScriptFetcher::SetSizeConstraintForUnittest(50);
223 223
224 // These two URLs are the same file, but are http:// vs file:// 224 // These two URLs are the same file, but are http:// vs file://
225 GURL urls[] = { 225 GURL urls[] = {
226 server->TestServerPage("files/large-pac.nsproxy"), 226 server->TestServerPage("files/large-pac.nsproxy"),
227 GetTestFileUrl("large-pac.nsproxy") 227 GetTestFileUrl("large-pac.nsproxy")
228 }; 228 };
229 229
230 // Try fetching URLs that are 101 bytes large. We should abort the request 230 // Try fetching URLs that are 101 bytes large. We should abort the request
231 // after 50 bytes have been read, and fail with a too large error. 231 // after 50 bytes have been read, and fail with a too large error.
232 for (size_t i = 0; i < arraysize(urls); ++i) { 232 for (size_t i = 0; i < arraysize(urls); ++i) {
233 const GURL& url = urls[i]; 233 const GURL& url = urls[i];
234 std::string bytes; 234 string16 text;
235 TestCompletionCallback callback; 235 TestCompletionCallback callback;
236 int result = pac_fetcher->Fetch(url, &bytes, &callback); 236 int result = pac_fetcher->Fetch(url, &text, &callback);
237 EXPECT_EQ(ERR_IO_PENDING, result); 237 EXPECT_EQ(ERR_IO_PENDING, result);
238 EXPECT_EQ(ERR_FILE_TOO_BIG, callback.WaitForResult()); 238 EXPECT_EQ(ERR_FILE_TOO_BIG, callback.WaitForResult());
239 EXPECT_TRUE(bytes.empty()); 239 EXPECT_TRUE(text.empty());
240 } 240 }
241 241
242 // Restore the original size bound. 242 // Restore the original size bound.
243 ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size); 243 ProxyScriptFetcher::SetSizeConstraintForUnittest(prev_size);
244 244
245 { // Make sure we can still fetch regular URLs. 245 { // Make sure we can still fetch regular URLs.
246 GURL url = server->TestServerPage("files/pac.nsproxy"); 246 GURL url = server->TestServerPage("files/pac.nsproxy");
247 std::string bytes; 247 string16 text;
248 TestCompletionCallback callback; 248 TestCompletionCallback callback;
249 int result = pac_fetcher->Fetch(url, &bytes, &callback); 249 int result = pac_fetcher->Fetch(url, &text, &callback);
250 EXPECT_EQ(ERR_IO_PENDING, result); 250 EXPECT_EQ(ERR_IO_PENDING, result);
251 EXPECT_EQ(OK, callback.WaitForResult()); 251 EXPECT_EQ(OK, callback.WaitForResult());
252 EXPECT_EQ("-pac.nsproxy-\n", bytes); 252 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text);
253 } 253 }
254 } 254 }
255 255
256 TEST_F(ProxyScriptFetcherTest, Hang) { 256 TEST_F(ProxyScriptFetcherTest, Hang) {
257 scoped_refptr<HTTPTestServer> server = 257 scoped_refptr<HTTPTestServer> server =
258 HTTPTestServer::CreateServer(kDocRoot, NULL); 258 HTTPTestServer::CreateServer(kDocRoot, NULL);
259 ASSERT_TRUE(NULL != server.get()); 259 ASSERT_TRUE(NULL != server.get());
260 scoped_refptr<URLRequestContext> context = new RequestContext; 260 scoped_refptr<URLRequestContext> context = new RequestContext;
261 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 261 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
262 ProxyScriptFetcher::Create(context)); 262 ProxyScriptFetcher::Create(context));
263 263
264 // Set the timeout period to 0.5 seconds. 264 // Set the timeout period to 0.5 seconds.
265 int prev_timeout = 265 int prev_timeout =
266 ProxyScriptFetcher::SetTimeoutConstraintForUnittest(500); 266 ProxyScriptFetcher::SetTimeoutConstraintForUnittest(500);
267 267
268 // Try fetching a URL which takes 1.2 seconds. We should abort the request 268 // Try fetching a URL which takes 1.2 seconds. We should abort the request
269 // after 500 ms, and fail with a timeout error. 269 // after 500 ms, and fail with a timeout error.
270 { GURL url = server->TestServerPage("slow/proxy.pac?1.2"); 270 { GURL url = server->TestServerPage("slow/proxy.pac?1.2");
271 std::string bytes; 271 string16 text;
272 TestCompletionCallback callback; 272 TestCompletionCallback callback;
273 int result = pac_fetcher->Fetch(url, &bytes, &callback); 273 int result = pac_fetcher->Fetch(url, &text, &callback);
274 EXPECT_EQ(ERR_IO_PENDING, result); 274 EXPECT_EQ(ERR_IO_PENDING, result);
275 EXPECT_EQ(ERR_TIMED_OUT, callback.WaitForResult()); 275 EXPECT_EQ(ERR_TIMED_OUT, callback.WaitForResult());
276 EXPECT_TRUE(bytes.empty()); 276 EXPECT_TRUE(text.empty());
277 } 277 }
278 278
279 // Restore the original timeout period. 279 // Restore the original timeout period.
280 ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout); 280 ProxyScriptFetcher::SetTimeoutConstraintForUnittest(prev_timeout);
281 281
282 { // Make sure we can still fetch regular URLs. 282 { // Make sure we can still fetch regular URLs.
283 GURL url = server->TestServerPage("files/pac.nsproxy"); 283 GURL url = server->TestServerPage("files/pac.nsproxy");
284 std::string bytes; 284 string16 text;
285 TestCompletionCallback callback; 285 TestCompletionCallback callback;
286 int result = pac_fetcher->Fetch(url, &bytes, &callback); 286 int result = pac_fetcher->Fetch(url, &text, &callback);
287 EXPECT_EQ(ERR_IO_PENDING, result); 287 EXPECT_EQ(ERR_IO_PENDING, result);
288 EXPECT_EQ(OK, callback.WaitForResult()); 288 EXPECT_EQ(OK, callback.WaitForResult());
289 EXPECT_EQ("-pac.nsproxy-\n", bytes); 289 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text);
290 } 290 }
291 } 291 }
292 292
293 // The ProxyScriptFetcher should decode any content-codings 293 // The ProxyScriptFetcher should decode any content-codings
294 // (like gzip, bzip, etc.), and apply any charset conversions to yield 294 // (like gzip, bzip, etc.), and apply any charset conversions to yield
295 // UTF8. 295 // UTF8.
296 TEST_F(ProxyScriptFetcherTest, Encodings) { 296 TEST_F(ProxyScriptFetcherTest, Encodings) {
297 scoped_refptr<HTTPTestServer> server = 297 scoped_refptr<HTTPTestServer> server =
298 HTTPTestServer::CreateServer(kDocRoot, NULL); 298 HTTPTestServer::CreateServer(kDocRoot, NULL);
299 ASSERT_TRUE(NULL != server.get()); 299 ASSERT_TRUE(NULL != server.get());
300 scoped_refptr<URLRequestContext> context = new RequestContext; 300 scoped_refptr<URLRequestContext> context = new RequestContext;
301 scoped_ptr<ProxyScriptFetcher> pac_fetcher( 301 scoped_ptr<ProxyScriptFetcher> pac_fetcher(
302 ProxyScriptFetcher::Create(context)); 302 ProxyScriptFetcher::Create(context));
303 303
304 // Test a response that is gzip-encoded -- should get inflated. 304 // Test a response that is gzip-encoded -- should get inflated.
305 { 305 {
306 GURL url = server->TestServerPage("files/gzipped_pac"); 306 GURL url = server->TestServerPage("files/gzipped_pac");
307 std::string bytes; 307 string16 text;
308 TestCompletionCallback callback; 308 TestCompletionCallback callback;
309 int result = pac_fetcher->Fetch(url, &bytes, &callback); 309 int result = pac_fetcher->Fetch(url, &text, &callback);
310 EXPECT_EQ(ERR_IO_PENDING, result); 310 EXPECT_EQ(ERR_IO_PENDING, result);
311 EXPECT_EQ(OK, callback.WaitForResult()); 311 EXPECT_EQ(OK, callback.WaitForResult());
312 EXPECT_EQ("This data was gzipped.\n", bytes); 312 EXPECT_EQ(ASCIIToUTF16("This data was gzipped.\n"), text);
313 } 313 }
314 314
315 // Test a response that was served as UTF-16 (BE). It should 315 // Test a response that was served as UTF-16 (BE). It should
316 // be converted to UTF8. 316 // be converted to UTF8.
317 { 317 {
318 GURL url = server->TestServerPage("files/utf16be_pac"); 318 GURL url = server->TestServerPage("files/utf16be_pac");
319 std::string bytes; 319 string16 text;
320 TestCompletionCallback callback; 320 TestCompletionCallback callback;
321 int result = pac_fetcher->Fetch(url, &bytes, &callback); 321 int result = pac_fetcher->Fetch(url, &text, &callback);
322 EXPECT_EQ(ERR_IO_PENDING, result); 322 EXPECT_EQ(ERR_IO_PENDING, result);
323 EXPECT_EQ(OK, callback.WaitForResult()); 323 EXPECT_EQ(OK, callback.WaitForResult());
324 EXPECT_EQ("This was encoded as UTF-16BE.\n", bytes); 324 EXPECT_EQ(ASCIIToUTF16("This was encoded as UTF-16BE.\n"), text);
325 } 325 }
326 } 326 }
327 327
328 } // namespace net 328 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_script_fetcher.cc ('k') | net/proxy/proxy_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698