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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc

Issue 257153003: We have a problem in the process on destroying WebContentsImpl because (Closed) Base URL: https://git.chromium.org/chromium/src.git@master
Patch Set: Removed what was added in https://codereview.chromium.org/239393009 Created 6 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 5 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
6 6
7 #include "chrome/browser/password_manager/password_store_factory.h" 7 #include "chrome/browser/password_manager/password_store_factory.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_finder.h" 9 #include "chrome/browser/ui/browser_finder.h"
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.h" 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.h"
11 #include "components/password_manager/core/browser/password_store.h" 11 #include "components/password_manager/core/browser/password_store.h"
12 #include "grit/generated_resources.h" 12 #include "grit/generated_resources.h"
13 #include "ui/base/l10n/l10n_util.h" 13 #include "ui/base/l10n/l10n_util.h"
14 14
15 using content::WebContents; 15 using content::WebContents;
16 using autofill::PasswordFormMap; 16 using autofill::PasswordFormMap;
17 17
18 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( 18 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
19 content::WebContents* web_contents) 19 content::WebContents* web_contents)
20 : content::WebContentsObserver(web_contents), 20 : content::WebContentsObserver(web_contents),
21 web_contents_(web_contents),
22 display_disposition_( 21 display_disposition_(
23 password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), 22 password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING),
24 dismissal_reason_(password_manager::metrics_util::NOT_DISPLAYED) { 23 dismissal_reason_(password_manager::metrics_util::NOT_DISPLAYED) {
25 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = 24 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller =
26 ManagePasswordsBubbleUIController::FromWebContents(web_contents_); 25 ManagePasswordsBubbleUIController::FromWebContents(web_contents);
27 26
28 if (manage_passwords_bubble_ui_controller->password_to_be_saved()) 27 if (manage_passwords_bubble_ui_controller->password_to_be_saved())
29 manage_passwords_bubble_state_ = PASSWORD_TO_BE_SAVED; 28 manage_passwords_bubble_state_ = PASSWORD_TO_BE_SAVED;
30 else 29 else
31 manage_passwords_bubble_state_ = MANAGE_PASSWORDS; 30 manage_passwords_bubble_state_ = MANAGE_PASSWORDS;
32 31
33 title_ = l10n_util::GetStringUTF16( 32 title_ = l10n_util::GetStringUTF16(
34 (manage_passwords_bubble_state_ == PASSWORD_TO_BE_SAVED) ? 33 (manage_passwords_bubble_state_ == PASSWORD_TO_BE_SAVED) ?
35 IDS_SAVE_PASSWORD : IDS_MANAGE_PASSWORDS); 34 IDS_SAVE_PASSWORD : IDS_MANAGE_PASSWORDS);
36 pending_credentials_ = 35 pending_credentials_ =
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } 79 }
81 80
82 void ManagePasswordsBubbleModel::OnNopeClicked() { 81 void ManagePasswordsBubbleModel::OnNopeClicked() {
83 dismissal_reason_ = password_manager::metrics_util::CLICKED_NOPE; 82 dismissal_reason_ = password_manager::metrics_util::CLICKED_NOPE;
84 manage_passwords_bubble_state_ = PASSWORD_TO_BE_SAVED; 83 manage_passwords_bubble_state_ = PASSWORD_TO_BE_SAVED;
85 } 84 }
86 85
87 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { 86 void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() {
88 dismissal_reason_ = password_manager::metrics_util::CLICKED_NEVER; 87 dismissal_reason_ = password_manager::metrics_util::CLICKED_NEVER;
89 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = 88 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller =
90 ManagePasswordsBubbleUIController::FromWebContents(web_contents_); 89 ManagePasswordsBubbleUIController::FromWebContents(web_contents());
91 manage_passwords_bubble_ui_controller->NeverSavePassword(); 90 manage_passwords_bubble_ui_controller->NeverSavePassword();
92 manage_passwords_bubble_ui_controller->unset_password_to_be_saved(); 91 manage_passwords_bubble_ui_controller->unset_password_to_be_saved();
93 manage_passwords_bubble_state_ = NEVER_SAVE_PASSWORDS; 92 manage_passwords_bubble_state_ = NEVER_SAVE_PASSWORDS;
94 } 93 }
95 94
96 void ManagePasswordsBubbleModel::OnSaveClicked() { 95 void ManagePasswordsBubbleModel::OnSaveClicked() {
97 dismissal_reason_ = password_manager::metrics_util::CLICKED_SAVE; 96 dismissal_reason_ = password_manager::metrics_util::CLICKED_SAVE;
98 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = 97 ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller =
99 ManagePasswordsBubbleUIController::FromWebContents(web_contents_); 98 ManagePasswordsBubbleUIController::FromWebContents(web_contents());
100 manage_passwords_bubble_ui_controller->SavePassword(); 99 manage_passwords_bubble_ui_controller->SavePassword();
101 manage_passwords_bubble_ui_controller->unset_password_to_be_saved(); 100 manage_passwords_bubble_ui_controller->unset_password_to_be_saved();
102 manage_passwords_bubble_state_ = MANAGE_PASSWORDS; 101 manage_passwords_bubble_state_ = MANAGE_PASSWORDS;
103 } 102 }
104 103
105 void ManagePasswordsBubbleModel::OnDoneClicked() { 104 void ManagePasswordsBubbleModel::OnDoneClicked() {
106 dismissal_reason_ = password_manager::metrics_util::CLICKED_DONE; 105 dismissal_reason_ = password_manager::metrics_util::CLICKED_DONE;
107 } 106 }
108 107
109 void ManagePasswordsBubbleModel::OnManageLinkClicked() { 108 void ManagePasswordsBubbleModel::OnManageLinkClicked() {
110 dismissal_reason_ = password_manager::metrics_util::CLICKED_MANAGE; 109 dismissal_reason_ = password_manager::metrics_util::CLICKED_MANAGE;
111 ManagePasswordsBubbleUIController::FromWebContents(web_contents_) 110 ManagePasswordsBubbleUIController::FromWebContents(web_contents())
112 ->NavigateToPasswordManagerSettingsPage(); 111 ->NavigateToPasswordManagerSettingsPage();
113 } 112 }
114 113
115 void ManagePasswordsBubbleModel::OnPasswordAction( 114 void ManagePasswordsBubbleModel::OnPasswordAction(
116 const autofill::PasswordForm& password_form, 115 const autofill::PasswordForm& password_form,
117 PasswordAction action) { 116 PasswordAction action) {
118 if (!web_contents_) 117 if (!web_contents())
119 return; 118 return;
120 Profile* profile = 119 Profile* profile =
121 Profile::FromBrowserContext(web_contents_->GetBrowserContext()); 120 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
122 password_manager::PasswordStore* password_store = 121 password_manager::PasswordStore* password_store =
123 PasswordStoreFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS) 122 PasswordStoreFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS)
124 .get(); 123 .get();
125 DCHECK(password_store); 124 DCHECK(password_store);
126 if (action == REMOVE_PASSWORD) 125 if (action == REMOVE_PASSWORD)
127 password_store->RemoveLogin(password_form); 126 password_store->RemoveLogin(password_form);
128 else 127 else
129 password_store->AddLogin(password_form); 128 password_store->AddLogin(password_form);
130 } 129 }
131 130
132 void ManagePasswordsBubbleModel::WebContentsDestroyed( 131 void ManagePasswordsBubbleModel::WebContentsDestroyed() {
133 content::WebContents* web_contents) {
134 // The WebContents have been destroyed. 132 // The WebContents have been destroyed.
135 web_contents_ = NULL; 133 web_contents_ = NULL;
136 } 134 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698