| 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 4070c3edc71350dc9940e7f52f3f3856fef5a91d..7cfbeeb7a74554e07ec01f67884b306ff3390340 100644
|
| --- a/chrome/browser/ui/webui/task_manager_dialog.cc
|
| +++ b/chrome/browser/ui/webui/task_manager_dialog.cc
|
| @@ -7,11 +7,15 @@
|
| #include "base/bind.h"
|
| #include "base/memory/singleton.h"
|
| #include "base/utf_string_conversions.h"
|
| +#include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/platform_util.h"
|
| +#include "chrome/browser/prefs/pref_service.h"
|
| +#include "chrome/browser/prefs/scoped_user_pref_update.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/pref_names.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "grit/google_chrome_strings.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| @@ -56,6 +60,21 @@ class TaskManagerDialogImpl : public HtmlDialogUIDelegate {
|
| std::vector<WebUIMessageHandler*>* handlers) const OVERRIDE {
|
| }
|
| virtual void GetDialogSize(gfx::Size* size) const OVERRIDE {
|
| + // If we previously saved the dialog's bounds, use them.
|
| + if (g_browser_process->local_state()) {
|
| + const DictionaryValue* placement_pref =
|
| + g_browser_process->local_state()->GetDictionary(
|
| + prefs::kTaskManagerWindowPlacement);
|
| + int width, height;
|
| + if (placement_pref &&
|
| + placement_pref->GetInteger("width", &width) &&
|
| + placement_pref->GetInteger("height", &height)) {
|
| + size->SetSize(std::max(1, width), std::max(1, height));
|
| + return;
|
| + }
|
| + }
|
| +
|
| + // Otherwise set default size.
|
| size->SetSize(640, 480);
|
| }
|
| virtual std::string GetDialogArgs() const OVERRIDE {
|
| @@ -74,6 +93,18 @@ class TaskManagerDialogImpl : public HtmlDialogUIDelegate {
|
| virtual bool HandleContextMenu(const ContextMenuParams& params) OVERRIDE {
|
| return true;
|
| }
|
| + virtual void StoreDialogSize(gfx::Rect dialog_bounds) OVERRIDE {
|
| + // Store the dialog's size so we can restore it the next time it's opened.
|
| + if (g_browser_process->local_state()) {
|
| + DictionaryPrefUpdate update(g_browser_process->local_state(),
|
| + prefs::kTaskManagerWindowPlacement);
|
| + DictionaryValue* placement_pref = update.Get();
|
| + // Note that we store left/top for consistency with Windows, but that we
|
| + // *don't* restore them.
|
| + placement_pref->SetInteger("width", dialog_bounds.width());
|
| + placement_pref->SetInteger("height", dialog_bounds.height());
|
| + }
|
| + }
|
|
|
| private:
|
| void ShowDialog(bool is_background_page_mode);
|
|
|