Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3799)

Unified Diff: chrome/browser/ui/webui/crashes_ui.cc

Issue 2268783002: Manual crash uploads for mac and win (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments and formatting Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 af48299bb57453d4df0cb1a1eee9ddd41653a03a..78fca3fa9b34706e12b167efdfa319b73dc4d7ef 100644
--- a/chrome/browser/ui/webui/crashes_ui.cc
+++ b/chrome/browser/ui/webui/crashes_ui.cc
@@ -16,6 +16,7 @@
#include "build/build_config.h"
#include "chrome/browser/crash_upload_list/crash_upload_list.h"
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
+#include "chrome/browser/metrics/metrics_reporting_state.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/url_constants.h"
#include "chrome/grit/chromium_strings.h"
@@ -92,6 +93,11 @@ class CrashesDOMHandler : public WebUIMessageHandler,
// Sends the recent crashes list JS.
void UpdateUI();
+#if defined(OS_WIN) || defined(OS_MACOSX)
+ // Asynchronously requests a user triggered upload. Called from JS.
+ void HandleRequestSingleCrashUpload(const base::ListValue* args);
+#endif
+
scoped_refptr<CrashUploadList> upload_list_;
bool list_available_;
bool first_load_;
@@ -121,6 +127,13 @@ void CrashesDOMHandler::RegisterMessages() {
base::Bind(&CrashesDOMHandler::HandleRequestUploads,
base::Unretained(this)));
#endif
+
+#if defined(OS_WIN) || defined(OS_MACOSX)
+ web_ui()->RegisterMessageCallback(
+ crash::kCrashesUIRequestSingleCrashUpload,
+ base::Bind(&CrashesDOMHandler::HandleRequestSingleCrashUpload,
+ base::Unretained(this)));
+#endif
}
void CrashesDOMHandler::HandleRequestCrashes(const base::ListValue* args) {
@@ -161,11 +174,26 @@ void CrashesDOMHandler::UpdateUI() {
#endif
base::ListValue crash_list;
+#if defined(OS_WIN) || defined(OS_MACOSX)
+ // Maunal uploads currently are supported only for Crashpad-using platforms.
+ // Allow manual uploads only if crash uploads are not disabled by policy.
+ const bool support_manual_uploads =
+ crash_reporting_enabled || !IsMetricsReportingPolicyManaged();
+ // Show crash reports regardless of |crash_reporting_enabled| so that users
+ // can manually uploads those reports.
Mark Mentovai 2016/09/01 23:24:41 upload (no s)
gayane -on leave until 09-2017 2016/09/02 14:54:02 Done.
+ crash::UploadListToValue(upload_list_.get(), &crash_list);
+#else
+ const bool support_manual_uploads = false;
+
+ // Don't show crash reports list if crash reporting is disabled for platforms
+ // where manual uploads are not supported.
if (crash_reporting_enabled)
crash::UploadListToValue(upload_list_.get(), &crash_list);
+#endif
base::FundamentalValue enabled(crash_reporting_enabled);
base::FundamentalValue dynamic_backend(system_crash_reporter);
+ base::FundamentalValue manual_uploads(support_manual_uploads);
base::StringValue version(version_info::GetVersionNumber());
base::StringValue os_string(base::SysInfo::OperatingSystemName() + " " +
base::SysInfo::OperatingSystemVersion());
@@ -173,6 +201,7 @@ void CrashesDOMHandler::UpdateUI() {
std::vector<const base::Value*> args;
args.push_back(&enabled);
args.push_back(&dynamic_backend);
+ args.push_back(&manual_uploads);
args.push_back(&crash_list);
args.push_back(&version);
args.push_back(&os_string);
@@ -180,6 +209,21 @@ void CrashesDOMHandler::UpdateUI() {
args);
}
+#if defined(OS_WIN) || defined(OS_MACOSX)
+void CrashesDOMHandler::HandleRequestSingleCrashUpload(
+ const base::ListValue* args) {
+ std::string local_id;
+ if (!args || !args->GetString(0, &local_id))
+ return;
+ // Only allow manual uploads if crash uploads aren’t disabled by policy.
+ if (!ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled() &&
+ IsMetricsReportingPolicyManaged()) {
+ return;
+ }
+ upload_list_->RequestSingleCrashUploadAsync(local_id);
+}
+#endif
+
} // namespace
///////////////////////////////////////////////////////////////////////////////

Powered by Google App Engine
This is Rietveld 408576698