Index: chrome/browser/chromeos/imageburner/burn_manager.cc |
diff --git a/chrome/browser/chromeos/imageburner/burn_manager.cc b/chrome/browser/chromeos/imageburner/burn_manager.cc |
index 3bc090b7bcebab68e6c312d65ed09247b4faa8ea..d786111a911094c702f5135d0e9be9541040bd57 100644 |
--- a/chrome/browser/chromeos/imageburner/burn_manager.cc |
+++ b/chrome/browser/chromeos/imageburner/burn_manager.cc |
@@ -8,18 +8,19 @@ |
#include "base/file_util.h" |
#include "base/path_service.h" |
#include "base/string_util.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/download/download_util.h" |
-#include "chrome/browser/tab_contents/tab_util.h" |
#include "chrome/common/chrome_paths.h" |
#include "content/browser/download/download_types.h" |
-#include "content/browser/renderer_host/render_view_host.h" |
#include "content/public/browser/browser_context.h" |
#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/render_process_host.h" |
+#include "content/public/browser/download_manager.h" |
#include "content/public/browser/web_contents.h" |
+#include "content/public/common/url_fetcher.h" |
+#include "net/base/file_stream.h" |
+#include "net/url_request/url_request_status.h" |
using content::BrowserThread; |
-using content::DownloadItem; |
using content::DownloadManager; |
using content::WebContents; |
@@ -31,7 +32,6 @@ namespace { |
const char kConfigFileUrl[] = |
"https://dl.google.com/dl/edgedl/chromeos/recovery/recovery.conf"; |
const char kTempImageFolderName[] = "chromeos_image"; |
-const char kConfigFileName[] = "recovery.conf"; |
BurnManager* g_burn_manager = NULL; |
@@ -43,16 +43,6 @@ void CreateDirectory(const FilePath& path, |
base::Bind(callback, success)); |
} |
-// Reads file content and calls |callback| with the result on UI thread. |
-void ReadFile(const FilePath& path, |
- base::Callback<void(bool success, |
- const std::string& file_content)> callback) { |
- std::string file_content; |
- const bool success = file_util::ReadFileToString(path, &file_content); |
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
- base::Bind(callback, success, file_content)); |
-} |
- |
// Creates a FileStream and calls |callback| with the result on UI thread. |
void CreateFileStream( |
const FilePath& file_path, |
@@ -229,12 +219,7 @@ void StateMachine::OnCancelation() { |
BurnManager::BurnManager() |
: weak_ptr_factory_(this), |
- download_manager_(NULL), |
- download_item_observer_added_(false), |
- active_download_item_(NULL), |
config_file_url_(kConfigFileUrl), |
- config_file_requested_(false), |
- config_file_fetched_(false), |
state_machine_(new StateMachine()), |
downloader_(NULL) { |
} |
@@ -243,10 +228,6 @@ BurnManager::~BurnManager() { |
if (!image_dir_.empty()) { |
file_util::Delete(image_dir_, true); |
} |
- if (active_download_item_) |
- active_download_item_->RemoveObserver(this); |
- if (download_manager_) |
- download_manager_->RemoveObserver(this); |
} |
// static |
@@ -275,49 +256,6 @@ BurnManager* BurnManager::GetInstance() { |
return g_burn_manager; |
} |
-void BurnManager::OnDownloadUpdated(DownloadItem* download) { |
- if (download->IsCancelled()) { |
- ConfigFileFetched(false, ""); |
- DCHECK(!download_item_observer_added_); |
- DCHECK(active_download_item_ == NULL); |
- } else if (download->IsComplete()) { |
- OnConfigFileDownloaded(); |
- } |
-} |
- |
-void BurnManager::OnConfigFileDownloaded() { |
- BrowserThread::PostBlockingPoolTask( |
- FROM_HERE, |
- base::Bind(ReadFile, |
- config_file_path_, |
- base::Bind(&BurnManager::ConfigFileFetched, |
- weak_ptr_factory_.GetWeakPtr()))); |
-} |
- |
-void BurnManager::ModelChanged(DownloadManager* manager) { |
- DCHECK_EQ(download_manager_, manager); |
- |
- std::vector<DownloadItem*> downloads; |
- download_manager_->GetTemporaryDownloads(GetImageDir(), &downloads); |
- if (download_item_observer_added_) |
- return; |
- for (std::vector<DownloadItem*>::const_iterator it = downloads.begin(); |
- it != downloads.end(); |
- ++it) { |
- if ((*it)->GetURL() == config_file_url_) { |
- download_item_observer_added_ = true; |
- (*it)->AddObserver(this); |
- active_download_item_ = *it; |
- break; |
- } |
- } |
-} |
- |
-void BurnManager::OnBurnDownloadStarted(bool success) { |
- if (!success) |
- ConfigFileFetched(false, ""); |
-} |
- |
void BurnManager::CreateImageDir(Delegate* delegate) { |
if (image_dir_.empty()) { |
CHECK(PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &image_dir_)); |
@@ -343,39 +281,38 @@ const FilePath& BurnManager::GetImageDir() { |
return image_dir_; |
} |
-void BurnManager::FetchConfigFile(WebContents* web_contents, |
- Delegate* delegate) { |
- if (config_file_fetched_) { |
+void BurnManager::FetchConfigFile(Delegate* delegate) { |
+ if (config_file_fetched()) { |
delegate->OnConfigFileFetched(config_file_, true); |
return; |
} |
downloaders_.push_back(delegate->AsWeakPtr()); |
- if (config_file_requested_) |
+ if (config_fetcher_.get()) |
return; |
- config_file_requested_ = true; |
- config_file_path_ = GetImageDir().Append(kConfigFileName); |
- download_manager_ = web_contents->GetBrowserContext()->GetDownloadManager(); |
- download_manager_->AddObserver(this); |
- downloader()->AddListener(this, config_file_url_); |
- downloader()->DownloadFile(config_file_url_, config_file_path_, web_contents); |
+ config_fetcher_.reset(content::URLFetcher::Create( |
+ config_file_url_, content::URLFetcher::GET, this)); |
+ config_fetcher_->StartWithRequestContextGetter( |
+ g_browser_process->system_request_context()); |
+} |
+ |
+void BurnManager::OnURLFetchComplete(const content::URLFetcher* source) { |
+ if (source == config_fetcher_.get()) { |
+ std::string data; |
+ const bool success = |
+ source->GetStatus().status() == net::URLRequestStatus::SUCCESS; |
+ if (success) |
+ config_fetcher_->GetResponseAsString(&data); |
+ config_fetcher_.reset(); |
+ ConfigFileFetched(success, data); |
+ } |
} |
void BurnManager::ConfigFileFetched(bool fetched, const std::string& content) { |
- if (config_file_fetched_) |
+ if (config_file_fetched()) |
return; |
- if (active_download_item_) { |
- active_download_item_->RemoveObserver(this); |
- active_download_item_ = NULL; |
- } |
- download_item_observer_added_ = false; |
- if (download_manager_) |
- download_manager_->RemoveObserver(this); |
- |
- config_file_fetched_ = fetched; |
- |
if (fetched) { |
config_file_.reset(content); |
} else { |