OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/automation/url_request_automation_job.h" | 5 #include "chrome/browser/automation/url_request_automation_job.h" |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/time.h" | 8 #include "base/time.h" |
9 #include "chrome/browser/automation/automation_resource_message_filter.h" | 9 #include "chrome/browser/automation/automation_resource_message_filter.h" |
10 #include "chrome/browser/renderer_host/render_view_host.h" | 10 #include "chrome/browser/renderer_host/render_view_host.h" |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 | 313 |
314 NotifyReadComplete(bytes_to_copy); | 314 NotifyReadComplete(bytes_to_copy); |
315 } | 315 } |
316 } | 316 } |
317 | 317 |
318 void URLRequestAutomationJob::OnRequestEnd( | 318 void URLRequestAutomationJob::OnRequestEnd( |
319 int tab, int id, const URLRequestStatus& status) { | 319 int tab, int id, const URLRequestStatus& status) { |
320 DLOG(INFO) << "URLRequestAutomationJob: " << | 320 DLOG(INFO) << "URLRequestAutomationJob: " << |
321 request_->url().spec() << " - request end. Status: " << status.status(); | 321 request_->url().spec() << " - request end. Status: " << status.status(); |
322 | 322 |
| 323 // TODO(tommi): When we hit certificate errors, notify the delegate via |
| 324 // OnSSLCertificateError(). Right now we don't have the certificate |
| 325 // so we don't. We could possibly call OnSSLCertificateError with a NULL |
| 326 // certificate, but I'm not sure if all implementations expect it. |
| 327 // if (status.status() == URLRequestStatus::FAILED && |
| 328 // net::IsCertificateError(status.os_error()) && request_->delegate()) { |
| 329 // request_->delegate()->OnSSLCertificateError(request_, status.os_error(), |
| 330 // NULL); |
| 331 // } |
| 332 |
323 DisconnectFromMessageFilter(); | 333 DisconnectFromMessageFilter(); |
324 NotifyDone(status); | 334 NotifyDone(status); |
325 | 335 |
326 // Reset any pending reads. | 336 // Reset any pending reads. |
327 if (pending_buf_) { | 337 if (pending_buf_) { |
328 pending_buf_ = NULL; | 338 pending_buf_ = NULL; |
329 pending_buf_size_ = 0; | 339 pending_buf_size_ = 0; |
330 NotifyReadComplete(0); | 340 NotifyReadComplete(0); |
331 } | 341 } |
332 } | 342 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 message_filter_->RegisterRequest(this); | 374 message_filter_->RegisterRequest(this); |
365 | 375 |
366 // Strip unwanted headers. | 376 // Strip unwanted headers. |
367 std::string new_request_headers( | 377 std::string new_request_headers( |
368 net::HttpUtil::StripHeaders(request_->extra_request_headers(), | 378 net::HttpUtil::StripHeaders(request_->extra_request_headers(), |
369 kFilteredHeaderStrings, | 379 kFilteredHeaderStrings, |
370 arraysize(kFilteredHeaderStrings))); | 380 arraysize(kFilteredHeaderStrings))); |
371 | 381 |
372 // Ensure that we do not send username and password fields in the referrer. | 382 // Ensure that we do not send username and password fields in the referrer. |
373 GURL referrer(request_->GetSanitizedReferrer()); | 383 GURL referrer(request_->GetSanitizedReferrer()); |
374 #ifndef NDEBUG | 384 |
375 // The referrer header should be suppressed if the preceding URL was | 385 // The referrer header must be suppressed if the preceding URL was |
376 // a secure one and the new one is not. | 386 // a secure one and the new one is not. |
377 if (referrer.SchemeIsSecure() && !request_->url().SchemeIsSecure()) { | 387 if (referrer.SchemeIsSecure() && !request_->url().SchemeIsSecure()) { |
378 DCHECK(referrer.spec().empty()); | 388 DLOG(INFO) << |
| 389 "Suppressing referrer header since going from secure to non-secure"; |
| 390 referrer = GURL(); |
379 } | 391 } |
380 #endif | |
381 | 392 |
382 // Ask automation to start this request. | 393 // Ask automation to start this request. |
383 IPC::AutomationURLRequest automation_request = { | 394 IPC::AutomationURLRequest automation_request = { |
384 request_->url().spec(), | 395 request_->url().spec(), |
385 request_->method(), | 396 request_->method(), |
386 referrer.spec(), | 397 referrer.spec(), |
387 new_request_headers, | 398 new_request_headers, |
388 request_->get_upload() | 399 request_->get_upload() |
389 }; | 400 }; |
390 | 401 |
391 DCHECK(message_filter_); | 402 DCHECK(message_filter_); |
392 message_filter_->Send(new AutomationMsg_RequestStart(0, tab_, id_, | 403 message_filter_->Send(new AutomationMsg_RequestStart(0, tab_, id_, |
393 automation_request)); | 404 automation_request)); |
394 } | 405 } |
395 | 406 |
396 void URLRequestAutomationJob::DisconnectFromMessageFilter() { | 407 void URLRequestAutomationJob::DisconnectFromMessageFilter() { |
397 if (message_filter_) { | 408 if (message_filter_) { |
398 message_filter_->UnRegisterRequest(this); | 409 message_filter_->UnRegisterRequest(this); |
399 message_filter_ = NULL; | 410 message_filter_ = NULL; |
400 } | 411 } |
401 } | 412 } |
OLD | NEW |