Chromium Code Reviews| Index: chrome/browser/ui/webui/task_manager_dialog.cc |
| diff --git a/chrome/browser/ui/webui/task_manager_dialog.cc b/chrome/browser/ui/webui/task_manager_dialog.cc |
| index 0656b764ef7a8a2d93f93fdb016b0a2ab74c57e6..a4ad5bb3b02cadd3c783ca878eb8d0e46efa723b 100644 |
| --- a/chrome/browser/ui/webui/task_manager_dialog.cc |
| +++ b/chrome/browser/ui/webui/task_manager_dialog.cc |
| @@ -7,12 +7,17 @@ |
| #include "base/memory/singleton.h" |
| #include "base/utf_string_conversions.h" |
| #include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/browser_dialogs.h" |
| #include "chrome/browser/ui/browser_list.h" |
| #include "chrome/browser/ui/webui/html_dialog_ui.h" |
| #include "chrome/common/url_constants.h" |
| #include "grit/google_chrome_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +#if defined(OS_CHROMEOS) |
| +#include "views/widget/widget.h" |
| +#endif // defined(OS_CHROMEOS) |
| + |
| class TaskManagerDialogImpl : public HtmlDialogUIDelegate { |
| public: |
| TaskManagerDialogImpl(); |
| @@ -52,7 +57,6 @@ class TaskManagerDialogImpl : public HtmlDialogUIDelegate { |
| virtual void OnCloseContents(TabContents* source, bool* out_close_dialog) |
| OVERRIDE { |
| *out_close_dialog = true; |
| - OnCloseDialog(); |
| } |
| virtual bool ShouldShowDialogTitle() const OVERRIDE { |
| return false; |
| @@ -65,7 +69,9 @@ class TaskManagerDialogImpl : public HtmlDialogUIDelegate { |
| void ShowDialog(); |
| void OpenHtmlDialog(); |
| - bool is_shown_; |
| + int show_count_; |
| + |
| + gfx::NativeWindow window_; |
| DISALLOW_COPY_AND_ASSIGN(TaskManagerDialogImpl); |
| }; |
| @@ -79,7 +85,8 @@ TaskManagerDialogImpl* TaskManagerDialogImpl::GetInstance() { |
| return Singleton<TaskManagerDialogImpl>::get(); |
| } |
| -TaskManagerDialogImpl::TaskManagerDialogImpl() : is_shown_(false) { |
| +TaskManagerDialogImpl::TaskManagerDialogImpl() : show_count_(0), |
| + window_(NULL) { |
| } |
| TaskManagerDialogImpl::~TaskManagerDialogImpl() { |
| @@ -92,21 +99,26 @@ void TaskManagerDialogImpl::Show() { |
| } |
| void TaskManagerDialogImpl::ShowDialog() { |
| - // TODO(yoshiki): Brings up existing UI when called with is_shown_ == TRUE |
| - if (!is_shown_) { |
| - is_shown_ = true; |
| - OpenHtmlDialog(); |
| + if (show_count_ > 0) { |
| +#if defined(OS_CHROMEOS) |
| + // Closes current TaskManager and Opens new one. |
| + views::Widget::GetWidgetForNativeWindow(window_)->Close(); |
| +#else |
| + return; |
|
xiyuan
2011/08/11 16:36:47
Could we do something to bring up existing task ma
yoshiki
2011/08/16 02:13:30
Done.
|
| +#endif // defined(OS_CHROMEOS) |
| } |
| + OpenHtmlDialog(); |
| + show_count_++; |
|
xiyuan
2011/08/11 16:36:47
nit: ++show_count_;
yoshiki
2011/08/16 02:13:30
Done.
|
| } |
| void TaskManagerDialogImpl::OnCloseDialog() { |
| - if (is_shown_) |
| - is_shown_ = false; |
| + if (show_count_ > 0) |
| + show_count_--; |
|
xiyuan
2011/08/11 16:36:47
nit: --show_count_;
yoshiki
2011/08/16 02:13:30
Done.
|
| } |
| void TaskManagerDialogImpl::OpenHtmlDialog() { |
| Browser* browser = BrowserList::GetLastActive(); |
| - browser->BrowserShowHtmlDialog(this, NULL); |
| + window_ = browser->BrowserShowHtmlDialog(this, NULL); |
| } |
| // **************************************************** |