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

Side by Side Diff: chrome/browser/ui/webui/task_manager_dialog.cc

Issue 7604032: Showing Task manager on the foreground window. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/ui/webui/task_manager_dialog.h" 5 #include "chrome/browser/ui/webui/task_manager_dialog.h"
6 6
7 #include "base/memory/singleton.h" 7 #include "base/memory/singleton.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_dialogs.h"
10 #include "chrome/browser/ui/browser_list.h" 11 #include "chrome/browser/ui/browser_list.h"
11 #include "chrome/browser/ui/webui/html_dialog_ui.h" 12 #include "chrome/browser/ui/webui/html_dialog_ui.h"
12 #include "chrome/common/url_constants.h" 13 #include "chrome/common/url_constants.h"
13 #include "grit/google_chrome_strings.h" 14 #include "grit/google_chrome_strings.h"
14 #include "ui/base/l10n/l10n_util.h" 15 #include "ui/base/l10n/l10n_util.h"
15 16
17 #if defined(OS_CHROMEOS)
18 #include "views/widget/widget.h"
19 #endif // defined(OS_CHROMEOS)
20
16 class TaskManagerDialogImpl : public HtmlDialogUIDelegate { 21 class TaskManagerDialogImpl : public HtmlDialogUIDelegate {
17 public: 22 public:
18 TaskManagerDialogImpl(); 23 TaskManagerDialogImpl();
19 24
20 static void Show(); 25 static void Show();
21 static TaskManagerDialogImpl* GetInstance(); 26 static TaskManagerDialogImpl* GetInstance();
22 27
23 protected: 28 protected:
24 friend struct DefaultSingletonTraits<TaskManagerDialogImpl>; 29 friend struct DefaultSingletonTraits<TaskManagerDialogImpl>;
25 virtual ~TaskManagerDialogImpl(); 30 virtual ~TaskManagerDialogImpl();
(...skipping 19 matching lines...) Expand all
45 } 50 }
46 virtual std::string GetDialogArgs() const OVERRIDE { 51 virtual std::string GetDialogArgs() const OVERRIDE {
47 return std::string(); 52 return std::string();
48 } 53 }
49 virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE { 54 virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE {
50 OnCloseDialog(); 55 OnCloseDialog();
51 } 56 }
52 virtual void OnCloseContents(TabContents* source, bool* out_close_dialog) 57 virtual void OnCloseContents(TabContents* source, bool* out_close_dialog)
53 OVERRIDE { 58 OVERRIDE {
54 *out_close_dialog = true; 59 *out_close_dialog = true;
55 OnCloseDialog();
56 } 60 }
57 virtual bool ShouldShowDialogTitle() const OVERRIDE { 61 virtual bool ShouldShowDialogTitle() const OVERRIDE {
58 return false; 62 return false;
59 } 63 }
60 virtual bool HandleContextMenu(const ContextMenuParams& params) OVERRIDE { 64 virtual bool HandleContextMenu(const ContextMenuParams& params) OVERRIDE {
61 return true; 65 return true;
62 } 66 }
63 67
64 private: 68 private:
65 void ShowDialog(); 69 void ShowDialog();
66 void OpenHtmlDialog(); 70 void OpenHtmlDialog();
67 71
68 bool is_shown_; 72 int show_count_;
73
74 gfx::NativeWindow window_;
69 75
70 DISALLOW_COPY_AND_ASSIGN(TaskManagerDialogImpl); 76 DISALLOW_COPY_AND_ASSIGN(TaskManagerDialogImpl);
71 }; 77 };
72 78
73 // **************************************************** 79 // ****************************************************
74 80
75 // static 81 // static
76 TaskManagerDialogImpl* TaskManagerDialogImpl::GetInstance() { 82 TaskManagerDialogImpl* TaskManagerDialogImpl::GetInstance() {
77 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO)); 83 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
78 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE)); 84 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE));
79 return Singleton<TaskManagerDialogImpl>::get(); 85 return Singleton<TaskManagerDialogImpl>::get();
80 } 86 }
81 87
82 TaskManagerDialogImpl::TaskManagerDialogImpl() : is_shown_(false) { 88 TaskManagerDialogImpl::TaskManagerDialogImpl() : show_count_(0),
89 window_(NULL) {
83 } 90 }
84 91
85 TaskManagerDialogImpl::~TaskManagerDialogImpl() { 92 TaskManagerDialogImpl::~TaskManagerDialogImpl() {
86 } 93 }
87 94
88 void TaskManagerDialogImpl::Show() { 95 void TaskManagerDialogImpl::Show() {
89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 96 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
90 TaskManagerDialogImpl* dialog = TaskManagerDialogImpl::GetInstance(); 97 TaskManagerDialogImpl* dialog = TaskManagerDialogImpl::GetInstance();
91 dialog->ShowDialog(); 98 dialog->ShowDialog();
92 } 99 }
93 100
94 void TaskManagerDialogImpl::ShowDialog() { 101 void TaskManagerDialogImpl::ShowDialog() {
95 // TODO(yoshiki): Brings up existing UI when called with is_shown_ == TRUE 102 if (show_count_ > 0) {
96 if (!is_shown_) { 103 #if defined(OS_CHROMEOS)
97 is_shown_ = true; 104 // Closes current TaskManager and Opens new one.
98 OpenHtmlDialog(); 105 views::Widget::GetWidgetForNativeWindow(window_)->Close();
106 #else
107 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.
108 #endif // defined(OS_CHROMEOS)
99 } 109 }
110 OpenHtmlDialog();
111 show_count_++;
xiyuan 2011/08/11 16:36:47 nit: ++show_count_;
yoshiki 2011/08/16 02:13:30 Done.
100 } 112 }
101 113
102 void TaskManagerDialogImpl::OnCloseDialog() { 114 void TaskManagerDialogImpl::OnCloseDialog() {
103 if (is_shown_) 115 if (show_count_ > 0)
104 is_shown_ = false; 116 show_count_--;
xiyuan 2011/08/11 16:36:47 nit: --show_count_;
yoshiki 2011/08/16 02:13:30 Done.
105 } 117 }
106 118
107 void TaskManagerDialogImpl::OpenHtmlDialog() { 119 void TaskManagerDialogImpl::OpenHtmlDialog() {
108 Browser* browser = BrowserList::GetLastActive(); 120 Browser* browser = BrowserList::GetLastActive();
109 browser->BrowserShowHtmlDialog(this, NULL); 121 window_ = browser->BrowserShowHtmlDialog(this, NULL);
110 } 122 }
111 123
112 // **************************************************** 124 // ****************************************************
113 // 125 //
114 // static 126 // static
115 void TaskManagerDialog::Show() { 127 void TaskManagerDialog::Show() {
116 BrowserThread::PostTask( 128 BrowserThread::PostTask(
117 BrowserThread::UI, FROM_HERE, 129 BrowserThread::UI, FROM_HERE,
118 NewRunnableFunction(&TaskManagerDialogImpl::Show)); 130 NewRunnableFunction(&TaskManagerDialogImpl::Show));
119 } 131 }
120 132
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698