| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_impl.h" | 5 #include "net/proxy/proxy_script_fetcher_impl.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 protected: | 128 protected: |
| 129 TestServer test_server_; | 129 TestServer test_server_; |
| 130 }; | 130 }; |
| 131 | 131 |
| 132 TEST_F(ProxyScriptFetcherImplTest, FileUrl) { | 132 TEST_F(ProxyScriptFetcherImplTest, FileUrl) { |
| 133 scoped_refptr<URLRequestContext> context(new RequestContext); | 133 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 134 ProxyScriptFetcherImpl pac_fetcher(context); | 134 ProxyScriptFetcherImpl pac_fetcher(context); |
| 135 | 135 |
| 136 { // Fetch a non-existent file. | 136 { // Fetch a non-existent file. |
| 137 string16 text; | 137 string16 text; |
| 138 TestOldCompletionCallback callback; | 138 TestCompletionCallback callback; |
| 139 int result = pac_fetcher.Fetch(GetTestFileUrl("does-not-exist"), | 139 int result = pac_fetcher.Fetch(GetTestFileUrl("does-not-exist"), |
| 140 &text, &callback); | 140 &text, callback.callback()); |
| 141 EXPECT_EQ(ERR_IO_PENDING, result); | 141 EXPECT_EQ(ERR_IO_PENDING, result); |
| 142 EXPECT_EQ(ERR_FILE_NOT_FOUND, callback.WaitForResult()); | 142 EXPECT_EQ(ERR_FILE_NOT_FOUND, callback.WaitForResult()); |
| 143 EXPECT_TRUE(text.empty()); | 143 EXPECT_TRUE(text.empty()); |
| 144 } | 144 } |
| 145 { // Fetch a file that exists. | 145 { // Fetch a file that exists. |
| 146 string16 text; | 146 string16 text; |
| 147 TestOldCompletionCallback callback; | 147 TestCompletionCallback callback; |
| 148 int result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt"), | 148 int result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt"), |
| 149 &text, &callback); | 149 &text, callback.callback()); |
| 150 EXPECT_EQ(ERR_IO_PENDING, result); | 150 EXPECT_EQ(ERR_IO_PENDING, result); |
| 151 EXPECT_EQ(OK, callback.WaitForResult()); | 151 EXPECT_EQ(OK, callback.WaitForResult()); |
| 152 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text); | 152 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text); |
| 153 } | 153 } |
| 154 } | 154 } |
| 155 | 155 |
| 156 // Note that all mime types are allowed for PAC file, to be consistent | 156 // Note that all mime types are allowed for PAC file, to be consistent |
| 157 // with other browsers. | 157 // with other browsers. |
| 158 TEST_F(ProxyScriptFetcherImplTest, HttpMimeType) { | 158 TEST_F(ProxyScriptFetcherImplTest, HttpMimeType) { |
| 159 ASSERT_TRUE(test_server_.Start()); | 159 ASSERT_TRUE(test_server_.Start()); |
| 160 | 160 |
| 161 scoped_refptr<URLRequestContext> context(new RequestContext); | 161 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 162 ProxyScriptFetcherImpl pac_fetcher(context); | 162 ProxyScriptFetcherImpl pac_fetcher(context); |
| 163 | 163 |
| 164 { // Fetch a PAC with mime type "text/plain" | 164 { // Fetch a PAC with mime type "text/plain" |
| 165 GURL url(test_server_.GetURL("files/pac.txt")); | 165 GURL url(test_server_.GetURL("files/pac.txt")); |
| 166 string16 text; | 166 string16 text; |
| 167 TestOldCompletionCallback callback; | 167 TestCompletionCallback callback; |
| 168 int result = pac_fetcher.Fetch(url, &text, &callback); | 168 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 169 EXPECT_EQ(ERR_IO_PENDING, result); | 169 EXPECT_EQ(ERR_IO_PENDING, result); |
| 170 EXPECT_EQ(OK, callback.WaitForResult()); | 170 EXPECT_EQ(OK, callback.WaitForResult()); |
| 171 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text); | 171 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text); |
| 172 } | 172 } |
| 173 { // Fetch a PAC with mime type "text/html" | 173 { // Fetch a PAC with mime type "text/html" |
| 174 GURL url(test_server_.GetURL("files/pac.html")); | 174 GURL url(test_server_.GetURL("files/pac.html")); |
| 175 string16 text; | 175 string16 text; |
| 176 TestOldCompletionCallback callback; | 176 TestCompletionCallback callback; |
| 177 int result = pac_fetcher.Fetch(url, &text, &callback); | 177 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 178 EXPECT_EQ(ERR_IO_PENDING, result); | 178 EXPECT_EQ(ERR_IO_PENDING, result); |
| 179 EXPECT_EQ(OK, callback.WaitForResult()); | 179 EXPECT_EQ(OK, callback.WaitForResult()); |
| 180 EXPECT_EQ(ASCIIToUTF16("-pac.html-\n"), text); | 180 EXPECT_EQ(ASCIIToUTF16("-pac.html-\n"), text); |
| 181 } | 181 } |
| 182 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" | 182 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" |
| 183 GURL url(test_server_.GetURL("files/pac.nsproxy")); | 183 GURL url(test_server_.GetURL("files/pac.nsproxy")); |
| 184 string16 text; | 184 string16 text; |
| 185 TestOldCompletionCallback callback; | 185 TestCompletionCallback callback; |
| 186 int result = pac_fetcher.Fetch(url, &text, &callback); | 186 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 187 EXPECT_EQ(ERR_IO_PENDING, result); | 187 EXPECT_EQ(ERR_IO_PENDING, result); |
| 188 EXPECT_EQ(OK, callback.WaitForResult()); | 188 EXPECT_EQ(OK, callback.WaitForResult()); |
| 189 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); | 189 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 | 192 |
| 193 TEST_F(ProxyScriptFetcherImplTest, HttpStatusCode) { | 193 TEST_F(ProxyScriptFetcherImplTest, HttpStatusCode) { |
| 194 ASSERT_TRUE(test_server_.Start()); | 194 ASSERT_TRUE(test_server_.Start()); |
| 195 | 195 |
| 196 scoped_refptr<URLRequestContext> context(new RequestContext); | 196 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 197 ProxyScriptFetcherImpl pac_fetcher(context); | 197 ProxyScriptFetcherImpl pac_fetcher(context); |
| 198 | 198 |
| 199 { // Fetch a PAC which gives a 500 -- FAIL | 199 { // Fetch a PAC which gives a 500 -- FAIL |
| 200 GURL url(test_server_.GetURL("files/500.pac")); | 200 GURL url(test_server_.GetURL("files/500.pac")); |
| 201 string16 text; | 201 string16 text; |
| 202 TestOldCompletionCallback callback; | 202 TestCompletionCallback callback; |
| 203 int result = pac_fetcher.Fetch(url, &text, &callback); | 203 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 204 EXPECT_EQ(ERR_IO_PENDING, result); | 204 EXPECT_EQ(ERR_IO_PENDING, result); |
| 205 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); | 205 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); |
| 206 EXPECT_TRUE(text.empty()); | 206 EXPECT_TRUE(text.empty()); |
| 207 } | 207 } |
| 208 { // Fetch a PAC which gives a 404 -- FAIL | 208 { // Fetch a PAC which gives a 404 -- FAIL |
| 209 GURL url(test_server_.GetURL("files/404.pac")); | 209 GURL url(test_server_.GetURL("files/404.pac")); |
| 210 string16 text; | 210 string16 text; |
| 211 TestOldCompletionCallback callback; | 211 TestCompletionCallback callback; |
| 212 int result = pac_fetcher.Fetch(url, &text, &callback); | 212 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 213 EXPECT_EQ(ERR_IO_PENDING, result); | 213 EXPECT_EQ(ERR_IO_PENDING, result); |
| 214 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); | 214 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); |
| 215 EXPECT_TRUE(text.empty()); | 215 EXPECT_TRUE(text.empty()); |
| 216 } | 216 } |
| 217 } | 217 } |
| 218 | 218 |
| 219 TEST_F(ProxyScriptFetcherImplTest, ContentDisposition) { | 219 TEST_F(ProxyScriptFetcherImplTest, ContentDisposition) { |
| 220 ASSERT_TRUE(test_server_.Start()); | 220 ASSERT_TRUE(test_server_.Start()); |
| 221 | 221 |
| 222 scoped_refptr<URLRequestContext> context(new RequestContext); | 222 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 223 ProxyScriptFetcherImpl pac_fetcher(context); | 223 ProxyScriptFetcherImpl pac_fetcher(context); |
| 224 | 224 |
| 225 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should | 225 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should |
| 226 // have no effect. | 226 // have no effect. |
| 227 GURL url(test_server_.GetURL("files/downloadable.pac")); | 227 GURL url(test_server_.GetURL("files/downloadable.pac")); |
| 228 string16 text; | 228 string16 text; |
| 229 TestOldCompletionCallback callback; | 229 TestCompletionCallback callback; |
| 230 int result = pac_fetcher.Fetch(url, &text, &callback); | 230 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 231 EXPECT_EQ(ERR_IO_PENDING, result); | 231 EXPECT_EQ(ERR_IO_PENDING, result); |
| 232 EXPECT_EQ(OK, callback.WaitForResult()); | 232 EXPECT_EQ(OK, callback.WaitForResult()); |
| 233 EXPECT_EQ(ASCIIToUTF16("-downloadable.pac-\n"), text); | 233 EXPECT_EQ(ASCIIToUTF16("-downloadable.pac-\n"), text); |
| 234 } | 234 } |
| 235 | 235 |
| 236 TEST_F(ProxyScriptFetcherImplTest, NoCache) { | 236 TEST_F(ProxyScriptFetcherImplTest, NoCache) { |
| 237 ASSERT_TRUE(test_server_.Start()); | 237 ASSERT_TRUE(test_server_.Start()); |
| 238 | 238 |
| 239 scoped_refptr<URLRequestContext> context(new RequestContext); | 239 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 240 ProxyScriptFetcherImpl pac_fetcher(context); | 240 ProxyScriptFetcherImpl pac_fetcher(context); |
| 241 | 241 |
| 242 // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour. | 242 // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour. |
| 243 GURL url(test_server_.GetURL("files/cacheable_1hr.pac")); | 243 GURL url(test_server_.GetURL("files/cacheable_1hr.pac")); |
| 244 { | 244 { |
| 245 string16 text; | 245 string16 text; |
| 246 TestOldCompletionCallback callback; | 246 TestCompletionCallback callback; |
| 247 int result = pac_fetcher.Fetch(url, &text, &callback); | 247 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 248 EXPECT_EQ(ERR_IO_PENDING, result); | 248 EXPECT_EQ(ERR_IO_PENDING, result); |
| 249 EXPECT_EQ(OK, callback.WaitForResult()); | 249 EXPECT_EQ(OK, callback.WaitForResult()); |
| 250 EXPECT_EQ(ASCIIToUTF16("-cacheable_1hr.pac-\n"), text); | 250 EXPECT_EQ(ASCIIToUTF16("-cacheable_1hr.pac-\n"), text); |
| 251 } | 251 } |
| 252 | 252 |
| 253 // Now kill the HTTP server. | 253 // Now kill the HTTP server. |
| 254 ASSERT_TRUE(test_server_.Stop()); | 254 ASSERT_TRUE(test_server_.Stop()); |
| 255 | 255 |
| 256 // Try to fetch the file again -- if should fail, since the server is not | 256 // Try to fetch the file again -- if should fail, since the server is not |
| 257 // running anymore. (If it were instead being loaded from cache, we would | 257 // running anymore. (If it were instead being loaded from cache, we would |
| 258 // get a success. | 258 // get a success. |
| 259 { | 259 { |
| 260 string16 text; | 260 string16 text; |
| 261 TestOldCompletionCallback callback; | 261 TestCompletionCallback callback; |
| 262 int result = pac_fetcher.Fetch(url, &text, &callback); | 262 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 263 EXPECT_EQ(ERR_IO_PENDING, result); | 263 EXPECT_EQ(ERR_IO_PENDING, result); |
| 264 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult()); | 264 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult()); |
| 265 } | 265 } |
| 266 } | 266 } |
| 267 | 267 |
| 268 TEST_F(ProxyScriptFetcherImplTest, TooLarge) { | 268 TEST_F(ProxyScriptFetcherImplTest, TooLarge) { |
| 269 ASSERT_TRUE(test_server_.Start()); | 269 ASSERT_TRUE(test_server_.Start()); |
| 270 | 270 |
| 271 scoped_refptr<URLRequestContext> context(new RequestContext); | 271 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 272 ProxyScriptFetcherImpl pac_fetcher(context); | 272 ProxyScriptFetcherImpl pac_fetcher(context); |
| 273 | 273 |
| 274 // Set the maximum response size to 50 bytes. | 274 // Set the maximum response size to 50 bytes. |
| 275 int prev_size = pac_fetcher.SetSizeConstraint(50); | 275 int prev_size = pac_fetcher.SetSizeConstraint(50); |
| 276 | 276 |
| 277 // These two URLs are the same file, but are http:// vs file:// | 277 // These two URLs are the same file, but are http:// vs file:// |
| 278 GURL urls[] = { | 278 GURL urls[] = { |
| 279 test_server_.GetURL("files/large-pac.nsproxy"), | 279 test_server_.GetURL("files/large-pac.nsproxy"), |
| 280 GetTestFileUrl("large-pac.nsproxy") | 280 GetTestFileUrl("large-pac.nsproxy") |
| 281 }; | 281 }; |
| 282 | 282 |
| 283 // Try fetching URLs that are 101 bytes large. We should abort the request | 283 // Try fetching URLs that are 101 bytes large. We should abort the request |
| 284 // after 50 bytes have been read, and fail with a too large error. | 284 // after 50 bytes have been read, and fail with a too large error. |
| 285 for (size_t i = 0; i < arraysize(urls); ++i) { | 285 for (size_t i = 0; i < arraysize(urls); ++i) { |
| 286 const GURL& url = urls[i]; | 286 const GURL& url = urls[i]; |
| 287 string16 text; | 287 string16 text; |
| 288 TestOldCompletionCallback callback; | 288 TestCompletionCallback callback; |
| 289 int result = pac_fetcher.Fetch(url, &text, &callback); | 289 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 290 EXPECT_EQ(ERR_IO_PENDING, result); | 290 EXPECT_EQ(ERR_IO_PENDING, result); |
| 291 EXPECT_EQ(ERR_FILE_TOO_BIG, callback.WaitForResult()); | 291 EXPECT_EQ(ERR_FILE_TOO_BIG, callback.WaitForResult()); |
| 292 EXPECT_TRUE(text.empty()); | 292 EXPECT_TRUE(text.empty()); |
| 293 } | 293 } |
| 294 | 294 |
| 295 // Restore the original size bound. | 295 // Restore the original size bound. |
| 296 pac_fetcher.SetSizeConstraint(prev_size); | 296 pac_fetcher.SetSizeConstraint(prev_size); |
| 297 | 297 |
| 298 { // Make sure we can still fetch regular URLs. | 298 { // Make sure we can still fetch regular URLs. |
| 299 GURL url(test_server_.GetURL("files/pac.nsproxy")); | 299 GURL url(test_server_.GetURL("files/pac.nsproxy")); |
| 300 string16 text; | 300 string16 text; |
| 301 TestOldCompletionCallback callback; | 301 TestCompletionCallback callback; |
| 302 int result = pac_fetcher.Fetch(url, &text, &callback); | 302 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 303 EXPECT_EQ(ERR_IO_PENDING, result); | 303 EXPECT_EQ(ERR_IO_PENDING, result); |
| 304 EXPECT_EQ(OK, callback.WaitForResult()); | 304 EXPECT_EQ(OK, callback.WaitForResult()); |
| 305 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); | 305 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); |
| 306 } | 306 } |
| 307 } | 307 } |
| 308 | 308 |
| 309 TEST_F(ProxyScriptFetcherImplTest, Hang) { | 309 TEST_F(ProxyScriptFetcherImplTest, Hang) { |
| 310 ASSERT_TRUE(test_server_.Start()); | 310 ASSERT_TRUE(test_server_.Start()); |
| 311 | 311 |
| 312 scoped_refptr<URLRequestContext> context(new RequestContext); | 312 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 313 ProxyScriptFetcherImpl pac_fetcher(context); | 313 ProxyScriptFetcherImpl pac_fetcher(context); |
| 314 | 314 |
| 315 // Set the timeout period to 0.5 seconds. | 315 // Set the timeout period to 0.5 seconds. |
| 316 base::TimeDelta prev_timeout = pac_fetcher.SetTimeoutConstraint( | 316 base::TimeDelta prev_timeout = pac_fetcher.SetTimeoutConstraint( |
| 317 base::TimeDelta::FromMilliseconds(500)); | 317 base::TimeDelta::FromMilliseconds(500)); |
| 318 | 318 |
| 319 // Try fetching a URL which takes 1.2 seconds. We should abort the request | 319 // Try fetching a URL which takes 1.2 seconds. We should abort the request |
| 320 // after 500 ms, and fail with a timeout error. | 320 // after 500 ms, and fail with a timeout error. |
| 321 { GURL url(test_server_.GetURL("slow/proxy.pac?1.2")); | 321 { GURL url(test_server_.GetURL("slow/proxy.pac?1.2")); |
| 322 string16 text; | 322 string16 text; |
| 323 TestOldCompletionCallback callback; | 323 TestCompletionCallback callback; |
| 324 int result = pac_fetcher.Fetch(url, &text, &callback); | 324 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 325 EXPECT_EQ(ERR_IO_PENDING, result); | 325 EXPECT_EQ(ERR_IO_PENDING, result); |
| 326 EXPECT_EQ(ERR_TIMED_OUT, callback.WaitForResult()); | 326 EXPECT_EQ(ERR_TIMED_OUT, callback.WaitForResult()); |
| 327 EXPECT_TRUE(text.empty()); | 327 EXPECT_TRUE(text.empty()); |
| 328 } | 328 } |
| 329 | 329 |
| 330 // Restore the original timeout period. | 330 // Restore the original timeout period. |
| 331 pac_fetcher.SetTimeoutConstraint(prev_timeout); | 331 pac_fetcher.SetTimeoutConstraint(prev_timeout); |
| 332 | 332 |
| 333 { // Make sure we can still fetch regular URLs. | 333 { // Make sure we can still fetch regular URLs. |
| 334 GURL url(test_server_.GetURL("files/pac.nsproxy")); | 334 GURL url(test_server_.GetURL("files/pac.nsproxy")); |
| 335 string16 text; | 335 string16 text; |
| 336 TestOldCompletionCallback callback; | 336 TestCompletionCallback callback; |
| 337 int result = pac_fetcher.Fetch(url, &text, &callback); | 337 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 338 EXPECT_EQ(ERR_IO_PENDING, result); | 338 EXPECT_EQ(ERR_IO_PENDING, result); |
| 339 EXPECT_EQ(OK, callback.WaitForResult()); | 339 EXPECT_EQ(OK, callback.WaitForResult()); |
| 340 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); | 340 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); |
| 341 } | 341 } |
| 342 } | 342 } |
| 343 | 343 |
| 344 // The ProxyScriptFetcher should decode any content-codings | 344 // The ProxyScriptFetcher should decode any content-codings |
| 345 // (like gzip, bzip, etc.), and apply any charset conversions to yield | 345 // (like gzip, bzip, etc.), and apply any charset conversions to yield |
| 346 // UTF8. | 346 // UTF8. |
| 347 TEST_F(ProxyScriptFetcherImplTest, Encodings) { | 347 TEST_F(ProxyScriptFetcherImplTest, Encodings) { |
| 348 ASSERT_TRUE(test_server_.Start()); | 348 ASSERT_TRUE(test_server_.Start()); |
| 349 | 349 |
| 350 scoped_refptr<URLRequestContext> context(new RequestContext); | 350 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 351 ProxyScriptFetcherImpl pac_fetcher(context); | 351 ProxyScriptFetcherImpl pac_fetcher(context); |
| 352 | 352 |
| 353 // Test a response that is gzip-encoded -- should get inflated. | 353 // Test a response that is gzip-encoded -- should get inflated. |
| 354 { | 354 { |
| 355 GURL url(test_server_.GetURL("files/gzipped_pac")); | 355 GURL url(test_server_.GetURL("files/gzipped_pac")); |
| 356 string16 text; | 356 string16 text; |
| 357 TestOldCompletionCallback callback; | 357 TestCompletionCallback callback; |
| 358 int result = pac_fetcher.Fetch(url, &text, &callback); | 358 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 359 EXPECT_EQ(ERR_IO_PENDING, result); | 359 EXPECT_EQ(ERR_IO_PENDING, result); |
| 360 EXPECT_EQ(OK, callback.WaitForResult()); | 360 EXPECT_EQ(OK, callback.WaitForResult()); |
| 361 EXPECT_EQ(ASCIIToUTF16("This data was gzipped.\n"), text); | 361 EXPECT_EQ(ASCIIToUTF16("This data was gzipped.\n"), text); |
| 362 } | 362 } |
| 363 | 363 |
| 364 // Test a response that was served as UTF-16 (BE). It should | 364 // Test a response that was served as UTF-16 (BE). It should |
| 365 // be converted to UTF8. | 365 // be converted to UTF8. |
| 366 { | 366 { |
| 367 GURL url(test_server_.GetURL("files/utf16be_pac")); | 367 GURL url(test_server_.GetURL("files/utf16be_pac")); |
| 368 string16 text; | 368 string16 text; |
| 369 TestOldCompletionCallback callback; | 369 TestCompletionCallback callback; |
| 370 int result = pac_fetcher.Fetch(url, &text, &callback); | 370 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 371 EXPECT_EQ(ERR_IO_PENDING, result); | 371 EXPECT_EQ(ERR_IO_PENDING, result); |
| 372 EXPECT_EQ(OK, callback.WaitForResult()); | 372 EXPECT_EQ(OK, callback.WaitForResult()); |
| 373 EXPECT_EQ(ASCIIToUTF16("This was encoded as UTF-16BE.\n"), text); | 373 EXPECT_EQ(ASCIIToUTF16("This was encoded as UTF-16BE.\n"), text); |
| 374 } | 374 } |
| 375 } | 375 } |
| 376 | 376 |
| 377 TEST_F(ProxyScriptFetcherImplTest, DataURLs) { | 377 TEST_F(ProxyScriptFetcherImplTest, DataURLs) { |
| 378 scoped_refptr<URLRequestContext> context(new RequestContext); | 378 scoped_refptr<URLRequestContext> context(new RequestContext); |
| 379 ProxyScriptFetcherImpl pac_fetcher(context); | 379 ProxyScriptFetcherImpl pac_fetcher(context); |
| 380 | 380 |
| 381 const char kEncodedUrl[] = | 381 const char kEncodedUrl[] = |
| 382 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R" | 382 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R" |
| 383 "m9yVVJMKHVybCwgaG9zdCkgewogIGlmIChob3N0ID09ICdmb29iYXIuY29tJykKICAgIHJl" | 383 "m9yVVJMKHVybCwgaG9zdCkgewogIGlmIChob3N0ID09ICdmb29iYXIuY29tJykKICAgIHJl" |
| 384 "dHVybiAnUFJPWFkgYmxhY2tob2xlOjgwJzsKICByZXR1cm4gJ0RJUkVDVCc7Cn0="; | 384 "dHVybiAnUFJPWFkgYmxhY2tob2xlOjgwJzsKICByZXR1cm4gJ0RJUkVDVCc7Cn0="; |
| 385 const char kPacScript[] = | 385 const char kPacScript[] = |
| 386 "function FindProxyForURL(url, host) {\n" | 386 "function FindProxyForURL(url, host) {\n" |
| 387 " if (host == 'foobar.com')\n" | 387 " if (host == 'foobar.com')\n" |
| 388 " return 'PROXY blackhole:80';\n" | 388 " return 'PROXY blackhole:80';\n" |
| 389 " return 'DIRECT';\n" | 389 " return 'DIRECT';\n" |
| 390 "}"; | 390 "}"; |
| 391 | 391 |
| 392 // Test fetching a "data:"-url containing a base64 encoded PAC script. | 392 // Test fetching a "data:"-url containing a base64 encoded PAC script. |
| 393 { | 393 { |
| 394 GURL url(kEncodedUrl); | 394 GURL url(kEncodedUrl); |
| 395 string16 text; | 395 string16 text; |
| 396 TestOldCompletionCallback callback; | 396 TestCompletionCallback callback; |
| 397 int result = pac_fetcher.Fetch(url, &text, &callback); | 397 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 398 EXPECT_EQ(OK, result); | 398 EXPECT_EQ(OK, result); |
| 399 EXPECT_EQ(ASCIIToUTF16(kPacScript), text); | 399 EXPECT_EQ(ASCIIToUTF16(kPacScript), text); |
| 400 } | 400 } |
| 401 | 401 |
| 402 const char kEncodedUrlBroken[] = | 402 const char kEncodedUrlBroken[] = |
| 403 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R"; | 403 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R"; |
| 404 | 404 |
| 405 // Test a broken "data:"-url containing a base64 encoded PAC script. | 405 // Test a broken "data:"-url containing a base64 encoded PAC script. |
| 406 { | 406 { |
| 407 GURL url(kEncodedUrlBroken); | 407 GURL url(kEncodedUrlBroken); |
| 408 string16 text; | 408 string16 text; |
| 409 TestOldCompletionCallback callback; | 409 TestCompletionCallback callback; |
| 410 int result = pac_fetcher.Fetch(url, &text, &callback); | 410 int result = pac_fetcher.Fetch(url, &text, callback.callback()); |
| 411 EXPECT_EQ(ERR_FAILED, result); | 411 EXPECT_EQ(ERR_FAILED, result); |
| 412 } | 412 } |
| 413 } | 413 } |
| 414 | 414 |
| 415 } // namespace net | 415 } // namespace net |
| OLD | NEW |