Chromium Code Reviews| Index: chrome/browser/ui/webui/settings/reset_settings_handler.cc |
| diff --git a/chrome/browser/ui/webui/settings/reset_settings_handler.cc b/chrome/browser/ui/webui/settings/reset_settings_handler.cc |
| index 5b22720cc10c9466ebabb65ef03eef35872ff366..41311b8f95a7e2366d2bfab7aad872cd290e9377 100644 |
| --- a/chrome/browser/ui/webui/settings/reset_settings_handler.cc |
| +++ b/chrome/browser/ui/webui/settings/reset_settings_handler.cc |
| @@ -17,7 +17,6 @@ |
| #include "chrome/browser/prefs/chrome_pref_service_factory.h" |
| #include "chrome/browser/profile_resetter/brandcode_config_fetcher.h" |
| #include "chrome/browser/profile_resetter/brandcoded_default_settings.h" |
| -#include "chrome/browser/profile_resetter/profile_reset_report.pb.h" |
| #include "chrome/browser/profile_resetter/profile_resetter.h" |
| #include "chrome/browser/profile_resetter/resettable_settings_snapshot.h" |
| #include "chrome/browser/profiles/profile.h" |
| @@ -45,6 +44,31 @@ |
| namespace settings { |
| +namespace { |
| + |
| +reset_report::ChromeResetReport::ResetRequestOrigin |
| +ResetRequestOriginFromString(const std::string& request_origin) { |
| + static const char kOriginUserClick[] = "userclick"; |
| + static const char kOriginTriggeredReset[] = "triggeredreset"; |
| + |
| + if (request_origin == ResetSettingsHandler::kCctResetSettingsHash) |
| + return reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_CCT; |
| + if (request_origin == kOriginUserClick) |
| + return reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_USER_CLICK; |
| + if (request_origin == kOriginTriggeredReset) { |
| + return reset_report::ChromeResetReport:: |
| + RESET_REQUEST_ORIGIN_TRIGGERED_RESET; |
| + } |
| + if (!request_origin.empty()) |
|
hcarmona
2016/10/13 20:30:20
Is an empty request_origin allowed?
alito
2016/10/13 21:27:28
Yes. It signals that the origin is UNKNOWN.
hcarmona
2016/10/13 23:37:54
Sounds good. :-)
|
| + NOTREACHED(); |
| + |
| + return reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_UNKNOWN; |
| +} |
| + |
| +} // namespace |
| + |
| +const char ResetSettingsHandler::kCctResetSettingsHash[] = "cct"; |
| + |
| ResetSettingsHandler::ResetSettingsHandler(Profile* profile) |
| : profile_(profile), weak_ptr_factory_(this) { |
| google_brand::GetBrand(&brandcode_); |
| @@ -108,27 +132,31 @@ void ResetSettingsHandler::HandleResetProfileSettings( |
| const base::ListValue* args) { |
| AllowJavascript(); |
| - CHECK_EQ(2U, args->GetSize()); |
| + CHECK_EQ(3U, args->GetSize()); |
| std::string callback_id; |
| CHECK(args->GetString(0, &callback_id)); |
| bool send_settings = false; |
| CHECK(args->GetBoolean(1, &send_settings)); |
| + std::string request_origin_string; |
| + CHECK(args->GetString(2, &request_origin_string)); |
| + reset_report::ChromeResetReport::ResetRequestOrigin request_origin = |
| + ResetRequestOriginFromString(request_origin_string); |
| DCHECK(brandcode_.empty() || config_fetcher_); |
| if (config_fetcher_ && config_fetcher_->IsActive()) { |
| // Reset once the prefs are fetched. |
| - config_fetcher_->SetCallback( |
| - base::Bind(&ResetSettingsHandler::ResetProfile, |
| - base::Unretained(this), |
| - callback_id, |
| - send_settings)); |
| + config_fetcher_->SetCallback(base::Bind(&ResetSettingsHandler::ResetProfile, |
| + base::Unretained(this), callback_id, |
| + send_settings, request_origin)); |
| } else { |
| - ResetProfile(callback_id, send_settings); |
| + ResetProfile(callback_id, send_settings, request_origin); |
| } |
| } |
| void ResetSettingsHandler::OnResetProfileSettingsDone( |
| - std::string callback_id, bool send_feedback) { |
| + std::string callback_id, |
| + bool send_feedback, |
| + reset_report::ChromeResetReport::ResetRequestOrigin request_origin) { |
| ResolveJavascriptCallback( |
| base::StringValue(callback_id), *base::Value::CreateNullValue()); |
| if (send_feedback && setting_snapshot_) { |
| @@ -139,13 +167,7 @@ void ResetSettingsHandler::OnResetProfileSettingsDone( |
| std::unique_ptr<reset_report::ChromeResetReport> report_proto = |
| SerializeSettingsReportToProto(*setting_snapshot_, difference); |
| if (report_proto) { |
| - // The material design version of the settings page currently does not |
| - // expose the alternative ways, made available by the old settings page, |
| - // to get to the reset settings dialog. Until those are available, we |
| - // can assume that all reset requests came directly from user |
| - // navigation. |
| - report_proto->set_reset_request_origin( |
| - reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_USER_CLICK); |
| + report_proto->set_reset_request_origin(request_origin); |
| SendSettingsFeedbackProto(*report_proto, profile_); |
| } |
| } |
| @@ -205,8 +227,10 @@ void ResetSettingsHandler::OnSettingsFetched() { |
| // The master prefs is fetched. We are waiting for user pressing 'Reset'. |
| } |
| -void ResetSettingsHandler::ResetProfile(std::string callback_id, |
| - bool send_settings) { |
| +void ResetSettingsHandler::ResetProfile( |
| + std::string callback_id, |
| + bool send_settings, |
| + reset_report::ChromeResetReport::ResetRequestOrigin request_origin) { |
| DCHECK(!GetResetter()->IsActive()); |
| std::unique_ptr<BrandcodedDefaultSettings> default_settings; |
| @@ -226,9 +250,8 @@ void ResetSettingsHandler::ResetProfile(std::string callback_id, |
| GetResetter()->Reset( |
| ProfileResetter::ALL, std::move(default_settings), |
| base::Bind(&ResetSettingsHandler::OnResetProfileSettingsDone, |
| - weak_ptr_factory_.GetWeakPtr(), |
| - callback_id, |
| - send_settings)); |
| + weak_ptr_factory_.GetWeakPtr(), callback_id, send_settings, |
| + request_origin)); |
| content::RecordAction(base::UserMetricsAction("ResetProfile")); |
| UMA_HISTOGRAM_BOOLEAN("ProfileReset.SendFeedback", send_settings); |
| } |