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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc

Issue 1445383003: Introduce PasswordsModelDelegate as an abstraction between ManagePasswordsBubbleModel and ManagePas… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
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/passwords/manage_passwords_bubble_model.h" 5 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
14 #include "chrome/browser/password_manager/password_store_factory.h" 14 #include "chrome/browser/password_manager/password_store_factory.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/sync/profile_sync_service_factory.h" 16 #include "chrome/browser/sync/profile_sync_service_factory.h"
17 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
18 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" 17 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h"
18 #include "chrome/browser/ui/passwords/passwords_model_delegate.h"
19 #include "chrome/common/url_constants.h" 19 #include "chrome/common/url_constants.h"
20 #include "chrome/grit/chromium_strings.h" 20 #include "chrome/grit/chromium_strings.h"
21 #include "chrome/grit/generated_resources.h" 21 #include "chrome/grit/generated_resources.h"
22 #include "components/browser_sync/browser/profile_sync_service.h" 22 #include "components/browser_sync/browser/profile_sync_service.h"
23 #include "components/password_manager/core/browser/password_bubble_experiment.h" 23 #include "components/password_manager/core/browser/password_bubble_experiment.h"
24 #include "components/password_manager/core/browser/password_store.h" 24 #include "components/password_manager/core/browser/password_store.h"
25 #include "components/password_manager/core/common/credential_manager_types.h" 25 #include "components/password_manager/core/common/credential_manager_types.h"
26 #include "components/password_manager/core/common/password_manager_ui.h" 26 #include "components/password_manager/core/common/password_manager_ui.h"
27 #include "content/public/browser/web_contents.h"
27 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
28 29
29 namespace metrics_util = password_manager::metrics_util; 30 namespace metrics_util = password_manager::metrics_util;
30 31
31 namespace { 32 namespace {
32 33
33 Profile* GetProfileFromWebContents(content::WebContents* web_contents) { 34 Profile* GetProfileFromWebContents(content::WebContents* web_contents) {
34 if (!web_contents) 35 if (!web_contents)
35 return nullptr; 36 return nullptr;
36 return Profile::FromBrowserContext(web_contents->GetBrowserContext()); 37 return Profile::FromBrowserContext(web_contents->GetBrowserContext());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 69
69 } // namespace 70 } // namespace
70 71
71 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( 72 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
72 content::WebContents* web_contents, 73 content::WebContents* web_contents,
73 DisplayReason display_reason) 74 DisplayReason display_reason)
74 : content::WebContentsObserver(web_contents), 75 : content::WebContentsObserver(web_contents),
75 display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), 76 display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING),
76 dismissal_reason_(metrics_util::NO_DIRECT_INTERACTION), 77 dismissal_reason_(metrics_util::NO_DIRECT_INTERACTION),
77 update_password_submission_event_(metrics_util::NO_UPDATE_SUBMISSION) { 78 update_password_submission_event_(metrics_util::NO_UPDATE_SUBMISSION) {
78 ManagePasswordsUIController* controller = 79 PasswordsModelDelegate* delegate =
79 ManagePasswordsUIController::FromWebContents(web_contents); 80 PasswordsModelDelegateFromWebContents(web_contents);
80 81
81 origin_ = controller->origin(); 82 origin_ = delegate->GetOrigin();
82 state_ = controller->state(); 83 state_ = delegate->GetState();
83 password_overridden_ = controller->PasswordOverridden(); 84 password_overridden_ = delegate->IsPasswordOverridden();
84 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || 85 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
85 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 86 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
86 pending_password_ = controller->PendingPassword(); 87 pending_password_ = delegate->GetPendingPassword();
87 local_credentials_ = DeepCopyForms(controller->GetCurrentForms()); 88 local_credentials_ = DeepCopyForms(delegate->GetCurrentForms());
88 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { 89 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
89 // We don't need anything. 90 // We don't need anything.
90 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { 91 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) {
91 local_credentials_ = DeepCopyForms(controller->GetCurrentForms()); 92 local_credentials_ = DeepCopyForms(delegate->GetCurrentForms());
92 federated_credentials_ = DeepCopyForms(controller->GetFederatedForms()); 93 federated_credentials_ = DeepCopyForms(delegate->GetFederatedForms());
93 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { 94 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) {
94 pending_password_ = controller->PendingPassword(); 95 pending_password_ = delegate->GetPendingPassword();
95 } else { 96 } else {
96 local_credentials_ = DeepCopyForms(controller->GetCurrentForms()); 97 local_credentials_ = DeepCopyForms(delegate->GetCurrentForms());
97 } 98 }
98 99
99 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || 100 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
100 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 101 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
101 UpdatePendingStateTitle(); 102 UpdatePendingStateTitle();
102 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { 103 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
103 title_ = 104 title_ =
104 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); 105 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE);
105 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { 106 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) {
106 GetAccountChooserDialogTitleTextAndLinkRange( 107 GetAccountChooserDialogTitleTextAndLinkRange(
(...skipping 30 matching lines...) Expand all
137 GetAutoSigninPromptFirstRunExperienceExplanation( 138 GetAutoSigninPromptFirstRunExperienceExplanation(
138 GetSmartLockBrandingState(GetProfile()) == 139 GetSmartLockBrandingState(GetProfile()) ==
139 password_bubble_experiment::SmartLockBranding::FULL, 140 password_bubble_experiment::SmartLockBranding::FULL,
140 &autosignin_welcome_text_, 141 &autosignin_welcome_text_,
141 &autosignin_welcome_link_range_); 142 &autosignin_welcome_link_range_);
142 } else if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { 143 } else if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) {
143 interaction_stats_.origin_domain = origin_.GetOrigin(); 144 interaction_stats_.origin_domain = origin_.GetOrigin();
144 interaction_stats_.username_value = pending_password_.username_value; 145 interaction_stats_.username_value = pending_password_.username_value;
145 interaction_stats_.update_time = base::Time::Now(); 146 interaction_stats_.update_time = base::Time::Now();
146 password_manager::InteractionsStats* stats = 147 password_manager::InteractionsStats* stats =
147 controller->GetCurrentInteractionStats(); 148 delegate->GetCurrentInteractionStats();
148 if (stats) { 149 if (stats) {
149 // TODO(vasilii): DCHECK that username and origin are the same. 150 // TODO(vasilii): DCHECK that username and origin are the same.
150 interaction_stats_.dismissal_count = stats->dismissal_count; 151 interaction_stats_.dismissal_count = stats->dismissal_count;
151 } 152 }
152 } 153 }
153 154
154 manage_link_ = 155 manage_link_ =
155 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); 156 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK);
156 157
157 if (display_reason == USER_ACTION) { 158 if (display_reason == USER_ACTION) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 display_disposition_ = metrics_util::AUTOMATIC_SIGNIN_TOAST; 194 display_disposition_ = metrics_util::AUTOMATIC_SIGNIN_TOAST;
194 break; 195 break;
195 case password_manager::ui::MANAGE_STATE: 196 case password_manager::ui::MANAGE_STATE:
196 case password_manager::ui::INACTIVE_STATE: 197 case password_manager::ui::INACTIVE_STATE:
197 NOTREACHED(); 198 NOTREACHED();
198 break; 199 break;
199 } 200 }
200 } 201 }
201 metrics_util::LogUIDisplayDisposition(display_disposition_); 202 metrics_util::LogUIDisplayDisposition(display_disposition_);
202 203
203 controller->OnBubbleShown(); 204 delegate->OnBubbleShown();
204 } 205 }
205 206
206 ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() { 207 ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {
207 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { 208 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) {
208 Profile* profile = GetProfile(); 209 Profile* profile = GetProfile();
209 if (profile) { 210 if (profile) {
210 if (GetSmartLockBrandingState(profile) == 211 if (GetSmartLockBrandingState(profile) ==
211 password_bubble_experiment::SmartLockBranding::FULL) { 212 password_bubble_experiment::SmartLockBranding::FULL) {
212 password_bubble_experiment::RecordSavePromptFirstRunExperienceWasShown( 213 password_bubble_experiment::RecordSavePromptFirstRunExperienceWasShown(
213 profile->GetPrefs()); 214 profile->GetPrefs());
214 } 215 }
215 if (dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION && 216 if (dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION &&
216 display_disposition_ == 217 display_disposition_ ==
217 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING) { 218 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING) {
218 if (interaction_stats_.dismissal_count < 219 if (interaction_stats_.dismissal_count <
219 std::numeric_limits<decltype( 220 std::numeric_limits<decltype(
220 interaction_stats_.dismissal_count)>::max()) 221 interaction_stats_.dismissal_count)>::max())
221 interaction_stats_.dismissal_count++; 222 interaction_stats_.dismissal_count++;
222 password_manager::PasswordStore* password_store = 223 password_manager::PasswordStore* password_store =
223 PasswordStoreFactory::GetForProfile( 224 PasswordStoreFactory::GetForProfile(
224 profile, ServiceAccessType::EXPLICIT_ACCESS) 225 profile, ServiceAccessType::EXPLICIT_ACCESS)
225 .get(); 226 .get();
226 password_store->AddSiteStats(interaction_stats_); 227 password_store->AddSiteStats(interaction_stats_);
227 } 228 }
228 } 229 }
229 } 230 }
230 ManagePasswordsUIController* manage_passwords_ui_controller = 231 PasswordsModelDelegate* delegate =
231 web_contents() ? 232 web_contents() ? PasswordsModelDelegateFromWebContents(web_contents())
232 ManagePasswordsUIController::FromWebContents(web_contents()) 233 : nullptr;
233 : nullptr; 234 if (delegate)
234 if (manage_passwords_ui_controller) 235 delegate->OnBubbleHidden();
235 manage_passwords_ui_controller->OnBubbleHidden();
236 if (dismissal_reason_ == metrics_util::NOT_DISPLAYED) 236 if (dismissal_reason_ == metrics_util::NOT_DISPLAYED)
237 return; 237 return;
238 238
239 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { 239 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
240 // We have separate metrics for the Update bubble so do not record dismissal 240 // We have separate metrics for the Update bubble so do not record dismissal
241 // reason for it. 241 // reason for it.
242 metrics_util::LogUIDismissalReason(dismissal_reason_); 242 metrics_util::LogUIDismissalReason(dismissal_reason_);
243 } 243 }
244 // Check if this was update password and record update statistics. 244 // Check if this was update password and record update statistics.
245 if (update_password_submission_event_ == metrics_util::NO_UPDATE_SUBMISSION && 245 if (update_password_submission_event_ == metrics_util::NO_UPDATE_SUBMISSION &&
246 (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || 246 (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE ||
247 state_ == password_manager::ui::PENDING_PASSWORD_STATE)) { 247 state_ == password_manager::ui::PENDING_PASSWORD_STATE)) {
248 update_password_submission_event_ = 248 update_password_submission_event_ =
249 GetUpdateDismissalReason(NO_INTERACTION); 249 GetUpdateDismissalReason(NO_INTERACTION);
250 if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && 250 if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE &&
251 manage_passwords_ui_controller) 251 delegate)
252 manage_passwords_ui_controller->OnNoInteractionOnUpdate(); 252 delegate->OnNoInteractionOnUpdate();
253 } 253 }
254 if (update_password_submission_event_ != metrics_util::NO_UPDATE_SUBMISSION) 254 if (update_password_submission_event_ != metrics_util::NO_UPDATE_SUBMISSION)
255 LogUpdatePasswordSubmissionEvent(update_password_submission_event_); 255 LogUpdatePasswordSubmissionEvent(update_password_submission_event_);
256 } 256 }
257 257
258 void ManagePasswordsBubbleModel::OnCancelClicked() { 258 void ManagePasswordsBubbleModel::OnCancelClicked() {
259 DCHECK_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, state_); 259 DCHECK_EQ(password_manager::ui::CREDENTIAL_REQUEST_STATE, state_);
260 dismissal_reason_ = metrics_util::CLICKED_CANCEL; 260 dismissal_reason_ = metrics_util::CLICKED_CANCEL;
261 } 261 }
262 262
263 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { 263 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() {
264 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 264 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
265 dismissal_reason_ = metrics_util::CLICKED_NEVER; 265 dismissal_reason_ = metrics_util::CLICKED_NEVER;
266 update_password_submission_event_ = GetUpdateDismissalReason(NOPE_CLICKED); 266 update_password_submission_event_ = GetUpdateDismissalReason(NOPE_CLICKED);
267 CleanStatisticsForSite(web_contents(), origin_); 267 CleanStatisticsForSite(web_contents(), origin_);
268 ManagePasswordsUIController* manage_passwords_ui_controller = 268 PasswordsModelDelegateFromWebContents(web_contents())->NeverSavePassword();
269 ManagePasswordsUIController::FromWebContents(web_contents());
270 manage_passwords_ui_controller->NeverSavePassword();
271 } 269 }
272 270
273 void ManagePasswordsBubbleModel::OnSaveClicked() { 271 void ManagePasswordsBubbleModel::OnSaveClicked() {
274 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_); 272 DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state_);
275 dismissal_reason_ = metrics_util::CLICKED_SAVE; 273 dismissal_reason_ = metrics_util::CLICKED_SAVE;
276 update_password_submission_event_ = GetUpdateDismissalReason(UPDATE_CLICKED); 274 update_password_submission_event_ = GetUpdateDismissalReason(UPDATE_CLICKED);
277 CleanStatisticsForSite(web_contents(), origin_); 275 CleanStatisticsForSite(web_contents(), origin_);
278 ManagePasswordsUIController* manage_passwords_ui_controller = 276 PasswordsModelDelegateFromWebContents(web_contents())->SavePassword();
279 ManagePasswordsUIController::FromWebContents(web_contents());
280 manage_passwords_ui_controller->SavePassword();
281 } 277 }
282 278
283 void ManagePasswordsBubbleModel::OnNopeUpdateClicked() { 279 void ManagePasswordsBubbleModel::OnNopeUpdateClicked() {
284 update_password_submission_event_ = GetUpdateDismissalReason(NOPE_CLICKED); 280 update_password_submission_event_ = GetUpdateDismissalReason(NOPE_CLICKED);
285 ManagePasswordsUIController* manage_passwords_ui_controller = 281 PasswordsModelDelegateFromWebContents(web_contents())->OnNopeUpdateClicked();
286 ManagePasswordsUIController::FromWebContents(web_contents());
287 manage_passwords_ui_controller->OnNopeUpdateClicked();
288 } 282 }
289 283
290 void ManagePasswordsBubbleModel::OnUpdateClicked( 284 void ManagePasswordsBubbleModel::OnUpdateClicked(
291 const autofill::PasswordForm& password_form) { 285 const autofill::PasswordForm& password_form) {
292 update_password_submission_event_ = GetUpdateDismissalReason(UPDATE_CLICKED); 286 update_password_submission_event_ = GetUpdateDismissalReason(UPDATE_CLICKED);
293 ManagePasswordsUIController* manage_passwords_ui_controller = 287 PasswordsModelDelegateFromWebContents(web_contents())->UpdatePassword(
294 ManagePasswordsUIController::FromWebContents(web_contents()); 288 password_form);
295 manage_passwords_ui_controller->UpdatePassword(password_form);
296 } 289 }
297 290
298 void ManagePasswordsBubbleModel::OnDoneClicked() { 291 void ManagePasswordsBubbleModel::OnDoneClicked() {
299 dismissal_reason_ = metrics_util::CLICKED_DONE; 292 dismissal_reason_ = metrics_util::CLICKED_DONE;
300 } 293 }
301 294
302 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()? 295 // TODO(gcasto): Is it worth having this be separate from OnDoneClicked()?
303 // User intent is pretty similar in both cases. 296 // User intent is pretty similar in both cases.
304 void ManagePasswordsBubbleModel::OnOKClicked() { 297 void ManagePasswordsBubbleModel::OnOKClicked() {
305 dismissal_reason_ = metrics_util::CLICKED_OK; 298 dismissal_reason_ = metrics_util::CLICKED_OK;
306 } 299 }
307 300
308 void ManagePasswordsBubbleModel::OnManageLinkClicked() { 301 void ManagePasswordsBubbleModel::OnManageLinkClicked() {
309 dismissal_reason_ = metrics_util::CLICKED_MANAGE; 302 dismissal_reason_ = metrics_util::CLICKED_MANAGE;
310 if (GetSmartLockBrandingState(GetProfile()) == 303 if (GetSmartLockBrandingState(GetProfile()) ==
311 password_bubble_experiment::SmartLockBranding::FULL) { 304 password_bubble_experiment::SmartLockBranding::FULL) {
312 ManagePasswordsUIController::FromWebContents(web_contents()) 305 PasswordsModelDelegateFromWebContents(web_contents())
313 ->NavigateToExternalPasswordManager(); 306 ->NavigateToExternalPasswordManager();
314 } else { 307 } else {
315 ManagePasswordsUIController::FromWebContents(web_contents()) 308 PasswordsModelDelegateFromWebContents(web_contents())
316 ->NavigateToPasswordManagerSettingsPage(); 309 ->NavigateToPasswordManagerSettingsPage();
317 } 310 }
318 } 311 }
319 312
320 void ManagePasswordsBubbleModel::OnBrandLinkClicked() { 313 void ManagePasswordsBubbleModel::OnBrandLinkClicked() {
321 dismissal_reason_ = metrics_util::CLICKED_BRAND_NAME; 314 dismissal_reason_ = metrics_util::CLICKED_BRAND_NAME;
322 switch (GetSmartLockBrandingState(GetProfile())) { 315 switch (GetSmartLockBrandingState(GetProfile())) {
323 case password_bubble_experiment::SmartLockBranding::FULL: 316 case password_bubble_experiment::SmartLockBranding::FULL:
324 ManagePasswordsUIController::FromWebContents(web_contents()) 317 PasswordsModelDelegateFromWebContents(web_contents())
325 ->NavigateToSmartLockPage(); 318 ->NavigateToSmartLockPage();
326 break; 319 break;
327 case password_bubble_experiment::SmartLockBranding::SAVE_BUBBLE_ONLY: 320 case password_bubble_experiment::SmartLockBranding::SAVE_BUBBLE_ONLY:
328 ManagePasswordsUIController::FromWebContents(web_contents()) 321 PasswordsModelDelegateFromWebContents(web_contents())
329 ->NavigateToSmartLockHelpPage(); 322 ->NavigateToSmartLockHelpPage();
330 break; 323 break;
331 case password_bubble_experiment::SmartLockBranding::NONE: 324 case password_bubble_experiment::SmartLockBranding::NONE:
332 NOTREACHED(); 325 NOTREACHED();
333 break; 326 break;
334 } 327 }
335 } 328 }
336 329
337 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() { 330 void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() {
338 DCHECK_EQ(password_manager::ui::AUTO_SIGNIN_STATE, state_); 331 DCHECK_EQ(password_manager::ui::AUTO_SIGNIN_STATE, state_);
(...skipping 23 matching lines...) Expand all
362 if (action == REMOVE_PASSWORD) 355 if (action == REMOVE_PASSWORD)
363 password_store->RemoveLogin(password_form); 356 password_store->RemoveLogin(password_form);
364 else 357 else
365 password_store->AddLogin(password_form); 358 password_store->AddLogin(password_form);
366 } 359 }
367 360
368 void ManagePasswordsBubbleModel::OnChooseCredentials( 361 void ManagePasswordsBubbleModel::OnChooseCredentials(
369 const autofill::PasswordForm& password_form, 362 const autofill::PasswordForm& password_form,
370 password_manager::CredentialType credential_type) { 363 password_manager::CredentialType credential_type) {
371 dismissal_reason_ = metrics_util::CLICKED_CREDENTIAL; 364 dismissal_reason_ = metrics_util::CLICKED_CREDENTIAL;
372 ManagePasswordsUIController* manage_passwords_ui_controller = 365 PasswordsModelDelegateFromWebContents(web_contents())->ChooseCredential(
373 ManagePasswordsUIController::FromWebContents(web_contents()); 366 password_form, credential_type);
374 manage_passwords_ui_controller->ChooseCredential(password_form,
375 credential_type);
376 } 367 }
377 368
378 Profile* ManagePasswordsBubbleModel::GetProfile() const { 369 Profile* ManagePasswordsBubbleModel::GetProfile() const {
379 return GetProfileFromWebContents(web_contents()); 370 return GetProfileFromWebContents(web_contents());
380 } 371 }
381 372
382 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const { 373 bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const {
383 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE && 374 return state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE &&
384 local_credentials_.size() > 1 && !password_overridden_; 375 local_credentials_.size() > 1 && !password_overridden_;
385 } 376 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 return metrics_util::NO_UPDATE_SUBMISSION; 427 return metrics_util::NO_UPDATE_SUBMISSION;
437 } 428 }
438 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) 429 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
439 return metrics_util::NO_UPDATE_SUBMISSION; 430 return metrics_util::NO_UPDATE_SUBMISSION;
440 if (password_overridden_) 431 if (password_overridden_)
441 return update_events[3][behavior]; 432 return update_events[3][behavior];
442 if (ShouldShowMultipleAccountUpdateUI()) 433 if (ShouldShowMultipleAccountUpdateUI())
443 return update_events[2][behavior]; 434 return update_events[2][behavior];
444 return update_events[1][behavior]; 435 return update_events[1][behavior];
445 } 436 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698