Index: chrome/browser/chromeos/dom_ui/imageburner_ui.cc |
=================================================================== |
--- chrome/browser/chromeos/dom_ui/imageburner_ui.cc (revision 72694) |
+++ chrome/browser/chromeos/dom_ui/imageburner_ui.cc (working copy) |
@@ -28,68 +28,145 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
+static const char kPropertyPath[] = "path"; |
+static const char kPropertyTitle[] = "title"; |
+static const char kPropertyDirectory[] = "isDirectory"; |
+static const char kImageBaseURL[] = |
+ "http://chrome-master.mtv.corp.google.com/chromeos/dev-channel/"; |
+static const char kImageFetcherName[] = "LATEST-x86-generic"; |
+static const char kImageDownloadURL[] = |
+ "https://dl.google.com/dl/chromeos/recovery/latest_mario_beta_channel"; |
+static const char kImageFileName[] = "chromeos_image.bin.zip"; |
+static const char kTempImageFolderName[] = "chromeos_image"; |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// |
// ImageBurnUIHTMLSource |
// |
//////////////////////////////////////////////////////////////////////////////// |
-ImageBurnUIHTMLSource::ImageBurnUIHTMLSource() |
- : DataSource(chrome::kChromeUIImageBurnerHost, MessageLoop::current()) { |
-} |
+class ImageBurnUIHTMLSource : public ChromeURLDataManager::DataSource { |
+ public: |
+ ImageBurnUIHTMLSource() |
+ : DataSource(chrome::kChromeUIImageBurnerHost, MessageLoop::current()) { |
+ } |
-void ImageBurnUIHTMLSource::StartDataRequest(const std::string& path, |
- bool is_off_the_record, |
- int request_id) { |
- DictionaryValue localized_strings; |
- localized_strings.SetString("burnConfirmText1", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_CONFIM_BURN1)); |
- localized_strings.SetString("burnConfirmText2", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_CONFIM_BURN2)); |
- localized_strings.SetString("burnUnsuccessfulMessage", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_UNSUCCESSFUL)); |
- localized_strings.SetString("burnSuccessfulMessage", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_SUCCESSFUL)); |
- localized_strings.SetString("downloadAbortedMessage", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_UNSUCCESSFUL)); |
- localized_strings.SetString("title", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_TITLE)); |
- localized_strings.SetString("listTitle", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_ROOT_LIST_TITLE)); |
- localized_strings.SetString("downloadStatusStart", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_STARTING_STATUS)); |
- localized_strings.SetString("downloadStatusInProgress", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_IN_PROGRESS_STATUS)); |
- localized_strings.SetString("downloadStatusComplete", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_COMPLETE_STATUS)); |
- localized_strings.SetString("downloadStatusCanceled", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_CANCELED_STATUS)); |
- localized_strings.SetString("burnStatusStart", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_STARTING_STATUS)); |
- localized_strings.SetString("burnStatusInProgress", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_IN_PROGRESS_STATUS)); |
- localized_strings.SetString("burnStatusComplete", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_COMPLETE_STATUS)); |
- localized_strings.SetString("burnStatusCanceled", |
- l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_CANCELED_STATUS)); |
+ // Called when the network layer has requested a resource underneath |
+ // the path we registered. |
+ virtual void StartDataRequest(const std::string& path, |
+ bool is_off_the_record, |
+ int request_id) { |
+ DictionaryValue localized_strings; |
+ localized_strings.SetString("burnConfirmText1", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_CONFIM_BURN1)); |
+ localized_strings.SetString("burnConfirmText2", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_CONFIM_BURN2)); |
+ localized_strings.SetString("burnUnsuccessfulMessage", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_UNSUCCESSFUL)); |
+ localized_strings.SetString("burnSuccessfulMessage", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_SUCCESSFUL)); |
+ localized_strings.SetString("downloadAbortedMessage", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_UNSUCCESSFUL)); |
+ localized_strings.SetString("title", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_TITLE)); |
+ localized_strings.SetString("listTitle", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_ROOT_LIST_TITLE)); |
+ localized_strings.SetString("downloadStatusStart", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_STARTING_STATUS)); |
+ localized_strings.SetString("downloadStatusInProgress", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_IN_PROGRESS_STATUS)); |
+ localized_strings.SetString("downloadStatusComplete", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_COMPLETE_STATUS)); |
+ localized_strings.SetString("downloadStatusCanceled", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_DOWNLOAD_CANCELED_STATUS)); |
+ localized_strings.SetString("burnStatusStart", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_STARTING_STATUS)); |
+ localized_strings.SetString("burnStatusInProgress", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_IN_PROGRESS_STATUS)); |
+ localized_strings.SetString("burnStatusComplete", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_COMPLETE_STATUS)); |
+ localized_strings.SetString("burnStatusCanceled", |
+ l10n_util::GetStringUTF16(IDS_IMAGEBURN_BURN_CANCELED_STATUS)); |
- SetFontAndTextDirection(&localized_strings); |
+ SetFontAndTextDirection(&localized_strings); |
- static const base::StringPiece imageburn_html( |
- ResourceBundle::GetSharedInstance().GetRawDataResource( |
- IDR_IMAGEBURNER_HTML)); |
- const std::string full_html = jstemplate_builder::GetI18nTemplateHtml( |
- imageburn_html, &localized_strings); |
+ static const base::StringPiece imageburn_html( |
+ ResourceBundle::GetSharedInstance().GetRawDataResource( |
+ IDR_IMAGEBURNER_HTML)); |
+ const std::string full_html = jstemplate_builder::GetI18nTemplateHtml( |
+ imageburn_html, &localized_strings); |
- scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); |
- html_bytes->data.resize(full_html.size()); |
- std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); |
+ scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); |
+ html_bytes->data.resize(full_html.size()); |
+ std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); |
- SendResponse(request_id, html_bytes); |
-} |
+ SendResponse(request_id, html_bytes); |
+ } |
+ virtual std::string GetMimeType(const std::string&) const { |
+ return "text/html"; |
+ } |
+ |
+ private: |
+ virtual ~ImageBurnUIHTMLSource() {} |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ImageBurnUIHTMLSource); |
+}; |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// |
+// ImageBurnTaskProxy |
+// |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
+class ImageBurnTaskProxy |
+ : public base::RefCountedThreadSafe<ImageBurnTaskProxy> { |
+ public: |
+ explicit ImageBurnTaskProxy(const base::WeakPtr<ImageBurnHandler>& handler) |
+ : handler_(handler) { |
+ resource_manager_ = ImageBurnResourceManager::GetInstance(); |
+ } |
+ |
+ bool ReportDownloadInitialized() { |
+ bool initialized = resource_manager_-> CheckImageDownloadStarted(); |
+ if (!initialized) |
+ resource_manager_-> ReportImageDownloadStarted(); |
+ return initialized; |
+ } |
+ |
+ bool CheckDownloadFinished() { |
+ return resource_manager_->CheckDownloadFinished(); |
+ } |
+ |
+ void BurnImage() { |
+ if (!resource_manager_->CheckBurnInProgress() && handler_) { |
+ resource_manager_->SetBurnInProgress(true); |
+ handler_->BurnImage(); |
+ } |
+ } |
+ |
+ void FinalizeBurn(bool success) { |
+ if (handler_) { |
+ handler_->FinalizeBurn(success); |
+ resource_manager_->SetBurnInProgress(false); |
+ } |
+ } |
+ |
+ void CreateImageUrl(TabContents* tab_contents, ImageBurnHandler* downloader) { |
+ resource_manager_->CreateImageUrl(tab_contents, downloader); |
+ } |
+ |
+ private: |
+ base::WeakPtr<ImageBurnHandler> handler_; |
+ ImageBurnResourceManager* resource_manager_; |
+ |
+ friend class base::RefCountedThreadSafe<ImageBurnTaskProxy>; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ImageBurnTaskProxy); |
+}; |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// |
// ImageBurnHandler |
// |
//////////////////////////////////////////////////////////////////////////////// |
@@ -188,14 +265,16 @@ |
} |
void ImageBurnHandler::ModelChanged() { |
+ // Find our item and observe it. |
std::vector<DownloadItem*> downloads; |
download_manager_->GetTemporaryDownloads( |
burn_resource_manager_->GetLocalImageDirPath(), &downloads); |
- if (download_item_observer_added_) |
+ if (download_item_observer_added_) // Already added. |
return; |
std::vector<DownloadItem*>::const_iterator it = downloads.begin(); |
for (; it != downloads.end(); ++it) { |
- if ((*it)->url() == *image_download_url_) { |
+ if ((*it)->original_url() == *image_download_url_) { |
+ // Found it. |
download_item_observer_added_ = true; |
(*it)->AddObserver(this); |
active_download_item_ = *it; |
@@ -213,18 +292,20 @@ |
if (!burn_resource_manager_->CheckBurnInProgress()) { |
for (size_t i = 0; i < disks.size(); ++i) { |
if (!disks[i].mount_path.empty()) { |
- DictionaryValue* page_value = new DictionaryValue(); |
FilePath disk_path = FilePath(disks[i].system_path).DirName(); |
std::string title = "/dev/" + disk_path.BaseName().value(); |
- page_value->SetString(kPropertyTitle, title); |
- page_value->SetString(kPropertyPath, title); |
- page_value->SetBoolean(kPropertyDirectory, true); |
- results_value.Append(page_value); |
+ if (!mount_lib->IsBootPath(title.c_str())) { |
+ DictionaryValue* page_value = new DictionaryValue(); |
+ page_value->SetString(std::string(kPropertyTitle), title); |
+ page_value->SetString(std::string(kPropertyPath), title); |
+ page_value->SetBoolean(std::string(kPropertyDirectory), true); |
+ results_value.Append(page_value); |
+ } |
} |
} |
} |
info_value.SetString("functionCall", "getRoots"); |
- info_value.SetString(kPropertyPath, ""); |
+ info_value.SetString(std::string(kPropertyPath), ""); |
dom_ui_->CallJavascriptFunction(L"browseFileResult", |
info_value, results_value); |
} |
@@ -282,10 +363,8 @@ |
void ImageBurnHandler::FinalizeBurn(bool successful) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (successful) |
- dom_ui_->CallJavascriptFunction(L"burnSuccessful"); |
- else |
- dom_ui_->CallJavascriptFunction(L"burnUnsuccessful"); |
+ dom_ui_->CallJavascriptFunction(successful ? |
+ L"burnSuccessful" : L"burnUnsuccessful"); |
} |
void ImageBurnHandler::UpdateBurnProgress(int64 total_burnt, |
@@ -392,48 +471,6 @@ |
//////////////////////////////////////////////////////////////////////////////// |
// |
-// ImageBurnTaskProxy |
-// |
-//////////////////////////////////////////////////////////////////////////////// |
-ImageBurnTaskProxy::ImageBurnTaskProxy( |
- const base::WeakPtr<ImageBurnHandler>& handler) |
- : handler_(handler) { |
- resource_manager_ = ImageBurnResourceManager::GetInstance(); |
-} |
- |
-bool ImageBurnTaskProxy::ReportDownloadInitialized() { |
- bool initialized = resource_manager_-> CheckImageDownloadStarted(); |
- if (!initialized) |
- resource_manager_-> ReportImageDownloadStarted(); |
- return initialized; |
-} |
- |
-bool ImageBurnTaskProxy::CheckDownloadFinished() { |
- return resource_manager_->CheckDownloadFinished(); |
-} |
- |
-void ImageBurnTaskProxy:: BurnImage() { |
- if (!resource_manager_->CheckBurnInProgress() && handler_) { |
- resource_manager_->SetBurnInProgress(true); |
- handler_->BurnImage(); |
- } |
-} |
- |
-void ImageBurnTaskProxy::FinalizeBurn(bool success) { |
- if (handler_) { |
- handler_->FinalizeBurn(success); |
- resource_manager_->SetBurnInProgress(false); |
- } |
-} |
- |
-void ImageBurnTaskProxy::CreateImageUrl(TabContents* tab_contents, |
- ImageBurnHandler* downloader) { |
- resource_manager_->CreateImageUrl(tab_contents, downloader); |
-} |
- |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// |
// ImageBurnResourceManager |
// |
//////////////////////////////////////////////////////////////////////////////// |
@@ -445,10 +482,10 @@ |
download_manager_(NULL), |
download_item_observer_added_(false), |
active_download_item_(NULL), |
- image_url_(NULL), |
- image_fetcher_url_(kImageBaseURL + kImageFetcherName), |
+ image_url_(new GURL(kImageDownloadURL)), |
+ image_fetcher_url_(std::string(kImageBaseURL) + kImageFetcherName), |
image_url_fetching_requested_(false), |
- image_url_fetched_(false) { |
+ image_url_fetched_(true) { |
local_image_dir_file_path_.clear(); |
image_fecher_local_path_ = GetLocalImageDirPath().Append(kImageFetcherName); |
} |
@@ -480,7 +517,7 @@ |
DCHECK(download->state() == DownloadItem::COMPLETE); |
std::string image_url; |
if (file_util::ReadFileToString(image_fecher_local_path_, &image_url)) { |
- image_url_.reset(new GURL(kImageBaseURL + image_url)); |
+ image_url_.reset(new GURL(std::string(kImageBaseURL) + image_url)); |
ImageUrlFetched(true); |
} else { |
image_url_.reset(); |