diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-28 17:02:07 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-28 17:02:07 +0000 |
commit | 1f46007516b8ab87a9089bfab64621595b869e54 (patch) | |
tree | 7542b70956c2811c4d3ef6be53c38bbc97dabec4 /chrome/browser/app_modal_dialog_queue.cc | |
parent | 2a4fab98a8dd8a65f16d64acb1f51d8a0076a25f (diff) | |
download | chromium_src-1f46007516b8ab87a9089bfab64621595b869e54.zip chromium_src-1f46007516b8ab87a9089bfab64621595b869e54.tar.gz chromium_src-1f46007516b8ab87a9089bfab64621595b869e54.tar.bz2 |
This CL is a clean-up of the app_modal_dialog_queue.cc in an attempt to fix a bug 10699.
Not sure what is causing the crasher.
Hopefully after this clean-up we'll get a different stack-trace that might help.
BUG=10699
TEST=Make sure alert/confirm boxes work properly. make sure a background tab that shows a (delayed) alert box works. Same with a background browser.
Review URL: http://codereview.chromium.org/113932
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17078 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/app_modal_dialog_queue.cc')
-rw-r--r-- | chrome/browser/app_modal_dialog_queue.cc | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/chrome/browser/app_modal_dialog_queue.cc b/chrome/browser/app_modal_dialog_queue.cc index e24a7b0..2ab1398 100644 --- a/chrome/browser/app_modal_dialog_queue.cc +++ b/chrome/browser/app_modal_dialog_queue.cc @@ -6,47 +6,30 @@ #include "chrome/browser/browser_list.h" -// static -std::queue<AppModalDialog*>* - AppModalDialogQueue::app_modal_dialog_queue_ = NULL; -AppModalDialog* AppModalDialogQueue::active_dialog_ = NULL; - -// static void AppModalDialogQueue::AddDialog(AppModalDialog* dialog) { - if (!app_modal_dialog_queue_) { - app_modal_dialog_queue_ = new std::queue<AppModalDialog*>; + if (!active_dialog_) { ShowModalDialog(dialog); + return; } - - // ShowModalDialog can wind up calling ShowNextDialog in some cases, which - // can then make app_modal_dialog_queue_ NULL. - if (app_modal_dialog_queue_) - app_modal_dialog_queue_->push(dialog); + app_modal_dialog_queue_.push(dialog); } -// static void AppModalDialogQueue::ShowNextDialog() { - app_modal_dialog_queue_->pop(); - active_dialog_ = NULL; - if (!app_modal_dialog_queue_->empty()) { - ShowModalDialog(app_modal_dialog_queue_->front()); + if (!app_modal_dialog_queue_.empty()) { + AppModalDialog* dialog = app_modal_dialog_queue_.front(); + app_modal_dialog_queue_.pop(); + ShowModalDialog(dialog); } else { - delete app_modal_dialog_queue_; - app_modal_dialog_queue_ = NULL; + active_dialog_ = NULL; } } -// static void AppModalDialogQueue::ActivateModalDialog() { - if (!app_modal_dialog_queue_->empty()) - app_modal_dialog_queue_->front()->ActivateModalDialog(); + if (active_dialog_) + active_dialog_->ActivateModalDialog(); } -// static void AppModalDialogQueue::ShowModalDialog(AppModalDialog* dialog) { - // ShowModalDialog can wind up calling ShowNextDialog in some cases, - // which will wind up calling this method recursively, so active_dialog_ - // must be set first. - active_dialog_ = dialog; dialog->ShowModalDialog(); + active_dialog_ = dialog; } |