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

Side by Side Diff: content/common/net/url_fetcher_unittest.cc

Issue 8375039: Create a content::UrlFetcher interface that lives in content/public/common and convert users to i... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: review comments Created 9 years, 1 month 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 | « content/common/net/url_fetcher.cc ('k') | content/content_common.gypi » ('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) 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 "content/common/net/url_fetcher.h" 5 #include "content/common/net/url_fetcher.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop_proxy.h" 8 #include "base/message_loop_proxy.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "base/threading/thread.h" 10 #include "base/threading/thread.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 URLFetcherTest() : fetcher_(NULL) { } 64 URLFetcherTest() : fetcher_(NULL) { }
65 65
66 static int GetNumFetcherCores() { 66 static int GetNumFetcherCores() {
67 return URLFetcher::GetNumFetcherCores(); 67 return URLFetcher::GetNumFetcherCores();
68 } 68 }
69 69
70 // Creates a URLFetcher, using the program's main thread to do IO. 70 // Creates a URLFetcher, using the program's main thread to do IO.
71 virtual void CreateFetcher(const GURL& url); 71 virtual void CreateFetcher(const GURL& url);
72 72
73 // content::URLFetcherDelegate 73 // content::URLFetcherDelegate
74 virtual void OnURLFetchComplete(const URLFetcher* source); 74 virtual void OnURLFetchComplete(const content::URLFetcher* source);
75 75
76 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy() { 76 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy() {
77 return io_message_loop_proxy_; 77 return io_message_loop_proxy_;
78 } 78 }
79 79
80 protected: 80 protected:
81 virtual void SetUp() { 81 virtual void SetUp() {
82 testing::Test::SetUp(); 82 testing::Test::SetUp();
83 83
84 io_message_loop_proxy_ = base::MessageLoopProxy::current(); 84 io_message_loop_proxy_ = base::MessageLoopProxy::current();
(...skipping 15 matching lines...) Expand all
100 // dispatches its requests to. When we wish to simulate being used from 100 // dispatches its requests to. When we wish to simulate being used from
101 // a UI thread, we dispatch a worker thread to do so. 101 // a UI thread, we dispatch a worker thread to do so.
102 MessageLoopForIO io_loop_; 102 MessageLoopForIO io_loop_;
103 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; 103 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_;
104 104
105 URLFetcher* fetcher_; 105 URLFetcher* fetcher_;
106 }; 106 };
107 107
108 void URLFetcherTest::CreateFetcher(const GURL& url) { 108 void URLFetcherTest::CreateFetcher(const GURL& url) {
109 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 109 fetcher_ = new URLFetcher(url, URLFetcher::GET, this);
110 fetcher_->set_request_context(new TestURLRequestContextGetter( 110 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
111 io_message_loop_proxy())); 111 io_message_loop_proxy()));
112 fetcher_->Start(); 112 fetcher_->Start();
113 } 113 }
114 114
115 void URLFetcherTest::OnURLFetchComplete(const URLFetcher* source) { 115 void URLFetcherTest::OnURLFetchComplete(const content::URLFetcher* source) {
116 EXPECT_TRUE(source->status().is_success()); 116 EXPECT_TRUE(source->GetStatus().is_success());
117 EXPECT_EQ(200, source->response_code()); // HTTP OK 117 EXPECT_EQ(200, source->GetResponseCode()); // HTTP OK
118 118
119 std::string data; 119 std::string data;
120 EXPECT_TRUE(source->GetResponseAsString(&data)); 120 EXPECT_TRUE(source->GetResponseAsString(&data));
121 EXPECT_FALSE(data.empty()); 121 EXPECT_FALSE(data.empty());
122 122
123 delete fetcher_; // Have to delete this here and not in the destructor, 123 delete fetcher_; // Have to delete this here and not in the destructor,
124 // because the destructor won't necessarily run on the 124 // because the destructor won't necessarily run on the
125 // same thread that CreateFetcher() did. 125 // same thread that CreateFetcher() did.
126 126
127 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 127 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
128 // If the current message loop is not the IO loop, it will be shut down when 128 // If the current message loop is not the IO loop, it will be shut down when
129 // the main loop returns and this thread subsequently goes out of scope. 129 // the main loop returns and this thread subsequently goes out of scope.
130 } 130 }
131 131
132 namespace { 132 namespace {
133 133
134 // Version of URLFetcherTest that does a POST instead 134 // Version of URLFetcherTest that does a POST instead
135 class URLFetcherPostTest : public URLFetcherTest { 135 class URLFetcherPostTest : public URLFetcherTest {
136 public: 136 public:
137 virtual void CreateFetcher(const GURL& url); 137 virtual void CreateFetcher(const GURL& url);
138 138
139 // content::URLFetcherDelegate 139 // content::URLFetcherDelegate
140 virtual void OnURLFetchComplete(const URLFetcher* source); 140 virtual void OnURLFetchComplete(const content::URLFetcher* source);
141 }; 141 };
142 142
143 // Version of URLFetcherTest that tests headers. 143 // Version of URLFetcherTest that tests headers.
144 class URLFetcherHeadersTest : public URLFetcherTest { 144 class URLFetcherHeadersTest : public URLFetcherTest {
145 public: 145 public:
146 // content::URLFetcherDelegate 146 // content::URLFetcherDelegate
147 virtual void OnURLFetchComplete(const URLFetcher* source); 147 virtual void OnURLFetchComplete(const content::URLFetcher* source);
148 }; 148 };
149 149
150 // Version of URLFetcherTest that tests SocketAddress. 150 // Version of URLFetcherTest that tests SocketAddress.
151 class URLFetcherSocketAddressTest : public URLFetcherTest { 151 class URLFetcherSocketAddressTest : public URLFetcherTest {
152 public: 152 public:
153 // content::URLFetcherDelegate 153 // content::URLFetcherDelegate
154 virtual void OnURLFetchComplete(const URLFetcher* source); 154 virtual void OnURLFetchComplete(const content::URLFetcher* source);
155 protected: 155 protected:
156 std::string expected_host_; 156 std::string expected_host_;
157 uint16 expected_port_; 157 uint16 expected_port_;
158 }; 158 };
159 159
160 // Version of URLFetcherTest that tests overload protection. 160 // Version of URLFetcherTest that tests overload protection.
161 class URLFetcherProtectTest : public URLFetcherTest { 161 class URLFetcherProtectTest : public URLFetcherTest {
162 public: 162 public:
163 virtual void CreateFetcher(const GURL& url); 163 virtual void CreateFetcher(const GURL& url);
164 // content::URLFetcherDelegate 164 // content::URLFetcherDelegate
165 virtual void OnURLFetchComplete(const URLFetcher* source); 165 virtual void OnURLFetchComplete(const content::URLFetcher* source);
166 private: 166 private:
167 Time start_time_; 167 Time start_time_;
168 }; 168 };
169 169
170 // Version of URLFetcherTest that tests overload protection, when responses 170 // Version of URLFetcherTest that tests overload protection, when responses
171 // passed through. 171 // passed through.
172 class URLFetcherProtectTestPassedThrough : public URLFetcherTest { 172 class URLFetcherProtectTestPassedThrough : public URLFetcherTest {
173 public: 173 public:
174 virtual void CreateFetcher(const GURL& url); 174 virtual void CreateFetcher(const GURL& url);
175 // content::URLFetcherDelegate 175 // content::URLFetcherDelegate
176 virtual void OnURLFetchComplete(const URLFetcher* source); 176 virtual void OnURLFetchComplete(const content::URLFetcher* source);
177 private: 177 private:
178 Time start_time_; 178 Time start_time_;
179 }; 179 };
180 180
181 // Version of URLFetcherTest that tests bad HTTPS requests. 181 // Version of URLFetcherTest that tests bad HTTPS requests.
182 class URLFetcherBadHTTPSTest : public URLFetcherTest { 182 class URLFetcherBadHTTPSTest : public URLFetcherTest {
183 public: 183 public:
184 URLFetcherBadHTTPSTest(); 184 URLFetcherBadHTTPSTest();
185 185
186 // content::URLFetcherDelegate 186 // content::URLFetcherDelegate
187 virtual void OnURLFetchComplete(const URLFetcher* source); 187 virtual void OnURLFetchComplete(const content::URLFetcher* source);
188 188
189 private: 189 private:
190 FilePath cert_dir_; 190 FilePath cert_dir_;
191 }; 191 };
192 192
193 // Version of URLFetcherTest that tests request cancellation on shutdown. 193 // Version of URLFetcherTest that tests request cancellation on shutdown.
194 class URLFetcherCancelTest : public URLFetcherTest { 194 class URLFetcherCancelTest : public URLFetcherTest {
195 public: 195 public:
196 virtual void CreateFetcher(const GURL& url); 196 virtual void CreateFetcher(const GURL& url);
197 // content::URLFetcherDelegate 197 // content::URLFetcherDelegate
198 virtual void OnURLFetchComplete(const URLFetcher* source); 198 virtual void OnURLFetchComplete(const content::URLFetcher* source);
199 199
200 void CancelRequest(); 200 void CancelRequest();
201 }; 201 };
202 202
203 // Version of TestURLRequestContext that posts a Quit task to the IO 203 // Version of TestURLRequestContext that posts a Quit task to the IO
204 // thread once it is deleted. 204 // thread once it is deleted.
205 class CancelTestURLRequestContext : public TestURLRequestContext { 205 class CancelTestURLRequestContext : public TestURLRequestContext {
206 virtual ~CancelTestURLRequestContext() { 206 virtual ~CancelTestURLRequestContext() {
207 // The d'tor should execute in the IO thread. Post the quit task to the 207 // The d'tor should execute in the IO thread. Post the quit task to the
208 // current thread. 208 // current thread.
(...skipping 27 matching lines...) Expand all
236 236
237 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; 237 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_;
238 base::WaitableEvent context_created_; 238 base::WaitableEvent context_created_;
239 scoped_refptr<net::URLRequestContext> context_; 239 scoped_refptr<net::URLRequestContext> context_;
240 }; 240 };
241 241
242 // Version of URLFetcherTest that tests retying the same request twice. 242 // Version of URLFetcherTest that tests retying the same request twice.
243 class URLFetcherMultipleAttemptTest : public URLFetcherTest { 243 class URLFetcherMultipleAttemptTest : public URLFetcherTest {
244 public: 244 public:
245 // content::URLFetcherDelegate 245 // content::URLFetcherDelegate
246 virtual void OnURLFetchComplete(const URLFetcher* source); 246 virtual void OnURLFetchComplete(const content::URLFetcher* source);
247 private: 247 private:
248 std::string data_; 248 std::string data_;
249 }; 249 };
250 250
251 class URLFetcherTempFileTest : public URLFetcherTest { 251 class URLFetcherTempFileTest : public URLFetcherTest {
252 public: 252 public:
253 URLFetcherTempFileTest() 253 URLFetcherTempFileTest()
254 : take_ownership_of_temp_file_(false) { 254 : take_ownership_of_temp_file_(false) {
255 } 255 }
256 256
257 // content::URLFetcherDelegate 257 // content::URLFetcherDelegate
258 virtual void OnURLFetchComplete(const URLFetcher* source); 258 virtual void OnURLFetchComplete(const content::URLFetcher* source);
259 259
260 virtual void CreateFetcher(const GURL& url); 260 virtual void CreateFetcher(const GURL& url);
261 261
262 protected: 262 protected:
263 FilePath expected_file_; 263 FilePath expected_file_;
264 FilePath temp_file_; 264 FilePath temp_file_;
265 265
266 // Set by the test. Used in OnURLFetchComplete() to decide if 266 // Set by the test. Used in OnURLFetchComplete() to decide if
267 // the URLFetcher should own the temp file, so that we can test 267 // the URLFetcher should own the temp file, so that we can test
268 // disowning prevents the file from being deleted. 268 // disowning prevents the file from being deleted.
269 bool take_ownership_of_temp_file_; 269 bool take_ownership_of_temp_file_;
270 }; 270 };
271 271
272 void URLFetcherTempFileTest::CreateFetcher(const GURL& url) { 272 void URLFetcherTempFileTest::CreateFetcher(const GURL& url) {
273 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 273 fetcher_ = new URLFetcher(url, URLFetcher::GET, this);
274 fetcher_->set_request_context(new TestURLRequestContextGetter( 274 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
275 io_message_loop_proxy())); 275 io_message_loop_proxy()));
276 276
277 // Use the IO message loop to do the file operations in this test. 277 // Use the IO message loop to do the file operations in this test.
278 fetcher_->SaveResponseToTemporaryFile(io_message_loop_proxy()); 278 fetcher_->SaveResponseToTemporaryFile(io_message_loop_proxy());
279 fetcher_->Start(); 279 fetcher_->Start();
280 } 280 }
281 281
282 TEST_F(URLFetcherTempFileTest, SmallGet) { 282 TEST_F(URLFetcherTempFileTest, SmallGet) {
283 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 283 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
284 ASSERT_TRUE(test_server.Start()); 284 ASSERT_TRUE(test_server.Start());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 test_->CreateFetcher(url_); 339 test_->CreateFetcher(url_);
340 } 340 }
341 341
342 private: 342 private:
343 URLFetcherTest* test_; 343 URLFetcherTest* test_;
344 GURL url_; 344 GURL url_;
345 }; 345 };
346 346
347 void URLFetcherPostTest::CreateFetcher(const GURL& url) { 347 void URLFetcherPostTest::CreateFetcher(const GURL& url) {
348 fetcher_ = new URLFetcher(url, URLFetcher::POST, this); 348 fetcher_ = new URLFetcher(url, URLFetcher::POST, this);
349 fetcher_->set_request_context(new TestURLRequestContextGetter( 349 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
350 io_message_loop_proxy())); 350 io_message_loop_proxy()));
351 fetcher_->set_upload_data("application/x-www-form-urlencoded", 351 fetcher_->SetUploadData("application/x-www-form-urlencoded",
352 "bobsyeruncle"); 352 "bobsyeruncle");
353 fetcher_->Start(); 353 fetcher_->Start();
354 } 354 }
355 355
356 void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source) { 356 void URLFetcherPostTest::OnURLFetchComplete(const content::URLFetcher* source) {
357 std::string data; 357 std::string data;
358 EXPECT_TRUE(source->GetResponseAsString(&data)); 358 EXPECT_TRUE(source->GetResponseAsString(&data));
359 EXPECT_EQ(std::string("bobsyeruncle"), data); 359 EXPECT_EQ(std::string("bobsyeruncle"), data);
360 URLFetcherTest::OnURLFetchComplete(source); 360 URLFetcherTest::OnURLFetchComplete(source);
361 } 361 }
362 362
363 void URLFetcherHeadersTest::OnURLFetchComplete(const URLFetcher* source) { 363 void URLFetcherHeadersTest::OnURLFetchComplete(const content::URLFetcher* source ) {
364 std::string header; 364 std::string header;
365 EXPECT_TRUE(source->response_headers()->GetNormalizedHeader("cache-control", 365 EXPECT_TRUE(source->GetResponseHeaders()->GetNormalizedHeader("cache-control",
366 &header)); 366 &header));
367 EXPECT_EQ("private", header); 367 EXPECT_EQ("private", header);
368 URLFetcherTest::OnURLFetchComplete(source); 368 URLFetcherTest::OnURLFetchComplete(source);
369 } 369 }
370 370
371 void URLFetcherSocketAddressTest::OnURLFetchComplete(const URLFetcher* source) { 371 void URLFetcherSocketAddressTest::OnURLFetchComplete(
372 EXPECT_EQ("127.0.0.1", source->socket_address().host()); 372 const content::URLFetcher* source) {
373 EXPECT_EQ(expected_port_, source->socket_address().port()); 373 EXPECT_EQ("127.0.0.1", source->GetSocketAddress().host());
374 EXPECT_EQ(expected_port_, source->GetSocketAddress().port());
374 URLFetcherTest::OnURLFetchComplete(source); 375 URLFetcherTest::OnURLFetchComplete(source);
375 } 376 }
376 377
377 void URLFetcherProtectTest::CreateFetcher(const GURL& url) { 378 void URLFetcherProtectTest::CreateFetcher(const GURL& url) {
378 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 379 fetcher_ = new URLFetcher(url, URLFetcher::GET, this);
379 fetcher_->set_request_context(new TestURLRequestContextGetter( 380 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
380 io_message_loop_proxy())); 381 io_message_loop_proxy()));
381 start_time_ = Time::Now(); 382 start_time_ = Time::Now();
382 fetcher_->set_max_retries(11); 383 fetcher_->SetMaxRetries(11);
383 fetcher_->Start(); 384 fetcher_->Start();
384 } 385 }
385 386
386 void URLFetcherProtectTest::OnURLFetchComplete(const URLFetcher* source) { 387 void URLFetcherProtectTest::OnURLFetchComplete(
388 const content::URLFetcher* source) {
387 const TimeDelta one_second = TimeDelta::FromMilliseconds(1000); 389 const TimeDelta one_second = TimeDelta::FromMilliseconds(1000);
388 if (source->response_code() >= 500) { 390 if (source->GetResponseCode() >= 500) {
389 // Now running ServerUnavailable test. 391 // Now running ServerUnavailable test.
390 // It takes more than 1 second to finish all 11 requests. 392 // It takes more than 1 second to finish all 11 requests.
391 EXPECT_TRUE(Time::Now() - start_time_ >= one_second); 393 EXPECT_TRUE(Time::Now() - start_time_ >= one_second);
392 EXPECT_TRUE(source->status().is_success()); 394 EXPECT_TRUE(source->GetStatus().is_success());
393 std::string data; 395 std::string data;
394 EXPECT_TRUE(source->GetResponseAsString(&data)); 396 EXPECT_TRUE(source->GetResponseAsString(&data));
395 EXPECT_FALSE(data.empty()); 397 EXPECT_FALSE(data.empty());
396 delete fetcher_; 398 delete fetcher_;
397 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 399 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
398 } else { 400 } else {
399 // Now running Overload test. 401 // Now running Overload test.
400 static int count = 0; 402 static int count = 0;
401 count++; 403 count++;
402 if (count < 20) { 404 if (count < 20) {
403 fetcher_->StartWithRequestContextGetter(new TestURLRequestContextGetter( 405 fetcher_->StartWithRequestContextGetter(new TestURLRequestContextGetter(
404 io_message_loop_proxy())); 406 io_message_loop_proxy()));
405 } else { 407 } else {
406 // We have already sent 20 requests continuously. And we expect that 408 // We have already sent 20 requests continuously. And we expect that
407 // it takes more than 1 second due to the overload protection settings. 409 // it takes more than 1 second due to the overload protection settings.
408 EXPECT_TRUE(Time::Now() - start_time_ >= one_second); 410 EXPECT_TRUE(Time::Now() - start_time_ >= one_second);
409 URLFetcherTest::OnURLFetchComplete(source); 411 URLFetcherTest::OnURLFetchComplete(source);
410 } 412 }
411 } 413 }
412 } 414 }
413 415
414 void URLFetcherProtectTestPassedThrough::CreateFetcher(const GURL& url) { 416 void URLFetcherProtectTestPassedThrough::CreateFetcher(const GURL& url) {
415 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 417 fetcher_ = new URLFetcher(url, URLFetcher::GET, this);
416 fetcher_->set_request_context(new TestURLRequestContextGetter( 418 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
417 io_message_loop_proxy())); 419 io_message_loop_proxy()));
418 fetcher_->set_automatically_retry_on_5xx(false); 420 fetcher_->SetAutomaticallyRetryOn5xx(false);
419 start_time_ = Time::Now(); 421 start_time_ = Time::Now();
420 fetcher_->set_max_retries(11); 422 fetcher_->SetMaxRetries(11);
421 fetcher_->Start(); 423 fetcher_->Start();
422 } 424 }
423 425
424 void URLFetcherProtectTestPassedThrough::OnURLFetchComplete( 426 void URLFetcherProtectTestPassedThrough::OnURLFetchComplete(
425 const URLFetcher* source) { 427 const content::URLFetcher* source) {
426 const TimeDelta one_minute = TimeDelta::FromMilliseconds(60000); 428 const TimeDelta one_minute = TimeDelta::FromMilliseconds(60000);
427 if (source->response_code() >= 500) { 429 if (source->GetResponseCode() >= 500) {
428 // Now running ServerUnavailable test. 430 // Now running ServerUnavailable test.
429 // It should get here on the first attempt, so almost immediately and 431 // It should get here on the first attempt, so almost immediately and
430 // *not* to attempt to execute all 11 requests (2.5 minutes). 432 // *not* to attempt to execute all 11 requests (2.5 minutes).
431 EXPECT_TRUE(Time::Now() - start_time_ < one_minute); 433 EXPECT_TRUE(Time::Now() - start_time_ < one_minute);
432 EXPECT_TRUE(source->status().is_success()); 434 EXPECT_TRUE(source->GetStatus().is_success());
433 // Check that suggested back off time is bigger than 0. 435 // Check that suggested back off time is bigger than 0.
434 EXPECT_GT(fetcher_->backoff_delay().InMicroseconds(), 0); 436 EXPECT_GT(fetcher_->GetBackoffDelay().InMicroseconds(), 0);
435 std::string data; 437 std::string data;
436 EXPECT_TRUE(source->GetResponseAsString(&data)); 438 EXPECT_TRUE(source->GetResponseAsString(&data));
437 EXPECT_FALSE(data.empty()); 439 EXPECT_FALSE(data.empty());
438 } else { 440 } else {
439 // We should not get here! 441 // We should not get here!
440 ADD_FAILURE(); 442 ADD_FAILURE();
441 } 443 }
442 444
443 delete fetcher_; 445 delete fetcher_;
444 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 446 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
445 } 447 }
446 448
447 449
448 URLFetcherBadHTTPSTest::URLFetcherBadHTTPSTest() { 450 URLFetcherBadHTTPSTest::URLFetcherBadHTTPSTest() {
449 PathService::Get(base::DIR_SOURCE_ROOT, &cert_dir_); 451 PathService::Get(base::DIR_SOURCE_ROOT, &cert_dir_);
450 cert_dir_ = cert_dir_.AppendASCII("chrome"); 452 cert_dir_ = cert_dir_.AppendASCII("chrome");
451 cert_dir_ = cert_dir_.AppendASCII("test"); 453 cert_dir_ = cert_dir_.AppendASCII("test");
452 cert_dir_ = cert_dir_.AppendASCII("data"); 454 cert_dir_ = cert_dir_.AppendASCII("data");
453 cert_dir_ = cert_dir_.AppendASCII("ssl"); 455 cert_dir_ = cert_dir_.AppendASCII("ssl");
454 cert_dir_ = cert_dir_.AppendASCII("certificates"); 456 cert_dir_ = cert_dir_.AppendASCII("certificates");
455 } 457 }
456 458
457 // The "server certificate expired" error should result in automatic 459 // The "server certificate expired" error should result in automatic
458 // cancellation of the request by 460 // cancellation of the request by
459 // net::URLRequest::Delegate::OnSSLCertificateError. 461 // net::URLRequest::Delegate::OnSSLCertificateError.
460 void URLFetcherBadHTTPSTest::OnURLFetchComplete(const URLFetcher* source) { 462 void URLFetcherBadHTTPSTest::OnURLFetchComplete(
463 const content::URLFetcher* source) {
461 // This part is different from URLFetcherTest::OnURLFetchComplete 464 // This part is different from URLFetcherTest::OnURLFetchComplete
462 // because this test expects the request to be cancelled. 465 // because this test expects the request to be cancelled.
463 EXPECT_EQ(net::URLRequestStatus::CANCELED, source->status().status()); 466 EXPECT_EQ(net::URLRequestStatus::CANCELED, source->GetStatus().status());
464 EXPECT_EQ(net::ERR_ABORTED, source->status().error()); 467 EXPECT_EQ(net::ERR_ABORTED, source->GetStatus().error());
465 EXPECT_EQ(-1, source->response_code()); 468 EXPECT_EQ(-1, source->GetResponseCode());
466 EXPECT_TRUE(source->cookies().empty()); 469 EXPECT_TRUE(source->GetCookies().empty());
467 std::string data; 470 std::string data;
468 EXPECT_TRUE(source->GetResponseAsString(&data)); 471 EXPECT_TRUE(source->GetResponseAsString(&data));
469 EXPECT_TRUE(data.empty()); 472 EXPECT_TRUE(data.empty());
470 473
471 // The rest is the same as URLFetcherTest::OnURLFetchComplete. 474 // The rest is the same as URLFetcherTest::OnURLFetchComplete.
472 delete fetcher_; 475 delete fetcher_;
473 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 476 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
474 } 477 }
475 478
476 void URLFetcherCancelTest::CreateFetcher(const GURL& url) { 479 void URLFetcherCancelTest::CreateFetcher(const GURL& url) {
477 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 480 fetcher_ = new URLFetcher(url, URLFetcher::GET, this);
478 CancelTestURLRequestContextGetter* context_getter = 481 CancelTestURLRequestContextGetter* context_getter =
479 new CancelTestURLRequestContextGetter(io_message_loop_proxy()); 482 new CancelTestURLRequestContextGetter(io_message_loop_proxy());
480 fetcher_->set_request_context(context_getter); 483 fetcher_->SetRequestContext(context_getter);
481 fetcher_->set_max_retries(2); 484 fetcher_->SetMaxRetries(2);
482 fetcher_->Start(); 485 fetcher_->Start();
483 // We need to wait for the creation of the net::URLRequestContext, since we 486 // We need to wait for the creation of the net::URLRequestContext, since we
484 // rely on it being destroyed as a signal to end the test. 487 // rely on it being destroyed as a signal to end the test.
485 context_getter->WaitForContextCreation(); 488 context_getter->WaitForContextCreation();
486 CancelRequest(); 489 CancelRequest();
487 } 490 }
488 491
489 void URLFetcherCancelTest::OnURLFetchComplete(const URLFetcher* source) { 492 void URLFetcherCancelTest::OnURLFetchComplete(
493 const content::URLFetcher* source) {
490 // We should have cancelled the request before completion. 494 // We should have cancelled the request before completion.
491 ADD_FAILURE(); 495 ADD_FAILURE();
492 delete fetcher_; 496 delete fetcher_;
493 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 497 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
494 } 498 }
495 499
496 void URLFetcherCancelTest::CancelRequest() { 500 void URLFetcherCancelTest::CancelRequest() {
497 delete fetcher_; 501 delete fetcher_;
498 // The URLFetcher's test context will post a Quit task once it is 502 // The URLFetcher's test context will post a Quit task once it is
499 // deleted. So if this test simply hangs, it means cancellation 503 // deleted. So if this test simply hangs, it means cancellation
500 // did not work. 504 // did not work.
501 } 505 }
502 506
503 void URLFetcherMultipleAttemptTest::OnURLFetchComplete( 507 void URLFetcherMultipleAttemptTest::OnURLFetchComplete(
504 const URLFetcher* source) { 508 const content::URLFetcher* source) {
505 EXPECT_TRUE(source->status().is_success()); 509 EXPECT_TRUE(source->GetStatus().is_success());
506 EXPECT_EQ(200, source->response_code()); // HTTP OK 510 EXPECT_EQ(200, source->GetResponseCode()); // HTTP OK
507 std::string data; 511 std::string data;
508 EXPECT_TRUE(source->GetResponseAsString(&data)); 512 EXPECT_TRUE(source->GetResponseAsString(&data));
509 EXPECT_FALSE(data.empty()); 513 EXPECT_FALSE(data.empty());
510 if (!data.empty() && data_.empty()) { 514 if (!data.empty() && data_.empty()) {
511 data_ = data; 515 data_ = data;
512 fetcher_->StartWithRequestContextGetter( 516 fetcher_->StartWithRequestContextGetter(
513 new TestURLRequestContextGetter(io_message_loop_proxy())); 517 new TestURLRequestContextGetter(io_message_loop_proxy()));
514 } else { 518 } else {
515 EXPECT_EQ(data, data_); 519 EXPECT_EQ(data, data_);
516 delete fetcher_; // Have to delete this here and not in the destructor, 520 delete fetcher_; // Have to delete this here and not in the destructor,
517 // because the destructor won't necessarily run on the 521 // because the destructor won't necessarily run on the
518 // same thread that CreateFetcher() did. 522 // same thread that CreateFetcher() did.
519 523
520 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 524 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
521 // If the current message loop is not the IO loop, it will be shut down when 525 // If the current message loop is not the IO loop, it will be shut down when
522 // the main loop returns and this thread subsequently goes out of scope. 526 // the main loop returns and this thread subsequently goes out of scope.
523 } 527 }
524 } 528 }
525 529
526 void URLFetcherTempFileTest::OnURLFetchComplete(const URLFetcher* source) { 530 void URLFetcherTempFileTest::OnURLFetchComplete(
527 EXPECT_TRUE(source->status().is_success()); 531 const content::URLFetcher* source) {
528 EXPECT_EQ(source->response_code(), 200); 532 EXPECT_TRUE(source->GetStatus().is_success());
533 EXPECT_EQ(source->GetResponseCode(), 200);
529 534
530 EXPECT_TRUE(source->GetResponseAsFilePath( 535 EXPECT_TRUE(source->GetResponseAsFilePath(
531 take_ownership_of_temp_file_, &temp_file_)); 536 take_ownership_of_temp_file_, &temp_file_));
532 537
533 EXPECT_TRUE(file_util::ContentsEqual(expected_file_, temp_file_)); 538 EXPECT_TRUE(file_util::ContentsEqual(expected_file_, temp_file_));
534 539
535 delete fetcher_; 540 delete fetcher_;
536 541
537 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 542 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
538 } 543 }
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 FROM_HERE, 792 FROM_HERE,
788 base::Bind(&CancelAllOnIO), 793 base::Bind(&CancelAllOnIO),
789 base::Bind(&MessageLoop::Quit, 794 base::Bind(&MessageLoop::Quit,
790 base::Unretained(MessageLoop::current()))); 795 base::Unretained(MessageLoop::current())));
791 MessageLoop::current()->Run(); 796 MessageLoop::current()->Run();
792 EXPECT_EQ(0, GetNumFetcherCores()); 797 EXPECT_EQ(0, GetNumFetcherCores());
793 delete fetcher_; 798 delete fetcher_;
794 } 799 }
795 800
796 } // namespace. 801 } // namespace.
OLDNEW
« no previous file with comments | « content/common/net/url_fetcher.cc ('k') | content/content_common.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698