Chromium Code Reviews| Index: chrome/browser/ui/webui/crashes_ui.cc |
| diff --git a/chrome/browser/ui/webui/crashes_ui.cc b/chrome/browser/ui/webui/crashes_ui.cc |
| index a2f1c61fb49658a876c2631e73531ade5b7a75f3..32fb83bed067ed47a9341481e2481b7d3bd1d766 100644 |
| --- a/chrome/browser/ui/webui/crashes_ui.cc |
| +++ b/chrome/browser/ui/webui/crashes_ui.cc |
| @@ -28,6 +28,11 @@ |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +#if defined(OS_CHROMEOS) |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| +#include "chromeos/dbus/debug_daemon_client.h" |
| +#endif |
| + |
| using content::WebContents; |
| using content::WebUIMessageHandler; |
| @@ -49,6 +54,8 @@ content::WebUIDataSource* CreateCrashesUIHTMLSource() { |
| IDS_CRASHES_NO_CRASHES_MESSAGE); |
| source->AddLocalizedString("disabledHeader", IDS_CRASHES_DISABLED_HEADER); |
| source->AddLocalizedString("disabledMessage", IDS_CRASHES_DISABLED_MESSAGE); |
| + source->AddLocalizedString("uploadCrashesLinkText", |
| + IDS_CRASHES_UPLOAD_MESSAGE); |
| source->SetJsonPath("strings.js"); |
| source->AddResourcePath("crashes.js", IDR_CRASHES_JS); |
| source->SetDefaultResource(IDR_CRASHES_HTML); |
| @@ -78,6 +85,11 @@ class CrashesDOMHandler : public WebUIMessageHandler, |
| // Asynchronously fetches the list of crashes. Called from JS. |
| void HandleRequestCrashes(const base::ListValue* args); |
| +#if defined(OS_CHROMEOS) |
| + // Asynchronously triggers crash uploading. Called from JS. |
| + void HandleRequestUploads(const base::ListValue* args); |
| +#endif |
| + |
| // Sends the recent crashes list JS. |
| void UpdateUI(); |
| @@ -102,6 +114,12 @@ void CrashesDOMHandler::RegisterMessages() { |
| web_ui()->RegisterMessageCallback("requestCrashList", |
| base::Bind(&CrashesDOMHandler::HandleRequestCrashes, |
| base::Unretained(this))); |
| + |
| +#if defined(OS_CHROMEOS) |
| + web_ui()->RegisterMessageCallback("requestCrashUpload", |
| + base::Bind(&CrashesDOMHandler::HandleRequestUploads, |
| + base::Unretained(this))); |
| +#endif |
| } |
| void CrashesDOMHandler::HandleRequestCrashes(const base::ListValue* args) { |
| @@ -115,6 +133,16 @@ void CrashesDOMHandler::HandleRequestCrashes(const base::ListValue* args) { |
| } |
| } |
| +#if defined(OS_CHROMEOS) |
| +void CrashesDOMHandler::HandleRequestUploads(const base::ListValue* args) { |
| + chromeos::DebugDaemonClient* debugd_client = |
| + chromeos::DBusThreadManager::Get()->GetDebugDaemonClient(); |
| + DCHECK(debugd_client); |
| + |
| + debugd_client->UploadCrashes(); |
| +} |
| +#endif |
| + |
| void CrashesDOMHandler::OnUploadListAvailable() { |
| list_available_ = true; |
| if (!first_load_) |
| @@ -125,6 +153,13 @@ void CrashesDOMHandler::UpdateUI() { |
| bool crash_reporting_enabled = |
| MetricsServiceHelper::IsCrashReportingEnabled(); |
| base::ListValue crash_list; |
| + bool system_crash_reporter = false; |
| + |
| +#if defined(OS_CHROMEOS) |
| + // Chrome OS has a system crash reporter. |
| + system_crash_reporter = true; |
| +#endif |
| + |
|
xiyuan
2014/03/31 20:29:18
nit: keep only one empty line
vapier
2014/03/31 21:53:28
Done.
|
| if (crash_reporting_enabled) { |
| std::vector<CrashUploadList::UploadInfo> crashes; |
| @@ -140,12 +175,13 @@ void CrashesDOMHandler::UpdateUI() { |
| } |
| base::FundamentalValue enabled(crash_reporting_enabled); |
| + base::FundamentalValue dynamic_backend(system_crash_reporter); |
| const chrome::VersionInfo version_info; |
| base::StringValue version(version_info.Version()); |
| - web_ui()->CallJavascriptFunction("updateCrashList", enabled, crash_list, |
| - version); |
| + web_ui()->CallJavascriptFunction("updateCrashList", enabled, dynamic_backend, |
| + crash_list, version); |
| } |
| } // namespace |