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