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

Side by Side Diff: content/browser/download/download_resource_handler.cc

Issue 351863002: Added SERVER_UNAUTHORIZED download interrupt reason. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixup for history_unittest Created 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/download/download_resource_handler.h" 5 #include "content/browser/download/download_resource_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 if (status.status() == net::URLRequestStatus::CANCELED && 376 if (status.status() == net::URLRequestStatus::CANCELED &&
377 status.error() == net::ERR_ABORTED) { 377 status.error() == net::ERR_ABORTED) {
378 // CANCELED + ERR_ABORTED == something outside of the network 378 // CANCELED + ERR_ABORTED == something outside of the network
379 // stack cancelled the request. There aren't that many things that 379 // stack cancelled the request. There aren't that many things that
380 // could do this to a download request (whose lifetime is separated from 380 // could do this to a download request (whose lifetime is separated from
381 // the tab from which it came). We map this to USER_CANCELLED as the 381 // the tab from which it came). We map this to USER_CANCELLED as the
382 // case we know about (system suspend because of laptop close) corresponds 382 // case we know about (system suspend because of laptop close) corresponds
383 // to a user action. 383 // to a user action.
384 // TODO(ahendrickson) -- Find a better set of codes to use here, as 384 // TODO(ahendrickson) -- Find a better set of codes to use here, as
385 // CANCELED/ERR_ABORTED can occur for reasons other than user cancel. 385 // CANCELED/ERR_ABORTED can occur for reasons other than user cancel.
386 reason = DOWNLOAD_INTERRUPT_REASON_USER_CANCELED; 386 if (net::IsCertStatusError(request()->ssl_info().cert_status))
387 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_CERT_PROBLEM;
388 else
389 reason = DOWNLOAD_INTERRUPT_REASON_USER_CANCELED;
387 } 390 }
388 391
389 if (status.is_success() && 392 if (status.is_success() &&
390 reason == DOWNLOAD_INTERRUPT_REASON_NONE && 393 reason == DOWNLOAD_INTERRUPT_REASON_NONE &&
391 request()->response_headers()) { 394 request()->response_headers()) {
392 // Handle server's response codes. 395 // Handle server's response codes.
393 switch(response_code) { 396 switch(response_code) {
394 case -1: // Non-HTTP request. 397 case -1: // Non-HTTP request.
395 case net::HTTP_OK: 398 case net::HTTP_OK:
396 case net::HTTP_CREATED: 399 case net::HTTP_CREATED:
(...skipping 10 matching lines...) Expand all
407 case net::HTTP_PRECONDITION_FAILED: 410 case net::HTTP_PRECONDITION_FAILED:
408 // Failed our 'If-Unmodified-Since' or 'If-Match'; see 411 // Failed our 'If-Unmodified-Since' or 'If-Match'; see
409 // download_manager_impl.cc BeginDownload() 412 // download_manager_impl.cc BeginDownload()
410 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_PRECONDITION; 413 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_PRECONDITION;
411 break; 414 break;
412 case net::HTTP_REQUESTED_RANGE_NOT_SATISFIABLE: 415 case net::HTTP_REQUESTED_RANGE_NOT_SATISFIABLE:
413 // Retry by downloading from the start automatically: 416 // Retry by downloading from the start automatically:
414 // If we haven't received data when we get this error, we won't. 417 // If we haven't received data when we get this error, we won't.
415 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE; 418 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE;
416 break; 419 break;
420 case net::HTTP_UNAUTHORIZED:
421 // Server didn't authorize this request.
422 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED;
423 break;
417 default: // All other errors. 424 default: // All other errors.
418 // Redirection and informational codes should have been handled earlier 425 // Redirection and informational codes should have been handled earlier
419 // in the stack. 426 // in the stack.
420 DCHECK_NE(3, response_code / 100); 427 DCHECK_NE(3, response_code / 100);
421 DCHECK_NE(1, response_code / 100); 428 DCHECK_NE(1, response_code / 100);
422 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED; 429 reason = DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED;
423 break; 430 break;
424 } 431 }
425 } 432 }
426 433
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 // tab_info_ must be destroyed on UI thread, since 535 // tab_info_ must be destroyed on UI thread, since
529 // InitializeDownloadTabInfoOnUIThread might still be using it. 536 // InitializeDownloadTabInfoOnUIThread might still be using it.
530 if (tab_info_) 537 if (tab_info_)
531 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, tab_info_); 538 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, tab_info_);
532 539
533 UMA_HISTOGRAM_TIMES("SB2.DownloadDuration", 540 UMA_HISTOGRAM_TIMES("SB2.DownloadDuration",
534 base::TimeTicks::Now() - download_start_time_); 541 base::TimeTicks::Now() - download_start_time_);
535 } 542 }
536 543
537 } // namespace content 544 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_item_impl.cc ('k') | content/public/browser/download_interrupt_reason_values.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698