Commit f3a93cfd authored by Sylvain Defresne's avatar Sylvain Defresne Committed by Commit Bot

Allow WebStateObserver to observe N WebStates [57/N].

Convert CWVAutofillController to directly track the registration
with the observed WebState instead of relying on deprecated code
in WebStateObserverBridge.

Bug: 775684
Change-Id: I2efecc5c102271721fa4b47d4bc50a6bd63568f5
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Reviewed-on: https://chromium-review.googlesource.com/789077
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521306}
parent b36b0d3b
...@@ -64,15 +64,17 @@ ...@@ -64,15 +64,17 @@
JSAutofillManager:(JsAutofillManager*)JSAutofillManager { JSAutofillManager:(JsAutofillManager*)JSAutofillManager {
self = [super init]; self = [super init];
if (self) { if (self) {
DCHECK(webState);
_webState = webState; _webState = webState;
ios_web_view::WebViewBrowserState* browserState = ios_web_view::WebViewBrowserState* browserState =
ios_web_view::WebViewBrowserState::FromBrowserState( ios_web_view::WebViewBrowserState::FromBrowserState(
webState->GetBrowserState()); _webState->GetBrowserState());
_autofillAgent = autofillAgent; _autofillAgent = autofillAgent;
_webStateObserverBridge.reset( _webStateObserverBridge =
new web::WebStateObserverBridge(webState, self)); std::make_unique<web::WebStateObserverBridge>(self);
_webState->AddObserver(_webStateObserverBridge.get());
std::unique_ptr<IdentityProvider> identityProvider( std::unique_ptr<IdentityProvider> identityProvider(
std::make_unique<ProfileIdentityProvider>( std::make_unique<ProfileIdentityProvider>(
...@@ -90,17 +92,25 @@ ...@@ -90,17 +92,25 @@
GetAutofillWebDataForBrowserState( GetAutofillWebDataForBrowserState(
browserState, ServiceAccessType::EXPLICIT_ACCESS))); browserState, ServiceAccessType::EXPLICIT_ACCESS)));
autofill::AutofillDriverIOS::CreateForWebStateAndDelegate( autofill::AutofillDriverIOS::CreateForWebStateAndDelegate(
webState, _autofillClient.get(), self, _webState, _autofillClient.get(), self,
ios_web_view::ApplicationContext::GetInstance()->GetApplicationLocale(), ios_web_view::ApplicationContext::GetInstance()->GetApplicationLocale(),
autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER); autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER);
_autofillManager = _autofillManager = autofill::AutofillDriverIOS::FromWebState(_webState)
autofill::AutofillDriverIOS::FromWebState(webState)->autofill_manager(); ->autofill_manager();
_JSAutofillManager = JSAutofillManager; _JSAutofillManager = JSAutofillManager;
} }
return self; return self;
} }
- (void)dealloc {
if (_webState) {
_webState->RemoveObserver(_webStateObserverBridge.get());
_webStateObserverBridge.reset();
_webState = nullptr;
}
}
#pragma mark - Public Methods #pragma mark - Public Methods
- (void)clearFormWithName:(NSString*)formName - (void)clearFormWithName:(NSString*)formName
...@@ -243,6 +253,7 @@ ...@@ -243,6 +253,7 @@
- (void)webState:(web::WebState*)webState - (void)webState:(web::WebState*)webState
didRegisterFormActivity:(const web::FormActivityParams&)params { didRegisterFormActivity:(const web::FormActivityParams&)params {
DCHECK_EQ(_webState, webState);
NSString* nsFormName = base::SysUTF8ToNSString(params.form_name); NSString* nsFormName = base::SysUTF8ToNSString(params.form_name);
NSString* nsFieldName = base::SysUTF8ToNSString(params.field_name); NSString* nsFieldName = base::SysUTF8ToNSString(params.field_name);
NSString* nsValue = base::SysUTF8ToNSString(params.value); NSString* nsValue = base::SysUTF8ToNSString(params.value);
...@@ -289,7 +300,9 @@ ...@@ -289,7 +300,9 @@
} }
- (void)webStateDestroyed:(web::WebState*)webState { - (void)webStateDestroyed:(web::WebState*)webState {
DCHECK_EQ(_webState, webState);
[_autofillAgent detachFromWebState]; [_autofillAgent detachFromWebState];
_webState->RemoveObserver(_webStateObserverBridge.get());
_webStateObserverBridge.reset(); _webStateObserverBridge.reset();
_webState = nullptr; _webState = nullptr;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment