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

Side by Side Diff: components/app_modal/app_modal_dialog_queue.cc

Issue 2901583002: Fold AppModalDialog into its only subclass, JavaScriptAppModalDialog. (Closed)
Patch Set: fix collapse Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/app_modal/app_modal_dialog_queue.h" 5 #include "components/app_modal/app_modal_dialog_queue.h"
6 6
7 #include "base/memory/singleton.h" 7 #include "base/memory/singleton.h"
8 #include "components/app_modal/app_modal_dialog.h" 8 #include "components/app_modal/javascript_app_modal_dialog.h"
9 9
10 namespace app_modal { 10 namespace app_modal {
11 11
12 // static 12 // static
13 AppModalDialogQueue* AppModalDialogQueue::GetInstance() { 13 AppModalDialogQueue* AppModalDialogQueue::GetInstance() {
14 return base::Singleton<AppModalDialogQueue>::get(); 14 return base::Singleton<AppModalDialogQueue>::get();
15 } 15 }
16 16
17 void AppModalDialogQueue::AddDialog(AppModalDialog* dialog) { 17 void AppModalDialogQueue::AddDialog(JavaScriptAppModalDialog* dialog) {
18 if (!active_dialog_) { 18 if (!active_dialog_) {
19 ShowModalDialog(dialog); 19 ShowModalDialog(dialog);
20 return; 20 return;
21 } 21 }
22 app_modal_dialog_queue_.push_back(dialog); 22 app_modal_dialog_queue_.push_back(dialog);
23 } 23 }
24 24
25 void AppModalDialogQueue::ShowNextDialog() { 25 void AppModalDialogQueue::ShowNextDialog() {
26 AppModalDialog* dialog = GetNextDialog(); 26 JavaScriptAppModalDialog* dialog = GetNextDialog();
27 if (dialog) 27 if (dialog)
28 ShowModalDialog(dialog); 28 ShowModalDialog(dialog);
29 else 29 else
30 active_dialog_ = NULL; 30 active_dialog_ = nullptr;
31 } 31 }
32 32
33 void AppModalDialogQueue::ActivateModalDialog() { 33 void AppModalDialogQueue::ActivateModalDialog() {
34 if (showing_modal_dialog_) { 34 if (showing_modal_dialog_) {
35 // As part of showing a modal dialog we may end up back in this method 35 // As part of showing a modal dialog we may end up back in this method
36 // (showing a dialog activates the WebContents, which can trigger a call 36 // (showing a dialog activates the WebContents, which can trigger a call
37 // to ActivateModalDialog). We ignore such a request as after the call to 37 // to ActivateModalDialog). We ignore such a request as after the call to
38 // activate the tab contents the dialog is shown. 38 // activate the tab contents the dialog is shown.
39 return; 39 return;
40 } 40 }
41 if (active_dialog_) 41 if (active_dialog_)
42 active_dialog_->ActivateModalDialog(); 42 active_dialog_->ActivateModalDialog();
43 } 43 }
44 44
45 bool AppModalDialogQueue::HasActiveDialog() const { 45 bool AppModalDialogQueue::HasActiveDialog() const {
46 return active_dialog_ != NULL; 46 return active_dialog_ != nullptr;
47 } 47 }
48 48
49 AppModalDialogQueue::AppModalDialogQueue() 49 AppModalDialogQueue::AppModalDialogQueue()
50 : active_dialog_(NULL), 50 : active_dialog_(NULL),
51 showing_modal_dialog_(false) { 51 showing_modal_dialog_(false) {
52 } 52 }
53 53
54 AppModalDialogQueue::~AppModalDialogQueue() { 54 AppModalDialogQueue::~AppModalDialogQueue() {
55 } 55 }
56 56
57 void AppModalDialogQueue::ShowModalDialog(AppModalDialog* dialog) { 57 void AppModalDialogQueue::ShowModalDialog(JavaScriptAppModalDialog* dialog) {
58 // Be sure and set the active_dialog_ field first, otherwise if 58 // Be sure and set the active_dialog_ field first, otherwise if
59 // ShowModalDialog triggers a call back to the queue they'll get the old 59 // ShowModalDialog triggers a call back to the queue they'll get the old
60 // dialog. Also, if the dialog calls |ShowNextDialog()| before returning, that 60 // dialog. Also, if the dialog calls |ShowNextDialog()| before returning, that
61 // would write NULL into |active_dialog_| and this function would then undo 61 // would write nullptr into |active_dialog_| and this function would then undo
62 // that. 62 // that.
63 active_dialog_ = dialog; 63 active_dialog_ = dialog;
64 showing_modal_dialog_ = true; 64 showing_modal_dialog_ = true;
65 dialog->ShowModalDialog(); 65 dialog->ShowModalDialog();
66 showing_modal_dialog_ = false; 66 showing_modal_dialog_ = false;
67 } 67 }
68 68
69 AppModalDialog* AppModalDialogQueue::GetNextDialog() { 69 JavaScriptAppModalDialog* AppModalDialogQueue::GetNextDialog() {
70 while (!app_modal_dialog_queue_.empty()) { 70 while (!app_modal_dialog_queue_.empty()) {
71 AppModalDialog* dialog = app_modal_dialog_queue_.front(); 71 JavaScriptAppModalDialog* dialog = app_modal_dialog_queue_.front();
72 app_modal_dialog_queue_.pop_front(); 72 app_modal_dialog_queue_.pop_front();
73 if (dialog->IsValid()) 73 if (dialog->IsValid())
74 return dialog; 74 return dialog;
75 delete dialog; 75 delete dialog;
76 } 76 }
77 return NULL; 77 return nullptr;
78 } 78 }
79 79
80 } // namespace app_modal 80 } // namespace app_modal
OLDNEW
« no previous file with comments | « components/app_modal/app_modal_dialog_queue.h ('k') | components/app_modal/javascript_app_modal_dialog.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698