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 <memory> | 10 #include <memory> |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
234 } // namespace | 234 } // namespace |
235 | 235 |
236 @implementation PasswordController { | 236 @implementation PasswordController { |
237 std::unique_ptr<PasswordManager> passwordManager_; | 237 std::unique_ptr<PasswordManager> passwordManager_; |
238 std::unique_ptr<PasswordGenerationManager> passwordGenerationManager_; | 238 std::unique_ptr<PasswordGenerationManager> passwordGenerationManager_; |
239 std::unique_ptr<PasswordManagerClient> passwordManagerClient_; | 239 std::unique_ptr<PasswordManagerClient> passwordManagerClient_; |
240 std::unique_ptr<PasswordManagerDriver> passwordManagerDriver_; | 240 std::unique_ptr<PasswordManagerDriver> passwordManagerDriver_; |
241 base::scoped_nsobject<PasswordGenerationAgent> passwordGenerationAgent_; | 241 base::scoped_nsobject<PasswordGenerationAgent> passwordGenerationAgent_; |
242 | 242 |
243 JsPasswordManager* passwordJsManager_; // weak | 243 JsPasswordManager* passwordJsManager_; // weak |
244 web::WebState* webState_; // weak | |
vasilii
2016/05/10 12:38:47
Why is the new member required?
vabr (Chromium)
2016/05/10 12:48:47
Before it, the WebState was accessed through the W
| |
244 | 245 |
245 // The pending form data. | 246 // The pending form data. |
246 std::unique_ptr<autofill::PasswordFormFillData> formData_; | 247 std::unique_ptr<autofill::PasswordFormFillData> formData_; |
247 | 248 |
248 // Bridge to observe WebState from Objective-C. | 249 // Bridge to observe WebState from Objective-C. |
249 std::unique_ptr<web::WebStateObserverBridge> webStateObserverBridge_; | 250 std::unique_ptr<web::WebStateObserverBridge> webStateObserverBridge_; |
250 } | 251 } |
251 | 252 |
252 @synthesize isWebStateDestroyed = isWebStateDestroyed_; | 253 @synthesize isWebStateDestroyed = isWebStateDestroyed_; |
253 | 254 |
254 - (instancetype)initWithWebState:(web::WebState*)webState | 255 - (instancetype)initWithWebState:(web::WebState*)webState |
255 passwordsUiDelegate:(id<PasswordsUiDelegate>)UIDelegate { | 256 passwordsUiDelegate:(id<PasswordsUiDelegate>)UIDelegate { |
256 self = [self initWithWebState:webState | 257 self = [self initWithWebState:webState |
257 passwordsUiDelegate:UIDelegate | 258 passwordsUiDelegate:UIDelegate |
258 client:nullptr]; | 259 client:nullptr]; |
259 return self; | 260 return self; |
260 } | 261 } |
261 | 262 |
262 - (instancetype)initWithWebState:(web::WebState*)webState | 263 - (instancetype)initWithWebState:(web::WebState*)webState |
263 passwordsUiDelegate:(id<PasswordsUiDelegate>)UIDelegate | 264 passwordsUiDelegate:(id<PasswordsUiDelegate>)UIDelegate |
264 client:(std::unique_ptr<PasswordManagerClient>) | 265 client:(std::unique_ptr<PasswordManagerClient>) |
265 passwordManagerClient { | 266 passwordManagerClient { |
266 DCHECK(webState); | 267 DCHECK(webState); |
267 self = [super init]; | 268 self = [super init]; |
268 if (self) { | 269 if (self) { |
269 webStateObserverBridge_.reset( | 270 webState_ = webState; |
270 new web::WebStateObserverBridge(webState, self)); | |
271 if (passwordManagerClient) | 271 if (passwordManagerClient) |
272 passwordManagerClient_ = std::move(passwordManagerClient); | 272 passwordManagerClient_ = std::move(passwordManagerClient); |
273 else | 273 else |
274 passwordManagerClient_.reset(new IOSChromePasswordManagerClient(self)); | 274 passwordManagerClient_.reset(new IOSChromePasswordManagerClient(self)); |
275 passwordManager_.reset(new PasswordManager(passwordManagerClient_.get())); | 275 passwordManager_.reset(new PasswordManager(passwordManagerClient_.get())); |
276 passwordManagerDriver_.reset(new IOSChromePasswordManagerDriver(self)); | 276 passwordManagerDriver_.reset(new IOSChromePasswordManagerDriver(self)); |
277 if (experimental_flags::IsPasswordGenerationEnabled() && | 277 if (experimental_flags::IsPasswordGenerationEnabled() && |
278 !passwordManagerClient_->IsOffTheRecord()) { | 278 !passwordManagerClient_->IsOffTheRecord()) { |
279 passwordGenerationManager_.reset(new PasswordGenerationManager( | 279 passwordGenerationManager_.reset(new PasswordGenerationManager( |
280 passwordManagerClient_.get(), passwordManagerDriver_.get())); | 280 passwordManagerClient_.get(), passwordManagerDriver_.get())); |
281 passwordGenerationAgent_.reset([[PasswordGenerationAgent alloc] | 281 passwordGenerationAgent_.reset([[PasswordGenerationAgent alloc] |
282 initWithWebState:webState | 282 initWithWebState:webState |
283 passwordManager:passwordManager_.get() | 283 passwordManager:passwordManager_.get() |
284 passwordManagerDriver:passwordManagerDriver_.get() | 284 passwordManagerDriver:passwordManagerDriver_.get() |
285 passwordsUiDelegate:UIDelegate]); | 285 passwordsUiDelegate:UIDelegate]); |
286 } | 286 } |
287 | 287 |
288 passwordJsManager_ = base::mac::ObjCCastStrict<JsPasswordManager>( | 288 passwordJsManager_ = base::mac::ObjCCastStrict<JsPasswordManager>( |
289 [webState->GetJSInjectionReceiver() | 289 [webState->GetJSInjectionReceiver() |
290 instanceOfClass:[JsPasswordManager class]]); | 290 instanceOfClass:[JsPasswordManager class]]); |
291 webStateObserverBridge_.reset( | |
292 new web::WebStateObserverBridge(webState, self)); | |
291 } | 293 } |
292 return self; | 294 return self; |
293 } | 295 } |
294 | 296 |
295 - (instancetype)init { | 297 - (instancetype)init { |
296 NOTREACHED(); | 298 NOTREACHED(); |
297 return nil; | 299 return nil; |
298 } | 300 } |
299 | 301 |
300 - (void)dealloc { | 302 - (void)dealloc { |
301 [self detach]; | 303 [self detach]; |
302 [super dealloc]; | 304 [super dealloc]; |
303 } | 305 } |
304 | 306 |
305 - (ios::ChromeBrowserState*)browserState { | 307 - (ios::ChromeBrowserState*)browserState { |
306 return webStateObserverBridge_ && webStateObserverBridge_->web_state() | 308 return webState_ ? ios::ChromeBrowserState::FromBrowserState( |
307 ? ios::ChromeBrowserState::FromBrowserState( | 309 webState_->GetBrowserState()) |
308 webStateObserverBridge_->web_state()->GetBrowserState()) | 310 : nullptr; |
309 : nullptr; | |
310 } | 311 } |
311 | 312 |
312 - (const GURL&)lastCommittedURL { | 313 - (const GURL&)lastCommittedURL { |
313 if (!webStateObserverBridge_ || !webStateObserverBridge_->web_state()) | 314 if (!webStateObserverBridge_ || !webStateObserverBridge_->web_state()) |
314 return GURL::EmptyGURL(); | 315 return GURL::EmptyGURL(); |
315 return webStateObserverBridge_->web_state()->GetLastCommittedURL(); | 316 return webStateObserverBridge_->web_state()->GetLastCommittedURL(); |
316 } | 317 } |
317 | 318 |
318 - (void)detach { | 319 - (void)detach { |
320 webState_ = nullptr; | |
319 webStateObserverBridge_.reset(); | 321 webStateObserverBridge_.reset(); |
320 passwordGenerationAgent_.reset(); | 322 passwordGenerationAgent_.reset(); |
321 passwordGenerationManager_.reset(); | 323 passwordGenerationManager_.reset(); |
322 passwordManagerDriver_.reset(); | 324 passwordManagerDriver_.reset(); |
323 passwordManager_.reset(); | 325 passwordManager_.reset(); |
324 passwordManagerClient_.reset(); | 326 passwordManagerClient_.reset(); |
325 } | 327 } |
326 | 328 |
327 - (void)findAndFillPasswordForms:(NSString*)username | 329 - (void)findAndFillPasswordForms:(NSString*)username |
328 password:(NSString*)password | 330 password:(NSString*)password |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
821 | 823 |
822 - (PasswordManager*)passwordManager { | 824 - (PasswordManager*)passwordManager { |
823 return passwordManager_.get(); | 825 return passwordManager_.get(); |
824 } | 826 } |
825 | 827 |
826 - (JsPasswordManager*)passwordJsManager { | 828 - (JsPasswordManager*)passwordJsManager { |
827 return passwordJsManager_; | 829 return passwordJsManager_; |
828 } | 830 } |
829 | 831 |
830 @end | 832 @end |
OLD | NEW |