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); |
} |
// **************************************************** |