| 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/passwords/password_manager_presenter.h" | 5 #include "chrome/browser/ui/passwords/password_manager_presenter.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
| 13 #include "base/metrics/user_metrics.h" |
| 13 #include "base/metrics/user_metrics_action.h" | 14 #include "base/metrics/user_metrics_action.h" |
| 14 #include "base/strings/string_piece.h" | 15 #include "base/strings/string_piece.h" |
| 15 #include "base/strings/string_split.h" | 16 #include "base/strings/string_split.h" |
| 16 #include "base/strings/string_util.h" | 17 #include "base/strings/string_util.h" |
| 17 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
| 18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| 19 #include "base/values.h" | 20 #include "base/values.h" |
| 20 #include "build/build_config.h" | 21 #include "build/build_config.h" |
| 21 #include "chrome/browser/password_manager/password_store_factory.h" | 22 #include "chrome/browser/password_manager/password_store_factory.h" |
| 22 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
| 23 #include "chrome/browser/signin/signin_manager_factory.h" | 24 #include "chrome/browser/signin/signin_manager_factory.h" |
| 24 #include "chrome/browser/sync/profile_sync_service_factory.h" | 25 #include "chrome/browser/sync/profile_sync_service_factory.h" |
| 25 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" | 26 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" |
| 26 #include "chrome/browser/ui/passwords/password_ui_view.h" | 27 #include "chrome/browser/ui/passwords/password_ui_view.h" |
| 27 #include "chrome/common/chrome_switches.h" | 28 #include "chrome/common/chrome_switches.h" |
| 28 #include "chrome/common/pref_names.h" | 29 #include "chrome/common/pref_names.h" |
| 29 #include "chrome/common/url_constants.h" | 30 #include "chrome/common/url_constants.h" |
| 30 #include "components/autofill/core/common/password_form.h" | 31 #include "components/autofill/core/common/password_form.h" |
| 31 #include "components/browser_sync/profile_sync_service.h" | 32 #include "components/browser_sync/profile_sync_service.h" |
| 32 #include "components/password_manager/core/browser/affiliation_utils.h" | 33 #include "components/password_manager/core/browser/affiliation_utils.h" |
| 33 #include "components/password_manager/core/browser/import/password_importer.h" | 34 #include "components/password_manager/core/browser/import/password_importer.h" |
| 34 #include "components/password_manager/core/browser/password_ui_utils.h" | 35 #include "components/password_manager/core/browser/password_ui_utils.h" |
| 35 #include "components/password_manager/core/common/password_manager_pref_names.h" | 36 #include "components/password_manager/core/common/password_manager_pref_names.h" |
| 36 #include "components/password_manager/sync/browser/password_sync_util.h" | 37 #include "components/password_manager/sync/browser/password_sync_util.h" |
| 37 #include "components/prefs/pref_service.h" | 38 #include "components/prefs/pref_service.h" |
| 38 #include "content/public/browser/browser_thread.h" | 39 #include "content/public/browser/browser_thread.h" |
| 39 #include "content/public/browser/user_metrics.h" | |
| 40 #include "content/public/browser/web_contents.h" | 40 #include "content/public/browser/web_contents.h" |
| 41 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 41 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 42 | 42 |
| 43 #if defined(OS_WIN) | 43 #if defined(OS_WIN) |
| 44 #include "chrome/browser/password_manager/password_manager_util_win.h" | 44 #include "chrome/browser/password_manager/password_manager_util_win.h" |
| 45 #elif defined(OS_MACOSX) | 45 #elif defined(OS_MACOSX) |
| 46 #include "chrome/browser/password_manager/password_manager_util_mac.h" | 46 #include "chrome/browser/password_manager/password_manager_util_mac.h" |
| 47 #endif | 47 #endif |
| 48 | 48 |
| 49 using base::StringPiece; | 49 using base::StringPiece; |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 // Don't let it crash the browser. | 183 // Don't let it crash the browser. |
| 184 return; | 184 return; |
| 185 } | 185 } |
| 186 PasswordStore* store = GetPasswordStore(); | 186 PasswordStore* store = GetPasswordStore(); |
| 187 if (!store) | 187 if (!store) |
| 188 return; | 188 return; |
| 189 | 189 |
| 190 RemoveDuplicates(*password_list_[index], &password_duplicates_, store, | 190 RemoveDuplicates(*password_list_[index], &password_duplicates_, store, |
| 191 PasswordEntryType::SAVED); | 191 PasswordEntryType::SAVED); |
| 192 store->RemoveLogin(*password_list_[index]); | 192 store->RemoveLogin(*password_list_[index]); |
| 193 content::RecordAction( | 193 base::RecordAction( |
| 194 base::UserMetricsAction("PasswordManager_RemoveSavedPassword")); | 194 base::UserMetricsAction("PasswordManager_RemoveSavedPassword")); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void PasswordManagerPresenter::RemovePasswordException(size_t index) { | 197 void PasswordManagerPresenter::RemovePasswordException(size_t index) { |
| 198 if (index >= password_exception_list_.size()) { | 198 if (index >= password_exception_list_.size()) { |
| 199 // |index| out of bounds might come from a compromised renderer | 199 // |index| out of bounds might come from a compromised renderer |
| 200 // (http://crbug.com/362054), or the user removed a password exception while | 200 // (http://crbug.com/362054), or the user removed a password exception while |
| 201 // a request to the store is in progress (i.e. |password_exception_list_| | 201 // a request to the store is in progress (i.e. |password_exception_list_| |
| 202 // is empty). Don't let it crash the browser. | 202 // is empty). Don't let it crash the browser. |
| 203 return; | 203 return; |
| 204 } | 204 } |
| 205 PasswordStore* store = GetPasswordStore(); | 205 PasswordStore* store = GetPasswordStore(); |
| 206 if (!store) | 206 if (!store) |
| 207 return; | 207 return; |
| 208 RemoveDuplicates(*password_exception_list_[index], | 208 RemoveDuplicates(*password_exception_list_[index], |
| 209 &password_exception_duplicates_, store, | 209 &password_exception_duplicates_, store, |
| 210 PasswordEntryType::BLACKLISTED); | 210 PasswordEntryType::BLACKLISTED); |
| 211 store->RemoveLogin(*password_exception_list_[index]); | 211 store->RemoveLogin(*password_exception_list_[index]); |
| 212 content::RecordAction( | 212 base::RecordAction( |
| 213 base::UserMetricsAction("PasswordManager_RemovePasswordException")); | 213 base::UserMetricsAction("PasswordManager_RemovePasswordException")); |
| 214 } | 214 } |
| 215 | 215 |
| 216 void PasswordManagerPresenter::RequestShowPassword(size_t index) { | 216 void PasswordManagerPresenter::RequestShowPassword(size_t index) { |
| 217 #if !defined(OS_ANDROID) // This is never called on Android. | 217 #if !defined(OS_ANDROID) // This is never called on Android. |
| 218 if (index >= password_list_.size()) { | 218 if (index >= password_list_.size()) { |
| 219 // |index| out of bounds might come from a compromised renderer | 219 // |index| out of bounds might come from a compromised renderer |
| 220 // (http://crbug.com/362054), or the user requested to show a password while | 220 // (http://crbug.com/362054), or the user requested to show a password while |
| 221 // a request to the store is in progress (i.e. |password_list_| | 221 // a request to the store is in progress (i.e. |password_list_| |
| 222 // is empty). Don't let it crash the browser. | 222 // is empty). Don't let it crash the browser. |
| 223 return; | 223 return; |
| 224 } | 224 } |
| 225 | 225 |
| 226 if (!IsUserAuthenticated()) { | 226 if (!IsUserAuthenticated()) { |
| 227 return; | 227 return; |
| 228 } | 228 } |
| 229 | 229 |
| 230 syncer::SyncService* sync_service = nullptr; | 230 syncer::SyncService* sync_service = nullptr; |
| 231 if (ProfileSyncServiceFactory::HasProfileSyncService( | 231 if (ProfileSyncServiceFactory::HasProfileSyncService( |
| 232 password_view_->GetProfile())) { | 232 password_view_->GetProfile())) { |
| 233 sync_service = | 233 sync_service = |
| 234 ProfileSyncServiceFactory::GetForProfile(password_view_->GetProfile()); | 234 ProfileSyncServiceFactory::GetForProfile(password_view_->GetProfile()); |
| 235 } | 235 } |
| 236 if (password_manager::sync_util::IsSyncAccountCredential( | 236 if (password_manager::sync_util::IsSyncAccountCredential( |
| 237 *password_list_[index], sync_service, | 237 *password_list_[index], sync_service, |
| 238 SigninManagerFactory::GetForProfile(password_view_->GetProfile()))) { | 238 SigninManagerFactory::GetForProfile(password_view_->GetProfile()))) { |
| 239 content::RecordAction( | 239 base::RecordAction( |
| 240 base::UserMetricsAction("PasswordManager_SyncCredentialShown")); | 240 base::UserMetricsAction("PasswordManager_SyncCredentialShown")); |
| 241 } | 241 } |
| 242 | 242 |
| 243 // Call back the front end to reveal the password. | 243 // Call back the front end to reveal the password. |
| 244 std::string origin_url = password_manager::GetHumanReadableOrigin( | 244 std::string origin_url = password_manager::GetHumanReadableOrigin( |
| 245 *password_list_[index]); | 245 *password_list_[index]); |
| 246 password_view_->ShowPassword( | 246 password_view_->ShowPassword( |
| 247 index, | 247 index, |
| 248 origin_url, | 248 origin_url, |
| 249 base::UTF16ToUTF8(password_list_[index]->username_value), | 249 base::UTF16ToUTF8(password_list_[index]->username_value), |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 | 393 |
| 394 void PasswordManagerPresenter::PasswordExceptionListPopulater:: | 394 void PasswordManagerPresenter::PasswordExceptionListPopulater:: |
| 395 OnGetPasswordStoreResults( | 395 OnGetPasswordStoreResults( |
| 396 std::vector<std::unique_ptr<autofill::PasswordForm>> results) { | 396 std::vector<std::unique_ptr<autofill::PasswordForm>> results) { |
| 397 page_->password_exception_list_ = std::move(results); | 397 page_->password_exception_list_ = std::move(results); |
| 398 page_->SortEntriesAndHideDuplicates(&page_->password_exception_list_, | 398 page_->SortEntriesAndHideDuplicates(&page_->password_exception_list_, |
| 399 &page_->password_exception_duplicates_, | 399 &page_->password_exception_duplicates_, |
| 400 PasswordEntryType::BLACKLISTED); | 400 PasswordEntryType::BLACKLISTED); |
| 401 page_->SetPasswordExceptionList(); | 401 page_->SetPasswordExceptionList(); |
| 402 } | 402 } |
| OLD | NEW |