Index: ios/chrome/browser/passwords/password_controller.mm |
diff --git a/ios/chrome/browser/passwords/password_controller.mm b/ios/chrome/browser/passwords/password_controller.mm |
index fc5d885b3bc2553709c48354ab7457b59e3033a7..3d66ccf8957cf03a9799350e8d0705f9031ab1a7 100644 |
--- a/ios/chrome/browser/passwords/password_controller.mm |
+++ b/ios/chrome/browser/passwords/password_controller.mm |
@@ -34,6 +34,7 @@ |
#include "ios/chrome/browser/experimental_flags.h" |
#include "ios/chrome/browser/infobars/infobar_manager_impl.h" |
#import "ios/chrome/browser/passwords/ios_chrome_save_password_infobar_delegate.h" |
+#import "ios/chrome/browser/passwords/ios_chrome_update_password_infobar_delegate.h" |
sdefresne
2016/07/05 13:29:55
I don't see this file in this CL nor in the reposi
Jackie Quinn
2016/07/05 13:52:35
It just landed earlier today: https://codereview.c
|
#import "ios/chrome/browser/passwords/js_password_manager.h" |
#import "ios/chrome/browser/passwords/password_generation_agent.h" |
#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" |
@@ -42,6 +43,10 @@ |
#import "ios/web/public/web_state/web_state.h" |
#include "url/gurl.h" |
+namespace { |
sdefresne
2016/07/05 13:29:55
Please move this after the "using" statements, and
Jackie Quinn
2016/07/05 13:52:35
Done.
|
+// Types of password infobars to display. |
+typedef NS_ENUM(BOOL, PasswordInfoBarType) { SAVE, UPDATE }; |
sdefresne
2016/07/05 13:29:55
Since this is internal only and in an anonymous na
Jackie Quinn
2016/07/05 13:52:34
Done.
|
+} |
using password_manager::PasswordFormManager; |
using password_manager::PasswordGenerationManager; |
using password_manager::PasswordManager; |
@@ -106,6 +111,12 @@ using password_manager::PasswordManagerDriver; |
fromDictionary:(const base::DictionaryValue*)dictionary |
pageURL:(const GURL&)pageLocation; |
+// Displays infobar for |form| with |type|. If |type| is UPDATE, the user |
+// is prompted to update the password. If |type| is SAVE, the user is prompted |
+// to save the password. |
+- (void)showInfoBarForForm:(std::unique_ptr<PasswordFormManager>)form |
+ infoBarType:(PasswordInfoBarType)type; |
+ |
@end |
namespace { |
@@ -616,6 +627,18 @@ bool GetPageURLAndCheckTrustLevel(web::WebState* web_state, GURL* page_url) { |
} |
} |
+#pragma mark - PasswordManagerClientDelegate |
+ |
+- (void)showSavePasswordInfoBar: |
+ (std::unique_ptr<PasswordFormManager>)formToSave { |
+ [self showInfoBarForForm:std::move(formToSave) infoBarType:SAVE]; |
+} |
+ |
+- (void)showUpdatePasswordInfoBar: |
+ (std::unique_ptr<PasswordFormManager>)formToUpdate { |
+ [self showInfoBarForForm:std::move(formToUpdate) infoBarType:UPDATE]; |
+} |
+ |
#pragma mark - |
#pragma mark WebPasswordFormData Adaptation |
@@ -754,26 +777,6 @@ bool GetPageURLAndCheckTrustLevel(web::WebState* web_state, GURL* page_url) { |
return YES; |
} |
-- (void)showSavePasswordInfoBar: |
- (std::unique_ptr<PasswordFormManager>)formToSave { |
- if (!webStateObserverBridge_ || !webStateObserverBridge_->web_state()) |
- return; |
- |
- bool isSmartLockBrandingEnabled = false; |
- if (self.browserState) { |
- sync_driver::SyncService* sync_service = |
- IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
- self.browserState); |
- isSmartLockBrandingEnabled = |
- password_bubble_experiment::IsSmartLockBrandingSavePromptEnabled( |
- sync_service); |
- } |
- infobars::InfoBarManager* infoBarManager = |
- InfoBarManagerImpl::FromWebState(webStateObserverBridge_->web_state()); |
- IOSChromeSavePasswordInfoBarDelegate::Create( |
- isSmartLockBrandingEnabled, infoBarManager, std::move(formToSave)); |
-} |
- |
- (void)fillPasswordForm:(const autofill::PasswordFormFillData&)formData |
withUsername:(const base::string16&)username |
password:(const base::string16&)password |
@@ -829,4 +832,40 @@ bool GetPageURLAndCheckTrustLevel(web::WebState* web_state, GURL* page_url) { |
return passwordJsManager_; |
} |
+#pragma mark - Private methods |
+ |
+- (void)showInfoBarForForm:(std::unique_ptr<PasswordFormManager>)form |
+ infoBarType:(PasswordInfoBarType)type { |
+ if (!webStateObserverBridge_ || !webStateObserverBridge_->web_state()) |
+ return; |
+ |
+ bool isSmartLockBrandingEnabled = false; |
+ if (self.browserState) { |
+ sync_driver::SyncService* sync_service = |
+ IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
+ self.browserState); |
+ isSmartLockBrandingEnabled = |
+ password_bubble_experiment::IsSmartLockBrandingSavePromptEnabled( |
+ sync_service); |
+ } |
+ infobars::InfoBarManager* infoBarManager = |
+ InfoBarManagerImpl::FromWebState(webStateObserverBridge_->web_state()); |
+ |
+ switch (type) { |
+ case SAVE: |
+ IOSChromeSavePasswordInfoBarDelegate::Create( |
+ isSmartLockBrandingEnabled, infoBarManager, std::move(form)); |
+ break; |
+ |
+ case UPDATE: |
+ IOSChromeUpdatePasswordInfoBarDelegate::Create( |
+ isSmartLockBrandingEnabled, infoBarManager, std::move(form)); |
+ break; |
+ |
+ default: |
sdefresne
2016/07/05 13:29:55
If you use C++ enum or enum class, then you should
Jackie Quinn
2016/07/05 13:52:34
Done.
|
+ NOTREACHED(); |
+ break; |
+ } |
+} |
+ |
@end |