OLD | NEW |
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 "chrome/browser/extensions/updater/extension_downloader.h" | 5 #include "chrome/browser/extensions/updater/extension_downloader.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 << " for " << id_list; | 422 << " for " << id_list; |
423 } | 423 } |
424 | 424 |
425 manifest_fetcher_.reset(net::URLFetcher::Create( | 425 manifest_fetcher_.reset(net::URLFetcher::Create( |
426 kManifestFetcherId, manifests_queue_.active_request()->full_url(), | 426 kManifestFetcherId, manifests_queue_.active_request()->full_url(), |
427 net::URLFetcher::GET, this)); | 427 net::URLFetcher::GET, this)); |
428 manifest_fetcher_->SetRequestContext(request_context_); | 428 manifest_fetcher_->SetRequestContext(request_context_); |
429 manifest_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | | 429 manifest_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
430 net::LOAD_DO_NOT_SAVE_COOKIES | | 430 net::LOAD_DO_NOT_SAVE_COOKIES | |
431 net::LOAD_DISABLE_CACHE); | 431 net::LOAD_DISABLE_CACHE); |
| 432 // Update checks can be interrupted if a network change is detected; this is |
| 433 // common for the retail mode AppPack on ChromeOS. Retrying once should be |
| 434 // enough to recover in those cases; let the fetcher retry up to 3 times |
| 435 // just in case. http://crosbug.com/130602 |
| 436 manifest_fetcher_->SetAutomaticallyRetryOnNetworkChanges(3); |
432 manifest_fetcher_->Start(); | 437 manifest_fetcher_->Start(); |
433 } | 438 } |
434 | 439 |
435 void ExtensionDownloader::OnURLFetchComplete( | 440 void ExtensionDownloader::OnURLFetchComplete( |
436 const net::URLFetcher* source) { | 441 const net::URLFetcher* source) { |
437 VLOG(2) << source->GetResponseCode() << " " << source->GetURL(); | 442 VLOG(2) << source->GetResponseCode() << " " << source->GetURL(); |
438 | 443 |
439 if (source == manifest_fetcher_.get()) { | 444 if (source == manifest_fetcher_.get()) { |
440 std::string data; | 445 std::string data; |
441 source->GetResponseAsString(&data); | 446 source->GetResponseAsString(&data); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 } | 672 } |
668 | 673 |
669 void ExtensionDownloader::CreateExtensionFetcher() { | 674 void ExtensionDownloader::CreateExtensionFetcher() { |
670 extension_fetcher_.reset(net::URLFetcher::Create( | 675 extension_fetcher_.reset(net::URLFetcher::Create( |
671 kExtensionFetcherId, extensions_queue_.active_request()->url, | 676 kExtensionFetcherId, extensions_queue_.active_request()->url, |
672 net::URLFetcher::GET, this)); | 677 net::URLFetcher::GET, this)); |
673 extension_fetcher_->SetRequestContext(request_context_); | 678 extension_fetcher_->SetRequestContext(request_context_); |
674 extension_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | | 679 extension_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
675 net::LOAD_DO_NOT_SAVE_COOKIES | | 680 net::LOAD_DO_NOT_SAVE_COOKIES | |
676 net::LOAD_DISABLE_CACHE); | 681 net::LOAD_DISABLE_CACHE); |
| 682 extension_fetcher_->SetAutomaticallyRetryOnNetworkChanges(3); |
677 // Download CRX files to a temp file. The blacklist is small and will be | 683 // Download CRX files to a temp file. The blacklist is small and will be |
678 // processed in memory, so it is fetched into a string. | 684 // processed in memory, so it is fetched into a string. |
679 if (extensions_queue_.active_request()->id != kBlacklistAppID) { | 685 if (extensions_queue_.active_request()->id != kBlacklistAppID) { |
680 extension_fetcher_->SaveResponseToTemporaryFile( | 686 extension_fetcher_->SaveResponseToTemporaryFile( |
681 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)); | 687 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE)); |
682 } | 688 } |
683 | 689 |
684 VLOG(2) << "Starting fetch of " << extensions_queue_.active_request()->url | 690 VLOG(2) << "Starting fetch of " << extensions_queue_.active_request()->url |
685 << " for " << extensions_queue_.active_request()->id; | 691 << " for " << extensions_queue_.active_request()->id; |
686 | 692 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 void ExtensionDownloader::NotifyUpdateFound(const std::string& id, | 770 void ExtensionDownloader::NotifyUpdateFound(const std::string& id, |
765 const std::string& version) { | 771 const std::string& version) { |
766 UpdateDetails updateInfo(id, Version(version)); | 772 UpdateDetails updateInfo(id, Version(version)); |
767 content::NotificationService::current()->Notify( | 773 content::NotificationService::current()->Notify( |
768 chrome::NOTIFICATION_EXTENSION_UPDATE_FOUND, | 774 chrome::NOTIFICATION_EXTENSION_UPDATE_FOUND, |
769 content::NotificationService::AllBrowserContextsAndSources(), | 775 content::NotificationService::AllBrowserContextsAndSources(), |
770 content::Details<UpdateDetails>(&updateInfo)); | 776 content::Details<UpdateDetails>(&updateInfo)); |
771 } | 777 } |
772 | 778 |
773 } // namespace extensions | 779 } // namespace extensions |
OLD | NEW |