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

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

Issue 1009953002: Integrate ManagePasswordsState into ManagePasswordsUIController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed the comments Created 5 years, 9 months 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 "chrome/browser/password_manager/password_store_factory.h" 7 #include "chrome/browser/password_manager/password_store_factory.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_finder.h" 10 #include "chrome/browser/ui/browser_finder.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 password_bubble_experiment::RecordBubbleClosed(profile->GetPrefs(), reason); 54 password_bubble_experiment::RecordBubbleClosed(profile->GetPrefs(), reason);
55 } 55 }
56 56
57 base::string16 PendingStateTitleBasedOnSavePasswordPref( 57 base::string16 PendingStateTitleBasedOnSavePasswordPref(
58 bool never_save_passwords) { 58 bool never_save_passwords) {
59 return l10n_util::GetStringUTF16( 59 return l10n_util::GetStringUTF16(
60 never_save_passwords ? IDS_MANAGE_PASSWORDS_BLACKLIST_CONFIRMATION_TITLE 60 never_save_passwords ? IDS_MANAGE_PASSWORDS_BLACKLIST_CONFIRMATION_TITLE
61 : IDS_SAVE_PASSWORD); 61 : IDS_SAVE_PASSWORD);
62 } 62 }
63 63
64 class URLCollectionFeedbackSender { 64 ScopedVector<const autofill::PasswordForm> DeepCopyForms(
65 public: 65 const std::vector<const autofill::PasswordForm*>& forms) {
66 URLCollectionFeedbackSender(content::BrowserContext* context, 66 ScopedVector<const autofill::PasswordForm> result;
67 const std::string& url); 67 result.reserve(forms.size());
68 void SendFeedback(); 68 std::transform(forms.begin(), forms.end(), std::back_inserter(result),
69 69 [](const autofill::PasswordForm* form) {
70 private: 70 return new autofill::PasswordForm(*form);
71 static const char kPasswordManagerURLCollectionBucket[]; 71 });
72 content::BrowserContext* context_; 72 return result.Pass();
73 std::string url_;
74
75 DISALLOW_COPY_AND_ASSIGN(URLCollectionFeedbackSender);
76 };
77
78 const char URLCollectionFeedbackSender::kPasswordManagerURLCollectionBucket[] =
79 "ChromePasswordManagerFailure";
80
81 URLCollectionFeedbackSender::URLCollectionFeedbackSender(
82 content::BrowserContext* context,
83 const std::string& url)
84 : context_(context), url_(url) {
85 }
86
87 void URLCollectionFeedbackSender::SendFeedback() {
88 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
89 scoped_refptr<FeedbackData> feedback_data = new FeedbackData();
90 feedback_data->set_category_tag(kPasswordManagerURLCollectionBucket);
91 feedback_data->set_description("");
92
93 feedback_data->set_image(make_scoped_ptr(new std::string));
94
95 feedback_data->set_page_url(url_);
96 feedback_data->set_user_email("");
97 feedback_data->set_context(context_);
98 feedback_util::SendReport(feedback_data);
99 } 73 }
100 74
101 } // namespace 75 } // namespace
102 76
103 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( 77 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
104 content::WebContents* web_contents) 78 content::WebContents* web_contents)
105 : content::WebContentsObserver(web_contents), 79 : content::WebContentsObserver(web_contents),
106 never_save_passwords_(false), 80 never_save_passwords_(false),
107 display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), 81 display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING),
108 dismissal_reason_(metrics_util::NOT_DISPLAYED) { 82 dismissal_reason_(metrics_util::NOT_DISPLAYED) {
109 ManagePasswordsUIController* controller = 83 ManagePasswordsUIController* controller =
110 ManagePasswordsUIController::FromWebContents(web_contents); 84 ManagePasswordsUIController::FromWebContents(web_contents);
111 85
112 origin_ = controller->origin(); 86 origin_ = controller->origin();
113 state_ = controller->state(); 87 state_ = controller->state();
114 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { 88 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) {
115 pending_password_ = controller->PendingPassword(); 89 pending_password_ = controller->PendingPassword();
116 best_matches_ = controller->best_matches(); 90 local_credentials_ = DeepCopyForms(controller->GetCurrentForms());
91 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
92 // We don't need anything.
117 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { 93 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) {
118 local_pending_credentials_.swap(controller->local_credentials_forms()); 94 local_credentials_ = DeepCopyForms(controller->GetCurrentForms());
119 federated_pending_credentials_.swap( 95 federated_credentials_ = DeepCopyForms(controller->GetFederatedForms());
120 controller->federated_credentials_forms());
121 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { 96 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) {
122 pending_password_ = *controller->local_credentials_forms()[0]; 97 pending_password_ = *controller->GetCurrentForms()[0];
123 } else { 98 } else {
124 best_matches_ = controller->best_matches(); 99 local_credentials_ = DeepCopyForms(controller->GetCurrentForms());
125 } 100 }
126 101
127 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { 102 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) {
128 title_ = PendingStateTitleBasedOnSavePasswordPref(never_save_passwords_); 103 title_ = PendingStateTitleBasedOnSavePasswordPref(never_save_passwords_);
129 } else if (state_ == password_manager::ui::BLACKLIST_STATE) { 104 } else if (state_ == password_manager::ui::BLACKLIST_STATE) {
130 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_BLACKLISTED_TITLE); 105 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_BLACKLISTED_TITLE);
131 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { 106 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
132 title_ = 107 title_ =
133 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); 108 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE);
134 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { 109 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 ManagePasswordsUIController* controller = 163 ManagePasswordsUIController* controller =
189 ManagePasswordsUIController::FromWebContents(web_contents()); 164 ManagePasswordsUIController::FromWebContents(web_contents());
190 controller->OnBubbleShown(); 165 controller->OnBubbleShown();
191 } 166 }
192 167
193 void ManagePasswordsBubbleModel::OnBubbleHidden() { 168 void ManagePasswordsBubbleModel::OnBubbleHidden() {
194 ManagePasswordsUIController* manage_passwords_ui_controller = 169 ManagePasswordsUIController* manage_passwords_ui_controller =
195 web_contents() ? 170 web_contents() ?
196 ManagePasswordsUIController::FromWebContents(web_contents()) 171 ManagePasswordsUIController::FromWebContents(web_contents())
197 : nullptr; 172 : nullptr;
198 if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE &&
199 manage_passwords_ui_controller) {
200 // It's time to run the pending callback if it wasn't called in
201 // OnChooseCredentials().
202 // TODO(vasilii): remove this. It's not a bubble's problem because the
203 // controller is notified anyway about closed bubble.
204 manage_passwords_ui_controller->ChooseCredential(
205 autofill::PasswordForm(),
206 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY);
207 state_ = password_manager::ui::INACTIVE_STATE;
208 }
209 if (manage_passwords_ui_controller) 173 if (manage_passwords_ui_controller)
210 manage_passwords_ui_controller->OnBubbleHidden(); 174 manage_passwords_ui_controller->OnBubbleHidden();
211 if (dismissal_reason_ == metrics_util::NOT_DISPLAYED) 175 if (dismissal_reason_ == metrics_util::NOT_DISPLAYED)
212 return; 176 return;
213 177
214 metrics_util::LogUIDismissalReason(dismissal_reason_); 178 metrics_util::LogUIDismissalReason(dismissal_reason_);
215 // Other use cases have been reported in the callbacks like OnSaveClicked(). 179 // Other use cases have been reported in the callbacks like OnSaveClicked().
216 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE && 180 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE &&
217 dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION) 181 dismissal_reason_ == metrics_util::NO_DIRECT_INTERACTION)
218 RecordExperimentStatistics(web_contents(), dismissal_reason_); 182 RecordExperimentStatistics(web_contents(), dismissal_reason_);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 280
317 // static 281 // static
318 int ManagePasswordsBubbleModel::UsernameFieldWidth() { 282 int ManagePasswordsBubbleModel::UsernameFieldWidth() {
319 return GetFieldWidth(USERNAME_FIELD); 283 return GetFieldWidth(USERNAME_FIELD);
320 } 284 }
321 285
322 // static 286 // static
323 int ManagePasswordsBubbleModel::PasswordFieldWidth() { 287 int ManagePasswordsBubbleModel::PasswordFieldWidth() {
324 return GetFieldWidth(PASSWORD_FIELD); 288 return GetFieldWidth(PASSWORD_FIELD);
325 } 289 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698