Chromium Code Reviews| Index: chrome/browser/extensions/app_notify_channel_ui.cc |
| =================================================================== |
| --- chrome/browser/extensions/app_notify_channel_ui.cc (revision 112840) |
| +++ chrome/browser/extensions/app_notify_channel_ui.cc (working copy) |
| @@ -87,7 +87,7 @@ |
| TabContentsWrapper* wrapper, |
| const std::string& app_name) |
| : browser_(browser), wrapper_(wrapper), app_name_(app_name), |
| - delegate_(NULL), observing_sync_(false), got_first_sync_callback_(false) { |
| + delegate_(NULL), observing_sync_(false), wizard_shown_to_user_(false) { |
| } |
| AppNotifyChannelUIImpl::~AppNotifyChannelUIImpl() { |
| @@ -125,8 +125,13 @@ |
| void AppNotifyChannelUIImpl::OnStateChanged() { |
| ProfileSyncService* sync_service = |
| browser_->profile()->GetProfileSyncService(); |
| - bool finished = got_first_sync_callback_ && !sync_service->SetupInProgress(); |
| - got_first_sync_callback_ = true; |
| + bool wizard_visible = sync_service->WizardIsVisible(); |
| + // ProfileSyncService raises OnStateChanged many times. Even multiple |
| + // times before the wizard actually becomes visible for the first time. |
| + // So we have to wait for the wizard to become visible once and then we |
| + // wait for it to get dismissed. |
| + bool finished = wizard_shown_to_user_ && !wizard_visible; |
| + wizard_shown_to_user_ = wizard_visible; |
|
asargent_no_longer_on_chrome
2011/12/03 18:45:25
nit: while this looks like it should work, would i
|
| if (finished) { |
| StopObservingSync(); |