diff options
author | georgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-11 22:34:03 +0000 |
---|---|---|
committer | georgey@chromium.org <georgey@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-11 22:34:03 +0000 |
commit | d667f1e12b4b62479bb62a9ded12f54dfaddf308 (patch) | |
tree | d8020830c9e0d8e3128a568e4a94ff558fe50aa7 /chrome/browser/views | |
parent | fc186cac9263f1bcabe8772f12d96107ed467553 (diff) | |
download | chromium_src-d667f1e12b4b62479bb62a9ded12f54dfaddf308.zip chromium_src-d667f1e12b4b62479bb62a9ded12f54dfaddf308.tar.gz chromium_src-d667f1e12b4b62479bb62a9ded12f54dfaddf308.tar.bz2 |
Fix 41010 on Windows: AutoFill profile shouldn't be saved when cancelled during initial setup
BUG=41010
TEST=in the bug.
Review URL: http://codereview.chromium.org/2015008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46970 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r-- | chrome/browser/views/autofill_profiles_view_win.cc | 75 | ||||
-rw-r--r-- | chrome/browser/views/autofill_profiles_view_win.h | 8 |
2 files changed, 50 insertions, 33 deletions
diff --git a/chrome/browser/views/autofill_profiles_view_win.cc b/chrome/browser/views/autofill_profiles_view_win.cc index 3f348bb..dc2af81 100644 --- a/chrome/browser/views/autofill_profiles_view_win.cc +++ b/chrome/browser/views/autofill_profiles_view_win.cc @@ -59,7 +59,9 @@ int AutoFillProfilesView::ScrollViewContents::line_height_ = 0; AutoFillProfilesView::AutoFillProfilesView( AutoFillDialogObserver* observer, PersonalDataManager* personal_data_manager, - PrefService* preferences) + PrefService* preferences, + AutoFillProfile* imported_profile, + CreditCard* imported_credit_card) : observer_(observer), personal_data_manager_(personal_data_manager), preferences_(preferences), @@ -72,6 +74,15 @@ AutoFillProfilesView::AutoFillProfilesView( preferences_->GetString(prefs::kAutoFillDefaultCreditCard); default_profile_iterator_ = profiles_set_.end(); default_credit_card_iterator_ = credit_card_set_.end(); + if (imported_profile) { + profiles_set_.push_back(EditableSetInfo(imported_profile, true, true)); + default_profile_iterator_ = profiles_set_.begin(); + } + if (imported_credit_card) { + credit_card_set_.push_back( + EditableSetInfo(imported_credit_card, true, true)); + default_credit_card_iterator_ = credit_card_set_.begin(); + } } AutoFillProfilesView::~AutoFillProfilesView() { @@ -83,10 +94,12 @@ AutoFillProfilesView::~AutoFillProfilesView() { int AutoFillProfilesView::Show(gfx::NativeWindow parent, AutoFillDialogObserver* observer, PersonalDataManager* personal_data_manager, - PrefService* preferences) { + PrefService* preferences, + AutoFillProfile* imported_profile, + CreditCard* imported_credit_card) { if (!instance_) { instance_ = new AutoFillProfilesView(observer, personal_data_manager, - preferences); + preferences, imported_profile, imported_credit_card); // |instance_| will get deleted once Close() is called. views::Window::CreateChromeWindow(parent, gfx::Rect(), instance_); @@ -395,36 +408,39 @@ void AutoFillProfilesView::GetData() { personal_data_manager_->SetObserver(this); return; } - bool first_item = true; // first item must be opened. - profiles_set_.reserve(personal_data_manager_->profiles().size()); - bool deafult_set = false; - for (std::vector<AutoFillProfile*>::const_iterator address_it = - personal_data_manager_->profiles().begin(); - address_it != personal_data_manager_->profiles().end(); - ++address_it) { - bool default_profile = ((*address_it)->Label() == default_profile_); - deafult_set = (deafult_set || default_profile); - profiles_set_.push_back(EditableSetInfo(*address_it, first_item, - default_profile)); - first_item = false; + bool imported_data_present = !profiles_set_.empty() || + !credit_card_set_.empty(); + bool default_set = !profiles_set_.empty(); + if (!imported_data_present) { + profiles_set_.reserve(personal_data_manager_->profiles().size()); + for (std::vector<AutoFillProfile*>::const_iterator address_it = + personal_data_manager_->profiles().begin(); + address_it != personal_data_manager_->profiles().end(); + ++address_it) { + bool default_profile = ((*address_it)->Label() == default_profile_); + default_set = (default_set || default_profile); + profiles_set_.push_back(EditableSetInfo(*address_it, false, + default_profile)); + } } // If nothing is default, set first to be default. - if (!deafult_set && profiles_set_.size() > 0) + if (!default_set && profiles_set_.size() > 0) profiles_set_[0].is_default = true; - credit_card_set_.reserve(personal_data_manager_->credit_cards().size()); - deafult_set = false; - for (std::vector<CreditCard*>::const_iterator cc_it = - personal_data_manager_->credit_cards().begin(); - cc_it != personal_data_manager_->credit_cards().end(); - ++cc_it) { - bool default_cc = ((*cc_it)->Label() == default_credit_card_); - deafult_set = (deafult_set || default_cc); - credit_card_set_.push_back(EditableSetInfo(*cc_it, first_item, default_cc)); - first_item = false; + default_set = !credit_card_set_.empty(); + if (!imported_data_present) { + credit_card_set_.reserve(personal_data_manager_->credit_cards().size()); + for (std::vector<CreditCard*>::const_iterator cc_it = + personal_data_manager_->credit_cards().begin(); + cc_it != personal_data_manager_->credit_cards().end(); + ++cc_it) { + bool default_cc = ((*cc_it)->Label() == default_credit_card_); + default_set = (default_set || default_cc); + credit_card_set_.push_back(EditableSetInfo(*cc_it, false, default_cc)); + } } // If nothing is default, set first to be default. - if (!deafult_set && credit_card_set_.size() > 0) + if (!default_set && credit_card_set_.size() > 0) credit_card_set_[0].is_default = true; // Remember default iterators. @@ -1435,9 +1451,6 @@ void AutoFillProfilesView::AutoFillScrollView::Layout() { } // Declared in "chrome/browser/autofill/autofill_dialog.h" -// TODO(georgey): Need to update implementation to match new interface for -// |imported_profile| and |imported_credit_card| parameters. -// See http://crbug.com/41010 void ShowAutoFillDialog(gfx::NativeView parent, AutoFillDialogObserver* observer, Profile* profile, @@ -1454,5 +1467,5 @@ void ShowAutoFillDialog(gfx::NativeView parent, profile->GetPersonalDataManager(); DCHECK(personal_data_manager); AutoFillProfilesView::Show(parent, observer, personal_data_manager, - profile->GetPrefs()); + profile->GetPrefs(), imported_profile, imported_credit_card); } diff --git a/chrome/browser/views/autofill_profiles_view_win.h b/chrome/browser/views/autofill_profiles_view_win.h index cd0b38a..8b32e631 100644 --- a/chrome/browser/views/autofill_profiles_view_win.h +++ b/chrome/browser/views/autofill_profiles_view_win.h @@ -61,7 +61,9 @@ class AutoFillProfilesView : public views::View, static int Show(gfx::NativeWindow parent, AutoFillDialogObserver* observer, PersonalDataManager* personal_data_manager, - PrefService* preferences); + PrefService* preferences, + AutoFillProfile* imported_profile, + CreditCard* imported_credit_card); protected: enum EditableSetType { @@ -173,7 +175,9 @@ class AutoFillProfilesView : public views::View, AutoFillProfilesView(AutoFillDialogObserver* observer, PersonalDataManager* personal_data_manager, - PrefService* preferences); + PrefService* preferences, + AutoFillProfile* imported_profile, + CreditCard* imported_credit_card); void Init(); void GetData(); |