| 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..25d97412e1063e17779e18dc477775b5b219a1f1 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())
|
| + 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(
|
| + const 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);
|
| }
|
|
|