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

Unified Diff: chrome/browser/cocoa/preferences_window_controller.mm

Issue 1930002: AutoFill profile shouldn't be saved when cancelled during initial setup. (Closed)
Patch Set: Addressing review comments. Polishing unit test comments. Created 10 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/cocoa/preferences_window_controller.mm
diff --git a/chrome/browser/cocoa/preferences_window_controller.mm b/chrome/browser/cocoa/preferences_window_controller.mm
index dd37f62d5b950769fb704434c1ba0d2e4236fc62..a27a9cfc112d762651ede34c619d8d9d0bfb3380 100644
--- a/chrome/browser/cocoa/preferences_window_controller.mm
+++ b/chrome/browser/cocoa/preferences_window_controller.mm
@@ -375,100 +375,6 @@ class PrefObserverBridge : public NotificationObserver,
PreferencesWindowController* controller_; // weak, owns us
};
-// PersonalDataManagerObserver facilitates asynchronous loading of
-// PersonalDataManager data before showing the auto fill settings dialog to the
-// user. It acts as a C++-based delegate for the |PreferencesWindowController|.
-class PersonalDataManagerObserver : public PersonalDataManager::Observer {
- public:
- explicit PersonalDataManagerObserver(
- PersonalDataManager* personal_data_manager,
- Profile* profile)
- : personal_data_manager_(personal_data_manager),
- profile_(profile) {
- }
-
- virtual ~PersonalDataManagerObserver();
-
- // Notifies the observer that the PersonalDataManager has finished loading.
- virtual void OnPersonalDataLoaded();
-
- // 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,
- Profile* profile);
-
- private:
- // Utility method to remove |this| from |personal_data_manager_| as an
- // observer.
- void RemoveObserver();
-
- // The object in which we are registered as an observer. We hold on to
- // it to facilitate un-registering ourself in the destructor and in the
- // |OnPersonalDataLoaded| method. This may be NULL.
- // 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);
-};
-
-// During destruction ensure that we are removed from the
-// |personal_data_manager_| as an observer.
-PersonalDataManagerObserver::~PersonalDataManagerObserver() {
- RemoveObserver();
-}
-
-void PersonalDataManagerObserver::RemoveObserver() {
- if (personal_data_manager_) {
- personal_data_manager_->RemoveObserver(this);
- }
-}
-
-// The data is ready so display our dialog. Recursively call
-// |showAutoFillSettings:| to try again now knowing that the
-// |PersonalDataManager| is ready. Once done we clear the observer
-// (deleting |this| in the process).
-void PersonalDataManagerObserver::OnPersonalDataLoaded() {
- RemoveObserver();
- 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, Profile* profile) {
- DCHECK(profile);
- if (!personal_data_manager)
- return;
-
- std::vector<AutoFillProfile*> profiles =
- personal_data_manager->web_profiles();
- AutoFillProfile autofill_profile(ASCIIToUTF16(""), 0);
- if (profiles.size() == 0) {
- string16 new_profile_name =
- l10n_util::GetStringUTF16(IDS_AUTOFILL_NEW_ADDRESS);
- autofill_profile.set_label(new_profile_name);
- profiles.push_back(&autofill_profile);
- }
-
- std::vector<CreditCard*> credit_cards = personal_data_manager->credit_cards();
- CreditCard credit_card(ASCIIToUTF16(""), 0);
- if (credit_cards.size() == 0) {
- string16 new_credit_card_name =
- l10n_util::GetStringUTF16(IDS_AUTOFILL_NEW_CREDITCARD);
- credit_card.set_label(new_credit_card_name);
- credit_cards.push_back(&credit_card);
- }
-
- ::ShowAutoFillDialog(personal_data_manager, profiles, credit_cards, profile);
-}
-
} // namespace PreferencesWindowControllerInternal
@implementation PreferencesWindowController
@@ -751,7 +657,6 @@ void PersonalDataManagerObserver::ShowAutoFillDialog(
[customPagesSource_ removeObserver:self forKeyPath:@"customHomePages"];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self unregisterPrefObservers];
- personalDataManagerObserver_.reset();
[super dealloc];
}
@@ -1252,19 +1157,7 @@ const int kDisabledIndex = 1;
return;
}
- if (personalDataManager->IsDataLoaded()) {
- // |personalDataManager| data is loaded, we can proceed with the dialog.
- PreferencesWindowControllerInternal::
- PersonalDataManagerObserver::ShowAutoFillDialog(personalDataManager,
- profile_);
- } else {
- // |personalDataManager| data is NOT loaded, so we load it here, installing
- // our observer.
- personalDataManagerObserver_.reset(
- new PreferencesWindowControllerInternal::PersonalDataManagerObserver(
- personalDataManager, profile_));
- personalDataManager->SetObserver(personalDataManagerObserver_.get());
- }
+ ShowAutoFillDialog(NULL, personalDataManager, profile_, NULL, NULL);
}
// Called to import data from other browsers (Safari, Firefox, etc).
« no previous file with comments | « chrome/browser/cocoa/preferences_window_controller.h ('k') | chrome/browser/gtk/options/content_page_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698