| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/options/reset_profile_settings_handler.h" | 5 #include "chrome/browser/ui/webui/options/reset_profile_settings_handler.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "content/public/browser/web_ui.h" | 29 #include "content/public/browser/web_ui.h" |
| 30 #include "ui/base/l10n/l10n_util.h" | 30 #include "ui/base/l10n/l10n_util.h" |
| 31 | 31 |
| 32 #if defined(OS_WIN) | 32 #if defined(OS_WIN) |
| 33 #include "chrome/browser/profile_resetter/triggered_profile_resetter.h" | 33 #include "chrome/browser/profile_resetter/triggered_profile_resetter.h" |
| 34 #include "chrome/browser/profile_resetter/triggered_profile_resetter_factory.h" | 34 #include "chrome/browser/profile_resetter/triggered_profile_resetter_factory.h" |
| 35 #endif // defined(OS_WIN) | 35 #endif // defined(OS_WIN) |
| 36 | 36 |
| 37 namespace options { | 37 namespace options { |
| 38 | 38 |
| 39 namespace { |
| 40 |
| 41 reset_report::ChromeResetReport::ResetRequestOrigin |
| 42 ResetRequestOriginFromString(const std::string& reset_request_origin) { |
| 43 static const char kOriginUserClick[] = "userclick"; |
| 44 static const char kOriginCct[] = "cct"; |
| 45 static const char kOriginTriggeredReset[] = "triggeredreset"; |
| 46 |
| 47 if (reset_request_origin == kOriginUserClick) |
| 48 return reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_USER_CLICK; |
| 49 if (reset_request_origin == kOriginCct) |
| 50 return reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_CCT; |
| 51 if (reset_request_origin == kOriginTriggeredReset) { |
| 52 return reset_report::ChromeResetReport:: |
| 53 RESET_REQUEST_ORIGIN_TRIGGERED_RESET; |
| 54 } |
| 55 if (!reset_request_origin.empty()) |
| 56 NOTREACHED(); |
| 57 |
| 58 return reset_report::ChromeResetReport::RESET_REQUEST_ORIGIN_UNKNOWN; |
| 59 } |
| 60 |
| 61 } // namespace |
| 62 |
| 39 ResetProfileSettingsHandler::ResetProfileSettingsHandler() { | 63 ResetProfileSettingsHandler::ResetProfileSettingsHandler() { |
| 40 google_brand::GetBrand(&brandcode_); | 64 google_brand::GetBrand(&brandcode_); |
| 41 } | 65 } |
| 42 | 66 |
| 43 ResetProfileSettingsHandler::~ResetProfileSettingsHandler() {} | 67 ResetProfileSettingsHandler::~ResetProfileSettingsHandler() {} |
| 44 | 68 |
| 45 void ResetProfileSettingsHandler::InitializeHandler() { | 69 void ResetProfileSettingsHandler::InitializeHandler() { |
| 46 Profile* profile = Profile::FromWebUI(web_ui()); | 70 Profile* profile = Profile::FromWebUI(web_ui()); |
| 47 resetter_.reset(new ProfileResetter(profile)); | 71 resetter_.reset(new ProfileResetter(profile)); |
| 48 } | 72 } |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 base::Bind(&ResetProfileSettingsHandler::OnShowResetProfileDialog, | 144 base::Bind(&ResetProfileSettingsHandler::OnShowResetProfileDialog, |
| 121 base::Unretained(this))); | 145 base::Unretained(this))); |
| 122 web_ui()->RegisterMessageCallback("onHideResetProfileDialog", | 146 web_ui()->RegisterMessageCallback("onHideResetProfileDialog", |
| 123 base::Bind(&ResetProfileSettingsHandler::OnHideResetProfileDialog, | 147 base::Bind(&ResetProfileSettingsHandler::OnHideResetProfileDialog, |
| 124 base::Unretained(this))); | 148 base::Unretained(this))); |
| 125 } | 149 } |
| 126 | 150 |
| 127 void ResetProfileSettingsHandler::HandleResetProfileSettings( | 151 void ResetProfileSettingsHandler::HandleResetProfileSettings( |
| 128 const base::ListValue* value) { | 152 const base::ListValue* value) { |
| 129 bool send_settings = false; | 153 bool send_settings = false; |
| 130 bool success = value->GetBoolean(0, &send_settings); | 154 std::string reset_request_origin; |
| 155 bool success = value->GetBoolean(0, &send_settings) && |
| 156 value->GetString(1, &reset_request_origin); |
| 131 DCHECK(success); | 157 DCHECK(success); |
| 132 | 158 |
| 133 DCHECK(brandcode_.empty() || config_fetcher_); | 159 DCHECK(brandcode_.empty() || config_fetcher_); |
| 134 if (config_fetcher_ && config_fetcher_->IsActive()) { | 160 if (config_fetcher_ && config_fetcher_->IsActive()) { |
| 135 // Reset once the prefs are fetched. | 161 // Reset once the prefs are fetched. |
| 136 config_fetcher_->SetCallback( | 162 config_fetcher_->SetCallback( |
| 137 base::Bind(&ResetProfileSettingsHandler::ResetProfile, | 163 base::Bind(&ResetProfileSettingsHandler::ResetProfile, Unretained(this), |
| 138 Unretained(this), | 164 send_settings, reset_request_origin)); |
| 139 send_settings)); | |
| 140 } else { | 165 } else { |
| 141 ResetProfile(send_settings); | 166 ResetProfile(send_settings, reset_request_origin); |
| 142 } | 167 } |
| 143 } | 168 } |
| 144 | 169 |
| 145 void ResetProfileSettingsHandler::OnResetProfileSettingsDone( | 170 void ResetProfileSettingsHandler::OnResetProfileSettingsDone( |
| 146 bool send_feedback) { | 171 bool send_feedback, |
| 172 const std::string& reset_request_origin) { |
| 147 web_ui()->CallJavascriptFunctionUnsafe( | 173 web_ui()->CallJavascriptFunctionUnsafe( |
| 148 "ResetProfileSettingsOverlay.doneResetting"); | 174 "ResetProfileSettingsOverlay.doneResetting"); |
| 149 if (send_feedback && setting_snapshot_) { | 175 if (send_feedback && setting_snapshot_) { |
| 150 Profile* profile = Profile::FromWebUI(web_ui()); | 176 Profile* profile = Profile::FromWebUI(web_ui()); |
| 151 ResettableSettingsSnapshot current_snapshot(profile); | 177 ResettableSettingsSnapshot current_snapshot(profile); |
| 152 int difference = setting_snapshot_->FindDifferentFields(current_snapshot); | 178 int difference = setting_snapshot_->FindDifferentFields(current_snapshot); |
| 153 if (difference) { | 179 if (difference) { |
| 154 setting_snapshot_->Subtract(current_snapshot); | 180 setting_snapshot_->Subtract(current_snapshot); |
| 155 std::unique_ptr<reset_report::ChromeResetReport> report_proto = | 181 std::unique_ptr<reset_report::ChromeResetReport> report_proto = |
| 156 SerializeSettingsReportToProto(*setting_snapshot_, difference); | 182 SerializeSettingsReportToProto(*setting_snapshot_, difference); |
| 157 if (report_proto) | 183 if (report_proto) { |
| 184 report_proto->set_reset_request_origin( |
| 185 ResetRequestOriginFromString(reset_request_origin)); |
| 158 SendSettingsFeedbackProto(*report_proto, profile); | 186 SendSettingsFeedbackProto(*report_proto, profile); |
| 187 } |
| 159 } | 188 } |
| 160 } | 189 } |
| 161 setting_snapshot_.reset(); | 190 setting_snapshot_.reset(); |
| 162 } | 191 } |
| 163 | 192 |
| 164 void ResetProfileSettingsHandler::OnShowResetProfileDialog( | 193 void ResetProfileSettingsHandler::OnShowResetProfileDialog( |
| 165 const base::ListValue* value) { | 194 const base::ListValue* value) { |
| 166 if (!resetter_->IsActive()) { | 195 if (!resetter_->IsActive()) { |
| 167 setting_snapshot_.reset( | 196 setting_snapshot_.reset( |
| 168 new ResettableSettingsSnapshot(Profile::FromWebUI(web_ui()))); | 197 new ResettableSettingsSnapshot(Profile::FromWebUI(web_ui()))); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 185 if (!resetter_->IsActive()) | 214 if (!resetter_->IsActive()) |
| 186 setting_snapshot_.reset(); | 215 setting_snapshot_.reset(); |
| 187 } | 216 } |
| 188 | 217 |
| 189 void ResetProfileSettingsHandler::OnSettingsFetched() { | 218 void ResetProfileSettingsHandler::OnSettingsFetched() { |
| 190 DCHECK(config_fetcher_); | 219 DCHECK(config_fetcher_); |
| 191 DCHECK(!config_fetcher_->IsActive()); | 220 DCHECK(!config_fetcher_->IsActive()); |
| 192 // The master prefs is fetched. We are waiting for user pressing 'Reset'. | 221 // The master prefs is fetched. We are waiting for user pressing 'Reset'. |
| 193 } | 222 } |
| 194 | 223 |
| 195 void ResetProfileSettingsHandler::ResetProfile(bool send_settings) { | 224 void ResetProfileSettingsHandler::ResetProfile( |
| 225 bool send_settings, |
| 226 const std::string& reset_request_origin) { |
| 196 DCHECK(resetter_); | 227 DCHECK(resetter_); |
| 197 DCHECK(!resetter_->IsActive()); | 228 DCHECK(!resetter_->IsActive()); |
| 198 | 229 |
| 199 std::unique_ptr<BrandcodedDefaultSettings> default_settings; | 230 std::unique_ptr<BrandcodedDefaultSettings> default_settings; |
| 200 if (config_fetcher_) { | 231 if (config_fetcher_) { |
| 201 DCHECK(!config_fetcher_->IsActive()); | 232 DCHECK(!config_fetcher_->IsActive()); |
| 202 default_settings = config_fetcher_->GetSettings(); | 233 default_settings = config_fetcher_->GetSettings(); |
| 203 config_fetcher_.reset(); | 234 config_fetcher_.reset(); |
| 204 } else { | 235 } else { |
| 205 DCHECK(brandcode_.empty()); | 236 DCHECK(brandcode_.empty()); |
| 206 } | 237 } |
| 207 | 238 |
| 208 // If failed to fetch BrandcodedDefaultSettings or this is an organic | 239 // If failed to fetch BrandcodedDefaultSettings or this is an organic |
| 209 // installation, use default settings. | 240 // installation, use default settings. |
| 210 if (!default_settings) | 241 if (!default_settings) |
| 211 default_settings.reset(new BrandcodedDefaultSettings); | 242 default_settings.reset(new BrandcodedDefaultSettings); |
| 212 resetter_->Reset( | 243 resetter_->Reset( |
| 213 ProfileResetter::ALL, std::move(default_settings), | 244 ProfileResetter::ALL, std::move(default_settings), |
| 214 base::Bind(&ResetProfileSettingsHandler::OnResetProfileSettingsDone, | 245 base::Bind(&ResetProfileSettingsHandler::OnResetProfileSettingsDone, |
| 215 AsWeakPtr(), send_settings)); | 246 AsWeakPtr(), send_settings, reset_request_origin)); |
| 216 content::RecordAction(base::UserMetricsAction("ResetProfile")); | 247 content::RecordAction(base::UserMetricsAction("ResetProfile")); |
| 217 UMA_HISTOGRAM_BOOLEAN("ProfileReset.SendFeedback", send_settings); | 248 UMA_HISTOGRAM_BOOLEAN("ProfileReset.SendFeedback", send_settings); |
| 218 } | 249 } |
| 219 | 250 |
| 220 void ResetProfileSettingsHandler::UpdateFeedbackUI() { | 251 void ResetProfileSettingsHandler::UpdateFeedbackUI() { |
| 221 if (!setting_snapshot_) | 252 if (!setting_snapshot_) |
| 222 return; | 253 return; |
| 223 std::unique_ptr<base::ListValue> list = GetReadableFeedbackForSnapshot( | 254 std::unique_ptr<base::ListValue> list = GetReadableFeedbackForSnapshot( |
| 224 Profile::FromWebUI(web_ui()), *setting_snapshot_); | 255 Profile::FromWebUI(web_ui()), *setting_snapshot_); |
| 225 base::DictionaryValue feedback_info; | 256 base::DictionaryValue feedback_info; |
| 226 feedback_info.Set("feedbackInfo", list.release()); | 257 feedback_info.Set("feedbackInfo", list.release()); |
| 227 web_ui()->CallJavascriptFunctionUnsafe( | 258 web_ui()->CallJavascriptFunctionUnsafe( |
| 228 "ResetProfileSettingsOverlay.setFeedbackInfo", feedback_info); | 259 "ResetProfileSettingsOverlay.setFeedbackInfo", feedback_info); |
| 229 } | 260 } |
| 230 | 261 |
| 231 } // namespace options | 262 } // namespace options |
| OLD | NEW |