OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ui/webui/chromeos/imageburner/imageburner_ui.h" | 5 #include "chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.h" |
6 #include "chrome/browser/ui/webui/chromeos/imageburner/webui_handler.h" | 6 |
7 #include <string> | |
8 #include <vector> | |
7 | 9 |
8 #include "base/bind.h" | 10 #include "base/bind.h" |
9 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
10 #include "base/i18n/rtl.h" | 12 #include "base/i18n/rtl.h" |
11 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
12 #include "base/task.h" | |
13 #include "base/utf_string_conversions.h" | 14 #include "base/utf_string_conversions.h" |
14 #include "base/values.h" | 15 #include "base/values.h" |
15 #include "chrome/browser/chromeos/system/statistics_provider.h" | 16 #include "chrome/browser/chromeos/system/statistics_provider.h" |
16 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
18 #include "chrome/browser/ui/webui/chromeos/imageburner/webui_handler.h" | |
17 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" | 19 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" |
18 #include "chrome/common/jstemplate_builder.h" | 20 #include "chrome/common/jstemplate_builder.h" |
19 #include "chrome/common/time_format.h" | 21 #include "chrome/common/time_format.h" |
20 #include "chrome/common/url_constants.h" | 22 #include "chrome/common/url_constants.h" |
21 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
22 #include "grit/browser_resources.h" | 24 #include "grit/browser_resources.h" |
23 #include "grit/generated_resources.h" | 25 #include "grit/generated_resources.h" |
24 #include "grit/locale_settings.h" | 26 #include "grit/locale_settings.h" |
25 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
26 #include "ui/base/resource/resource_bundle.h" | 28 #include "ui/base/resource/resource_bundle.h" |
(...skipping 13 matching lines...) Expand all Loading... | |
40 | 42 |
41 // 3.9GB. It is less than 4GB because true device size ussually varies a little. | 43 // 3.9GB. It is less than 4GB because true device size ussually varies a little. |
42 const uint64 kMinDeviceSize = static_cast<uint64>(3.9) * 1000 * 1000 * 1000; | 44 const uint64 kMinDeviceSize = static_cast<uint64>(3.9) * 1000 * 1000 * 1000; |
43 | 45 |
44 // Link displayed on imageburner ui. | 46 // Link displayed on imageburner ui. |
45 const char kMoreInfoLink[] = | 47 const char kMoreInfoLink[] = |
46 "http://www.chromium.org/chromium-os/chromiumos-design-docs/recovery-mode"; | 48 "http://www.chromium.org/chromium-os/chromiumos-design-docs/recovery-mode"; |
47 | 49 |
48 namespace { | 50 namespace { |
49 | 51 |
50 ChromeWebUIDataSource *CreateImageburnerUIHTMLSource() { | 52 ChromeWebUIDataSource* CreateImageburnerUIHTMLSource() { |
51 ChromeWebUIDataSource *source = | 53 ChromeWebUIDataSource* source = |
52 new ChromeWebUIDataSource(chrome::kChromeUIImageBurnerHost); | 54 new ChromeWebUIDataSource(chrome::kChromeUIImageBurnerHost); |
53 | 55 |
54 source->AddLocalizedString("headerTitle", IDS_IMAGEBURN_HEADER_TITLE); | 56 source->AddLocalizedString("headerTitle", IDS_IMAGEBURN_HEADER_TITLE); |
55 source->AddLocalizedString("headerDescription", | 57 source->AddLocalizedString("headerDescription", |
56 IDS_IMAGEBURN_HEADER_DESCRIPTION); | 58 IDS_IMAGEBURN_HEADER_DESCRIPTION); |
57 source->AddLocalizedString("headerLink", IDS_IMAGEBURN_HEADER_LINK); | 59 source->AddLocalizedString("headerLink", IDS_IMAGEBURN_HEADER_LINK); |
58 source->AddLocalizedString("statusDevicesNone", | 60 source->AddLocalizedString("statusDevicesNone", |
59 IDS_IMAGEBURN_NO_DEVICES_STATUS); | 61 IDS_IMAGEBURN_NO_DEVICES_STATUS); |
60 source->AddLocalizedString("warningDevicesNone", | 62 source->AddLocalizedString("warningDevicesNone", |
61 IDS_IMAGEBURN_NO_DEVICES_WARNING); | 63 IDS_IMAGEBURN_NO_DEVICES_WARNING); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
144 if (state_machine_) | 146 if (state_machine_) |
145 state_machine_->RemoveObserver(this); | 147 state_machine_->RemoveObserver(this); |
146 } | 148 } |
147 | 149 |
148 WebUIMessageHandler* WebUIHandler::Attach(WebUI* web_ui) { | 150 WebUIMessageHandler* WebUIHandler::Attach(WebUI* web_ui) { |
149 return WebUIMessageHandler::Attach(web_ui); | 151 return WebUIMessageHandler::Attach(web_ui); |
150 } | 152 } |
151 | 153 |
152 void WebUIHandler::RegisterMessages() { | 154 void WebUIHandler::RegisterMessages() { |
153 web_ui_->RegisterMessageCallback("getDevices", | 155 web_ui_->RegisterMessageCallback("getDevices", |
154 base::Bind(&WebUIHandler::HandleGetDevices, base::Unretained(this))); | 156 base::Bind(&WebUIHandler::HandleGetDevices, |
157 base::SupportsWeakPtr<WebUIHandler>::AsWeakPtr())); | |
155 web_ui_->RegisterMessageCallback("burnImage", | 158 web_ui_->RegisterMessageCallback("burnImage", |
156 base::Bind(&WebUIHandler::HandleBurnImage, base::Unretained(this))); | 159 base::Bind(&WebUIHandler::HandleBurnImage, |
160 base::SupportsWeakPtr<WebUIHandler>::AsWeakPtr())); | |
157 web_ui_->RegisterMessageCallback("cancelBurnImage", | 161 web_ui_->RegisterMessageCallback("cancelBurnImage", |
158 base::Bind(&WebUIHandler::HandleCancelBurnImage, base::Unretained(this))); | 162 base::Bind(&WebUIHandler::HandleCancelBurnImage, |
163 base::SupportsWeakPtr<WebUIHandler>::AsWeakPtr())); | |
159 web_ui_->RegisterMessageCallback("webuiInitialized", | 164 web_ui_->RegisterMessageCallback("webuiInitialized", |
160 base::Bind(&WebUIHandler::HandleWebUIInitialized, | 165 base::Bind(&WebUIHandler::HandleWebUIInitialized, |
161 base::Unretained(this))); | 166 base::SupportsWeakPtr<WebUIHandler>::AsWeakPtr())); |
162 } | 167 } |
csilv
2011/11/23 01:39:02
As discussed in http://codereview.chromium.org/811
achuithb
2011/11/23 19:43:29
Done.
| |
163 | 168 |
164 void WebUIHandler::DiskChanged( | 169 void WebUIHandler::DiskChanged( |
165 chromeos::disks::DiskMountManagerEventType event, | 170 chromeos::disks::DiskMountManagerEventType event, |
166 const chromeos::disks::DiskMountManager::Disk* disk) { | 171 const chromeos::disks::DiskMountManager::Disk* disk) { |
167 if (!disk->is_parent() || disk->on_boot_device()) | 172 if (!disk->is_parent() || disk->on_boot_device()) |
168 return; | 173 return; |
169 if (event == chromeos::disks::MOUNT_DISK_ADDED) { | 174 if (event == chromeos::disks::MOUNT_DISK_ADDED) { |
170 DictionaryValue disk_value; | 175 DictionaryValue disk_value; |
171 CreateDiskValue(*disk, &disk_value); | 176 CreateDiskValue(*disk, &disk_value); |
172 web_ui_->CallJavascriptFunction("browserBridge.deviceAdded", disk_value); | 177 web_ui_->CallJavascriptFunction("browserBridge.deviceAdded", disk_value); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
352 return; | 357 return; |
353 working_ = true; | 358 working_ = true; |
354 // Send progress signal now so ui doesn't hang in intial state until we get | 359 // Send progress signal now so ui doesn't hang in intial state until we get |
355 // config file | 360 // config file |
356 SendProgressSignal(DOWNLOAD, 0, 0, NULL); | 361 SendProgressSignal(DOWNLOAD, 0, 0, NULL); |
357 if (burn_manager_->GetImageDir().empty()) { | 362 if (burn_manager_->GetImageDir().empty()) { |
358 // Create image dir on File thread. | 363 // Create image dir on File thread. |
359 scoped_refptr<WebUIHandlerTaskProxy> task = new WebUIHandlerTaskProxy(this); | 364 scoped_refptr<WebUIHandlerTaskProxy> task = new WebUIHandlerTaskProxy(this); |
360 BrowserThread::PostTask( | 365 BrowserThread::PostTask( |
361 BrowserThread::FILE, FROM_HERE, | 366 BrowserThread::FILE, FROM_HERE, |
362 NewRunnableMethod(task.get(), &WebUIHandlerTaskProxy::CreateImageDir)); | 367 base::Bind(&WebUIHandlerTaskProxy::CreateImageDir, task)); |
csilv
2011/11/23 01:39:02
You'll still want to use task.get() here.
achuithb
2011/11/23 19:43:29
Done.
| |
363 } else { | 368 } else { |
364 ImageDirCreatedOnUIThread(true); | 369 ImageDirCreatedOnUIThread(true); |
365 } | 370 } |
366 } | 371 } |
367 | 372 |
368 void WebUIHandler::CreateImageDirOnFileThread() { | 373 void WebUIHandler::CreateImageDirOnFileThread() { |
369 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 374 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
370 burn_manager_->CreateImageDir(this); | 375 burn_manager_->CreateImageDir(this); |
371 } | 376 } |
372 | 377 |
373 void WebUIHandler::OnImageDirCreated(bool success) { | 378 void WebUIHandler::OnImageDirCreated(bool success) { |
374 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 379 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
375 // Transfer to UI thread. | 380 // Transfer to UI thread. |
376 scoped_refptr<WebUIHandlerTaskProxy> task = new WebUIHandlerTaskProxy(this); | 381 scoped_refptr<WebUIHandlerTaskProxy> task = new WebUIHandlerTaskProxy(this); |
377 BrowserThread::PostTask( | 382 BrowserThread::PostTask( |
378 BrowserThread::UI, FROM_HERE, | 383 BrowserThread::UI, FROM_HERE, |
379 NewRunnableMethod(task.get(), &WebUIHandlerTaskProxy::OnImageDirCreated, | 384 base::Bind(&WebUIHandlerTaskProxy::OnImageDirCreated, task, success)); |
csilv
2011/11/23 01:39:02
task.get()
achuithb
2011/11/23 19:43:29
Done.
| |
380 success)); | |
381 } | 385 } |
382 | 386 |
383 void WebUIHandler::ImageDirCreatedOnUIThread(bool success) { | 387 void WebUIHandler::ImageDirCreatedOnUIThread(bool success) { |
384 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 388 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
385 if (success) { | 389 if (success) { |
386 zip_image_file_path_ = | 390 zip_image_file_path_ = |
387 burn_manager_->GetImageDir().Append(kImageZipFileName); | 391 burn_manager_->GetImageDir().Append(kImageZipFileName); |
388 burn_manager_->FetchConfigFile(tab_contents_, this); | 392 burn_manager_->FetchConfigFile(tab_contents_, this); |
389 } else { | 393 } else { |
390 DownloadCompleted(success); | 394 DownloadCompleted(success); |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
638 //////////////////////////////////////////////////////////////////////////////// | 642 //////////////////////////////////////////////////////////////////////////////// |
639 | 643 |
640 ImageBurnUI::ImageBurnUI(TabContents* contents) : ChromeWebUI(contents) { | 644 ImageBurnUI::ImageBurnUI(TabContents* contents) : ChromeWebUI(contents) { |
641 imageburner::WebUIHandler* handler = new imageburner::WebUIHandler(contents); | 645 imageburner::WebUIHandler* handler = new imageburner::WebUIHandler(contents); |
642 AddMessageHandler((handler)->Attach(this)); | 646 AddMessageHandler((handler)->Attach(this)); |
643 | 647 |
644 Profile* profile = Profile::FromBrowserContext(contents->browser_context()); | 648 Profile* profile = Profile::FromBrowserContext(contents->browser_context()); |
645 profile->GetChromeURLDataManager()->AddDataSource( | 649 profile->GetChromeURLDataManager()->AddDataSource( |
646 CreateImageburnerUIHTMLSource()); | 650 CreateImageburnerUIHTMLSource()); |
647 } | 651 } |
OLD | NEW |