diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-06 07:27:40 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-06 07:27:40 +0000 |
commit | f9fdb0727cff50427843301d7dfff988daa4a153 (patch) | |
tree | 1cbec831312ed72bfab25138087b92c4fd1d6785 /chrome | |
parent | 7555ca9a4435e3fe8eb06faac07df36ecf6c903a (diff) | |
download | chromium_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.cc | 113 | ||||
-rw-r--r-- | chrome/browser/task_manager.h | 15 |
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); |