Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: ios/chrome/browser/passwords/password_controller.mm

Issue 1950983002: PasswordController initialization: WebStateObserverBridge to the end (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@608090_isbeingdestroyed
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698