summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-06 07:27:40 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-06 07:27:40 +0000
commitf9fdb0727cff50427843301d7dfff988daa4a153 (patch)
tree1cbec831312ed72bfab25138087b92c4fd1d6785 /chrome
parent7555ca9a4435e3fe8eb06faac07df36ecf6c903a (diff)
downloadchromium_src-f9fdb0727cff50427843301d7dfff988daa4a153.zip
chromium_src-f9fdb0727cff50427843301d7dfff988daa4a153.tar.gz
chromium_src-f9fdb0727cff50427843301d7dfff988daa4a153.tar.bz2
Make task_manager.h a bit more independent from views.
Let the internal TaskManagerContents be the DialogDelegate instead of the TaskManager itself. This is a small step towards porting the TaskManager. TEST=Launch chrome.exe, open the Task Manager, close it. Close the browser. Nothing should be broken, the browser should not crash. http://crbug.com/11461 Review URL: http://codereview.chromium.org/111002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15395 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/task_manager.cc113
-rw-r--r--chrome/browser/task_manager.h15
2 files changed, 65 insertions, 63 deletions
diff --git a/chrome/browser/task_manager.cc b/chrome/browser/task_manager.cc
index c82806a..ced9fc9 100644
--- a/chrome/browser/task_manager.cc
+++ b/chrome/browser/task_manager.cc
@@ -24,6 +24,7 @@
#include "chrome/views/controls/link.h"
#include "chrome/views/controls/menu/menu.h"
#include "chrome/views/widget/widget.h"
+#include "chrome/views/window/dialog_delegate.h"
#include "chrome/views/window/window.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -680,6 +681,7 @@ bool TaskManagerTableModel::GetProcessMetricsForRows(
class TaskManagerContents : public views::View,
public views::ButtonListener,
+ public views::DialogDelegate,
public views::TableViewObserver,
public views::LinkController,
public views::ContextMenuController,
@@ -700,6 +702,18 @@ class TaskManagerContents : public views::View,
// ButtonListener implementation.
virtual void ButtonPressed(views::Button* sender);
+ // views::DialogDelegate
+ virtual bool CanResize() const;
+ virtual bool CanMaximize() const;
+ virtual bool IsAlwaysOnTop() const;
+ virtual bool HasAlwaysOnTopMenu() const;
+ virtual std::wstring GetWindowTitle() const;
+ virtual std::wstring GetWindowName() const;
+ virtual int GetDialogButtons() const;
+ virtual void WindowClosing();
+ virtual void DeleteDelegate();
+ virtual views::View* GetContentsView();
+
// views::TableViewObserver implementation.
virtual void OnSelectionChanged();
virtual void OnDoubleClick();
@@ -905,6 +919,51 @@ void TaskManagerContents::ButtonPressed(views::Button* sender) {
task_manager_->KillSelectedProcesses();
}
+// DialogDelegate implementation.
+bool TaskManagerContents::CanResize() const {
+ return true;
+}
+
+bool TaskManagerContents::CanMaximize() const {
+ return true;
+}
+
+bool TaskManagerContents::IsAlwaysOnTop() const {
+ return true;
+}
+
+bool TaskManagerContents::HasAlwaysOnTopMenu() const {
+ return true;
+};
+
+std::wstring TaskManagerContents::GetWindowTitle() const {
+ return l10n_util::GetString(IDS_TASK_MANAGER_TITLE);
+}
+
+std::wstring TaskManagerContents::GetWindowName() const {
+ return prefs::kTaskManagerWindowPlacement;
+}
+
+int TaskManagerContents::GetDialogButtons() const {
+ return MessageBoxFlags::DIALOGBUTTON_NONE;
+}
+
+void TaskManagerContents::WindowClosing() {
+ // Remove the view from its parent to trigger the contents'
+ // ViewHierarchyChanged notification to unhook the extra buttons from the
+ // non-client view.
+ GetParent()->RemoveChildView(this);
+ task_manager_->Close();
+}
+
+void TaskManagerContents::DeleteDelegate() {
+ ReleaseWindow();
+}
+
+views::View* TaskManagerContents::GetContentsView() {
+ return this;
+}
+
// views::TableViewObserver implementation.
void TaskManagerContents::OnSelectionChanged() {
kill_button_->SetEnabled(!task_manager_->BrowserProcessIsSelected() &&
@@ -973,12 +1032,13 @@ TaskManager::~TaskManager() {
// static
void TaskManager::Open() {
TaskManager* task_manager = GetInstance();
- if (task_manager->window()) {
- task_manager->window()->Activate();
+ if (task_manager->contents_->window()) {
+ task_manager->contents_->window()->Activate();
} else {
- views::Window::CreateChromeWindow(NULL, gfx::Rect(), task_manager);
+ views::Window::CreateChromeWindow(NULL, gfx::Rect(),
+ task_manager->contents_.get());
task_manager->table_model_->StartUpdating();
- task_manager->window()->Show();
+ task_manager->contents_->window()->Show();
}
}
@@ -1061,51 +1121,6 @@ void TaskManager::RemoveResource(Resource* resource) {
table_model_->RemoveResource(resource);
}
-// DialogDelegate implementation:
-bool TaskManager::CanResize() const {
- return true;
-}
-
-bool TaskManager::CanMaximize() const {
- return true;
-}
-
-bool TaskManager::IsAlwaysOnTop() const {
- return true;
-}
-
-bool TaskManager::HasAlwaysOnTopMenu() const {
- return true;
-};
-
-std::wstring TaskManager::GetWindowTitle() const {
- return l10n_util::GetString(IDS_TASK_MANAGER_TITLE);
-}
-
-std::wstring TaskManager::GetWindowName() const {
- return prefs::kTaskManagerWindowPlacement;
-}
-
-int TaskManager::GetDialogButtons() const {
- return MessageBoxFlags::DIALOGBUTTON_NONE;
-}
-
-void TaskManager::WindowClosing() {
- // Remove the view from its parent to trigger the contents'
- // ViewHierarchyChanged notification to unhook the extra buttons from the
- // non-client view.
- contents_->GetParent()->RemoveChildView(contents_.get());
- Close();
-}
-
-void TaskManager::DeleteDelegate() {
- ReleaseWindow();
-}
-
-views::View* TaskManager::GetContentsView() {
- return contents_.get();
-}
-
// static
TaskManager* TaskManager::GetInstance() {
return Singleton<TaskManager>::get();
diff --git a/chrome/browser/task_manager.h b/chrome/browser/task_manager.h
index da4f0d2..5538f16 100644
--- a/chrome/browser/task_manager.h
+++ b/chrome/browser/task_manager.h
@@ -21,7 +21,6 @@
// TODO(port): Port or produce equivalent.
#include "chrome/views/controls/table/group_table_view.h"
#endif // defined(OS_WIN)
-#include "chrome/views/window/dialog_delegate.h"
#include "net/url_request/url_request_job_tracker.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
@@ -47,7 +46,7 @@ class ProcessMetrics;
}
// This class is a singleton.
-class TaskManager : public views::DialogDelegate {
+class TaskManager {
public:
// A resource represents one row in the task manager.
// Resources from similar processes are grouped together by the task manager.
@@ -131,18 +130,6 @@ class TaskManager : public views::DialogDelegate {
void AddResource(Resource* resource);
void RemoveResource(Resource* resource);
- // views::DialogDelegate methods:
- virtual bool CanResize() const;
- virtual bool CanMaximize() const;
- virtual bool IsAlwaysOnTop() const;
- virtual bool HasAlwaysOnTopMenu() const;
- virtual std::wstring GetWindowTitle() const;
- virtual std::wstring GetWindowName() const;
- virtual int GetDialogButtons() const;
- virtual void WindowClosing();
- virtual void DeleteDelegate();
- virtual views::View* GetContentsView();
-
private:
FRIEND_TEST(TaskManagerTest, Basic);
FRIEND_TEST(TaskManagerTest, Resources);