| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #import "ios/chrome/browser/passwords/password_controller.h" | 5 #import "ios/chrome/browser/passwords/password_controller.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <map> | 10 #include <map> |
| 11 #include <memory> | 11 #include <memory> |
| 12 #include <utility> | 12 #include <utility> |
| 13 #include <vector> | 13 #include <vector> |
| 14 | 14 |
| 15 #import "base/ios/weak_nsobject.h" | 15 #import "base/ios/weak_nsobject.h" |
| 16 #include "base/json/json_reader.h" | 16 #include "base/json/json_reader.h" |
| 17 #include "base/json/json_writer.h" | 17 #include "base/json/json_writer.h" |
| 18 #include "base/mac/foundation_util.h" | 18 #include "base/mac/foundation_util.h" |
| 19 #include "base/mac/scoped_nsobject.h" | 19 #include "base/mac/scoped_nsobject.h" |
| 20 #include "base/memory/ptr_util.h" | 20 #include "base/memory/ptr_util.h" |
| 21 #include "base/memory/ref_counted.h" |
| 21 #include "base/strings/string16.h" | 22 #include "base/strings/string16.h" |
| 22 #include "base/strings/sys_string_conversions.h" | 23 #include "base/strings/sys_string_conversions.h" |
| 23 #include "base/strings/utf_string_conversions.h" | 24 #include "base/strings/utf_string_conversions.h" |
| 24 #include "base/values.h" | 25 #include "base/values.h" |
| 25 #include "components/autofill/core/common/password_form.h" | 26 #include "components/autofill/core/common/password_form.h" |
| 26 #include "components/autofill/core/common/password_form_fill_data.h" | 27 #include "components/autofill/core/common/password_form_fill_data.h" |
| 27 #include "components/browser_sync/profile_sync_service.h" | 28 #include "components/browser_sync/profile_sync_service.h" |
| 28 #include "components/infobars/core/infobar_manager.h" | 29 #include "components/infobars/core/infobar_manager.h" |
| 29 #include "components/password_manager/core/browser/password_bubble_experiment.h" | 30 #include "components/password_manager/core/browser/password_bubble_experiment.h" |
| 30 #include "components/password_manager/core/browser/password_generation_manager.h
" | 31 #include "components/password_manager/core/browser/password_generation_manager.h
" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 // Takes values from a JSON |dictionary| and populates the |form|. | 112 // Takes values from a JSON |dictionary| and populates the |form|. |
| 112 // The |pageLocation| is the URL of the current page. | 113 // The |pageLocation| is the URL of the current page. |
| 113 // Returns YES if the form was correctly populated, NO otherwise. | 114 // Returns YES if the form was correctly populated, NO otherwise. |
| 114 - (BOOL)getPasswordForm:(autofill::PasswordForm*)form | 115 - (BOOL)getPasswordForm:(autofill::PasswordForm*)form |
| 115 fromDictionary:(const base::DictionaryValue*)dictionary | 116 fromDictionary:(const base::DictionaryValue*)dictionary |
| 116 pageURL:(const GURL&)pageLocation; | 117 pageURL:(const GURL&)pageLocation; |
| 117 | 118 |
| 118 // Displays infobar for |form| with |type|. If |type| is UPDATE, the user | 119 // Displays infobar for |form| with |type|. If |type| is UPDATE, the user |
| 119 // is prompted to update the password. If |type| is SAVE, the user is prompted | 120 // is prompted to update the password. If |type| is SAVE, the user is prompted |
| 120 // to save the password. | 121 // to save the password. |
| 121 - (void)showInfoBarForForm:(std::unique_ptr<PasswordFormManager>)form | 122 - (void)showInfoBarForForm:(scoped_refptr<PasswordFormManager>)form |
| 122 infoBarType:(PasswordInfoBarType)type; | 123 infoBarType:(PasswordInfoBarType)type; |
| 123 | 124 |
| 124 @end | 125 @end |
| 125 | 126 |
| 126 namespace { | 127 namespace { |
| 127 | 128 |
| 128 // Constructs an array of FormSuggestions, each corresponding to a username/ | 129 // Constructs an array of FormSuggestions, each corresponding to a username/ |
| 129 // password pair in |formFillData|, such that |prefix| is a prefix of the | 130 // password pair in |formFillData|, such that |prefix| is a prefix of the |
| 130 // username of each suggestion. | 131 // username of each suggestion. |
| 131 NSArray* BuildSuggestions(const autofill::PasswordFormFillData& formFillData, | 132 NSArray* BuildSuggestions(const autofill::PasswordFormFillData& formFillData, |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 completionHandler:^(BOOL success) { | 636 completionHandler:^(BOOL success) { |
| 636 completion(); | 637 completion(); |
| 637 }]; | 638 }]; |
| 638 } else { | 639 } else { |
| 639 completion(); | 640 completion(); |
| 640 } | 641 } |
| 641 } | 642 } |
| 642 | 643 |
| 643 #pragma mark - PasswordManagerClientDelegate | 644 #pragma mark - PasswordManagerClientDelegate |
| 644 | 645 |
| 645 - (void)showSavePasswordInfoBar: | 646 - (void)showSavePasswordInfoBar:(scoped_refptr<PasswordFormManager>)formToSave { |
| 646 (std::unique_ptr<PasswordFormManager>)formToSave { | |
| 647 [self showInfoBarForForm:std::move(formToSave) | 647 [self showInfoBarForForm:std::move(formToSave) |
| 648 infoBarType:PasswordInfoBarType::SAVE]; | 648 infoBarType:PasswordInfoBarType::SAVE]; |
| 649 } | 649 } |
| 650 | 650 |
| 651 - (void)showUpdatePasswordInfoBar: | 651 - (void)showUpdatePasswordInfoBar: |
| 652 (std::unique_ptr<PasswordFormManager>)formToUpdate { | 652 (scoped_refptr<PasswordFormManager>)formToUpdate { |
| 653 [self showInfoBarForForm:std::move(formToUpdate) | 653 [self showInfoBarForForm:std::move(formToUpdate) |
| 654 infoBarType:PasswordInfoBarType::UPDATE]; | 654 infoBarType:PasswordInfoBarType::UPDATE]; |
| 655 } | 655 } |
| 656 | 656 |
| 657 #pragma mark - | 657 #pragma mark - |
| 658 #pragma mark WebPasswordFormData Adaptation | 658 #pragma mark WebPasswordFormData Adaptation |
| 659 | 659 |
| 660 - (BOOL)getPasswordForm:(autofill::PasswordForm*)form | 660 - (BOOL)getPasswordForm:(autofill::PasswordForm*)form |
| 661 fromDictionary:(const base::DictionaryValue*)dictionary | 661 fromDictionary:(const base::DictionaryValue*)dictionary |
| 662 pageURL:(const GURL&)pageLocation { | 662 pageURL:(const GURL&)pageLocation { |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 845 - (PasswordManager*)passwordManager { | 845 - (PasswordManager*)passwordManager { |
| 846 return passwordManager_.get(); | 846 return passwordManager_.get(); |
| 847 } | 847 } |
| 848 | 848 |
| 849 - (JsPasswordManager*)passwordJsManager { | 849 - (JsPasswordManager*)passwordJsManager { |
| 850 return passwordJsManager_; | 850 return passwordJsManager_; |
| 851 } | 851 } |
| 852 | 852 |
| 853 #pragma mark - Private methods | 853 #pragma mark - Private methods |
| 854 | 854 |
| 855 - (void)showInfoBarForForm:(std::unique_ptr<PasswordFormManager>)form | 855 - (void)showInfoBarForForm:(scoped_refptr<PasswordFormManager>)form |
| 856 infoBarType:(PasswordInfoBarType)type { | 856 infoBarType:(PasswordInfoBarType)type { |
| 857 if (!webStateObserverBridge_ || !webStateObserverBridge_->web_state()) | 857 if (!webStateObserverBridge_ || !webStateObserverBridge_->web_state()) |
| 858 return; | 858 return; |
| 859 | 859 |
| 860 bool isSmartLockBrandingEnabled = false; | 860 bool isSmartLockBrandingEnabled = false; |
| 861 if (self.browserState) { | 861 if (self.browserState) { |
| 862 syncer::SyncService* sync_service = | 862 syncer::SyncService* sync_service = |
| 863 IOSChromeProfileSyncServiceFactory::GetForBrowserState( | 863 IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
| 864 self.browserState); | 864 self.browserState); |
| 865 isSmartLockBrandingEnabled = | 865 isSmartLockBrandingEnabled = |
| 866 password_bubble_experiment::IsSmartLockUser(sync_service); | 866 password_bubble_experiment::IsSmartLockUser(sync_service); |
| 867 } | 867 } |
| 868 infobars::InfoBarManager* infoBarManager = | 868 infobars::InfoBarManager* infoBarManager = |
| 869 InfoBarManagerImpl::FromWebState(webStateObserverBridge_->web_state()); | 869 InfoBarManagerImpl::FromWebState(webStateObserverBridge_->web_state()); |
| 870 | 870 |
| 871 switch (type) { | 871 switch (type) { |
| 872 case PasswordInfoBarType::SAVE: | 872 case PasswordInfoBarType::SAVE: |
| 873 IOSChromeSavePasswordInfoBarDelegate::Create( | 873 IOSChromeSavePasswordInfoBarDelegate::Create( |
| 874 isSmartLockBrandingEnabled, infoBarManager, std::move(form)); | 874 isSmartLockBrandingEnabled, infoBarManager, std::move(form)); |
| 875 break; | 875 break; |
| 876 | 876 |
| 877 case PasswordInfoBarType::UPDATE: | 877 case PasswordInfoBarType::UPDATE: |
| 878 IOSChromeUpdatePasswordInfoBarDelegate::Create( | 878 IOSChromeUpdatePasswordInfoBarDelegate::Create( |
| 879 isSmartLockBrandingEnabled, infoBarManager, std::move(form)); | 879 isSmartLockBrandingEnabled, infoBarManager, std::move(form)); |
| 880 break; | 880 break; |
| 881 } | 881 } |
| 882 } | 882 } |
| 883 | 883 |
| 884 @end | 884 @end |
| OLD | NEW |