| Index: chrome/browser/cocoa/preferences_window_controller.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/preferences_window_controller.mm (revision 40742)
|
| +++ chrome/browser/cocoa/preferences_window_controller.mm (working copy)
|
| @@ -427,8 +427,10 @@
|
| class PersonalDataManagerObserver : public PersonalDataManager::Observer {
|
| public:
|
| explicit PersonalDataManagerObserver(
|
| - PersonalDataManager* personal_data_manager)
|
| - : personal_data_manager_(personal_data_manager) {
|
| + PersonalDataManager* personal_data_manager,
|
| + Profile* profile)
|
| + : personal_data_manager_(personal_data_manager),
|
| + profile_(profile) {
|
| }
|
|
|
| virtual ~PersonalDataManagerObserver();
|
| @@ -439,7 +441,8 @@
|
| // Static method to dispatch to |ShowAutoFillDialog| method in autofill
|
| // module. This is public to facilitate direct external call when the
|
| // data manager has already loaded its data.
|
| - static void ShowAutoFillDialog(PersonalDataManager* personal_data_manager);
|
| + static void ShowAutoFillDialog(PersonalDataManager* personal_data_manager,
|
| + Profile* profile);
|
|
|
| private:
|
| // Utility method to remove |this| from |personal_data_manager_| as an
|
| @@ -452,6 +455,9 @@
|
| // Weak reference.
|
| PersonalDataManager* personal_data_manager_;
|
|
|
| + // Profile of caller. Held as weak reference. May not be NULL.
|
| + Profile* profile_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerObserver);
|
| };
|
| @@ -474,24 +480,26 @@
|
| // (deleting |this| in the process).
|
| void PersonalDataManagerObserver::OnPersonalDataLoaded() {
|
| RemoveObserver();
|
| - PersonalDataManagerObserver::ShowAutoFillDialog(personal_data_manager_);
|
| + PersonalDataManagerObserver::ShowAutoFillDialog(personal_data_manager_,
|
| + profile_);
|
| }
|
|
|
| // Dispatches request to show the autofill dialog. If there are no profiles
|
| // in the |personal_data_manager| the we create a new one here. Similary with
|
| // credit card info.
|
| void PersonalDataManagerObserver::ShowAutoFillDialog(
|
| - PersonalDataManager* personal_data_manager) {
|
| + PersonalDataManager* personal_data_manager, Profile* profile) {
|
| + DCHECK(profile);
|
| if (!personal_data_manager)
|
| return;
|
|
|
| std::vector<AutoFillProfile*> profiles = personal_data_manager->profiles();
|
| - AutoFillProfile profile(ASCIIToUTF16(""), 0);
|
| + AutoFillProfile autofill_profile(ASCIIToUTF16(""), 0);
|
| if (profiles.size() == 0) {
|
| string16 new_profile_name =
|
| l10n_util::GetStringUTF16(IDS_AUTOFILL_NEW_ADDRESS);
|
| - profile.set_label(new_profile_name);
|
| - profiles.push_back(&profile);
|
| + autofill_profile.set_label(new_profile_name);
|
| + profiles.push_back(&autofill_profile);
|
| }
|
|
|
| std::vector<CreditCard*> credit_cards = personal_data_manager->credit_cards();
|
| @@ -503,7 +511,7 @@
|
| credit_cards.push_back(&credit_card);
|
| }
|
|
|
| - ::ShowAutoFillDialog(personal_data_manager, profiles, credit_cards);
|
| + ::ShowAutoFillDialog(personal_data_manager, profiles, credit_cards, profile);
|
| }
|
|
|
|
|
| @@ -1267,12 +1275,13 @@
|
|
|
| if (personalDataManager->IsDataLoaded()) {
|
| // |personalDataManager| data is loaded, we can proceed with the dialog.
|
| - PersonalDataManagerObserver::ShowAutoFillDialog(personalDataManager);
|
| + PersonalDataManagerObserver::ShowAutoFillDialog(personalDataManager,
|
| + profile_);
|
| } else {
|
| // |personalDataManager| data is NOT loaded, so we load it here, installing
|
| // our observer.
|
| personalDataManagerObserver_.reset(
|
| - new PersonalDataManagerObserver(personalDataManager));
|
| + new PersonalDataManagerObserver(personalDataManager, profile_));
|
| personalDataManager->SetObserver(personalDataManagerObserver_.get());
|
| }
|
| }
|
|
|