summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorbeng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-07-30 04:12:18 +0000
committerbeng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-07-30 04:12:18 +0000
commit0f2f4b60511540e292e085ba5e1985be6bf93908 (patch)
tree6d6bb042fe78bb23c4eca3cf4a4222a3dab38e74 /chrome/browser
parentaaeb9dc745d49afa66c1b613daa5a3123f309955 (diff)
downloadchromium_src-0f2f4b60511540e292e085ba5e1985be6bf93908.zip
chromium_src-0f2f4b60511540e292e085ba5e1985be6bf93908.tar.gz
chromium_src-0f2f4b60511540e292e085ba5e1985be6bf93908.tar.bz2
Window Delegate Improvements:
- Windows now must have a Delegate. Just construct the default WindowDelegate if you don't want to have to write one in testing. - Windows now obtain their contents view by asking the delegate via WindowDelegate::GetContentsView. - Contents views no longer need to manually store a pointer to the Window that contains them, WindowDelegate does this automatically via its window() accessor. Reviewer notes: - review window_delegate.h first, then - window.h/cc - custom frame window.h/cc - constrained_window_impl.h/cc - then everything else (just updating all call sites) B=1280060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser.cc8
-rw-r--r--chrome/browser/browser_commands.cc39
-rw-r--r--chrome/browser/debugger/debugger_window.cc7
-rw-r--r--chrome/browser/external_protocol_dialog.cc10
-rw-r--r--chrome/browser/external_protocol_dialog.h1
-rw-r--r--chrome/browser/first_run.cc8
-rw-r--r--chrome/browser/importer.cc8
-rw-r--r--chrome/browser/jsmessage_box_handler.cc11
-rw-r--r--chrome/browser/jsmessage_box_handler.h1
-rw-r--r--chrome/browser/page_info_window.cc36
-rw-r--r--chrome/browser/page_info_window.h8
-rw-r--r--chrome/browser/repost_form_warning_dialog.cc18
-rw-r--r--chrome/browser/repost_form_warning_dialog.h5
-rw-r--r--chrome/browser/task_manager.cc25
-rw-r--r--chrome/browser/task_manager.h3
-rw-r--r--chrome/browser/user_data_dir_dialog.cc11
-rw-r--r--chrome/browser/user_data_dir_dialog.h2
-rw-r--r--chrome/browser/views/about_chrome_view.cc15
-rw-r--r--chrome/browser/views/about_chrome_view.h5
-rw-r--r--chrome/browser/views/bookmark_editor_view.cc16
-rw-r--r--chrome/browser/views/bookmark_editor_view.h4
-rw-r--r--chrome/browser/views/bug_report_view.cc9
-rw-r--r--chrome/browser/views/bug_report_view.h3
-rw-r--r--chrome/browser/views/clear_browsing_data.cc15
-rw-r--r--chrome/browser/views/clear_browsing_data.h5
-rw-r--r--chrome/browser/views/constrained_window_impl.cc116
-rw-r--r--chrome/browser/views/constrained_window_impl.h20
-rw-r--r--chrome/browser/views/edit_keyword_controller.cc17
-rw-r--r--chrome/browser/views/edit_keyword_controller.h4
-rw-r--r--chrome/browser/views/first_run_customize_view.cc11
-rw-r--r--chrome/browser/views/first_run_customize_view.h17
-rw-r--r--chrome/browser/views/first_run_view.cc22
-rw-r--r--chrome/browser/views/first_run_view.h1
-rw-r--r--chrome/browser/views/first_run_view_base.cc9
-rw-r--r--chrome/browser/views/first_run_view_base.h6
-rw-r--r--chrome/browser/views/html_dialog_view.cc15
-rw-r--r--chrome/browser/views/html_dialog_view.h6
-rw-r--r--chrome/browser/views/hung_renderer_view.cc36
-rw-r--r--chrome/browser/views/importer_lock_view.cc7
-rw-r--r--chrome/browser/views/importer_lock_view.h7
-rw-r--r--chrome/browser/views/importer_view.cc9
-rw-r--r--chrome/browser/views/importer_view.h5
-rw-r--r--chrome/browser/views/importing_progress_view.cc13
-rw-r--r--chrome/browser/views/importing_progress_view.h6
-rw-r--r--chrome/browser/views/input_window.cc20
-rw-r--r--chrome/browser/views/keyword_editor_view.cc6
-rw-r--r--chrome/browser/views/keyword_editor_view.h1
-rw-r--r--chrome/browser/views/options/advanced_page_view.cc6
-rw-r--r--chrome/browser/views/options/content_page_view.cc9
-rw-r--r--chrome/browser/views/options/cookies_view.cc6
-rw-r--r--chrome/browser/views/options/cookies_view.h1
-rw-r--r--chrome/browser/views/options/fonts_languages_window_view.cc15
-rw-r--r--chrome/browser/views/options/fonts_languages_window_view.h11
-rw-r--r--chrome/browser/views/options/languages_page_view.cc11
-rw-r--r--chrome/browser/views/options/options_window_view.cc22
-rw-r--r--chrome/browser/views/password_manager_view.cc17
-rw-r--r--chrome/browser/views/password_manager_view.h4
-rw-r--r--chrome/browser/views/restart_message_box.cc8
-rw-r--r--chrome/browser/views/restart_message_box.h5
-rw-r--r--chrome/browser/views/shelf_item_dialog.cc31
-rw-r--r--chrome/browser/views/shelf_item_dialog.h4
61 files changed, 395 insertions, 382 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index aebd7cf..3795b14 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -770,10 +770,10 @@ void Browser::ShowHtmlDialog(HtmlDialogContentsDelegate* delegate,
HWND parent_hwnd) {
parent_hwnd = parent_hwnd ? parent_hwnd : GetTopLevelHWND();
HtmlDialogView* html_view = new HtmlDialogView(this, profile_, delegate);
- ChromeViews::Window* html_dialog = ChromeViews::Window::CreateChromeWindow(
- parent_hwnd, gfx::Rect(), html_view, html_view);
- html_view->InitDialog(html_dialog);
- html_dialog->Show();
+ ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(),
+ html_view);
+ html_view->InitDialog();
+ html_view->window()->Show();
}
void Browser::Observe(NotificationType type,
diff --git a/chrome/browser/browser_commands.cc b/chrome/browser/browser_commands.cc
index 0d65b0b..3b5d201 100644
--- a/chrome/browser/browser_commands.cc
+++ b/chrome/browser/browser_commands.cc
@@ -546,14 +546,10 @@ void Browser::ExecuteCommand(int id) {
case IDC_ABOUT: {
UserMetrics::RecordAction(L"AboutChrome", profile_);
- AboutChromeView* about_view = new AboutChromeView(profile_);
- ChromeViews::Window* about_dialog =
- ChromeViews::Window::CreateChromeWindow(GetTopLevelHWND(),
- gfx::Rect(),
- about_view,
- about_view);
- about_dialog->Show();
- about_view->SetDialog(about_dialog);
+ ChromeViews::Window::CreateChromeWindow(
+ GetTopLevelHWND(),
+ gfx::Rect(),
+ new AboutChromeView(profile_))->Show();
break;
}
@@ -944,12 +940,8 @@ void Browser::OpenKeywordEditor() {
}
void Browser::OpenImportSettingsDialog() {
- ImporterView* importer_view = new ImporterView(profile_);
- ChromeViews::Window* importer_dialog =
- ChromeViews::Window::CreateChromeWindow(GetTopLevelHWND(), gfx::Rect(),
- importer_view, importer_view);
- importer_dialog->Show();
- importer_view->set_dialog(importer_dialog);
+ ChromeViews::Window::CreateChromeWindow(GetTopLevelHWND(), gfx::Rect(),
+ new ImporterView(profile_))->Show();
}
void Browser::OpenBugReportDialog() {
@@ -988,22 +980,15 @@ void Browser::OpenBugReportDialog() {
bug_report_view->set_png_data(screenshot_png);
// Create and show the dialog
- ChromeViews::Window* bug_report_dialog =
- ChromeViews::Window::CreateChromeWindow(GetTopLevelHWND(), gfx::Rect(),
- bug_report_view, bug_report_view);
- bug_report_dialog->Show();
- bug_report_view->set_dialog(bug_report_dialog);
+ ChromeViews::Window::CreateChromeWindow(GetTopLevelHWND(), gfx::Rect(),
+ bug_report_view)->Show();
}
void Browser::OpenClearBrowsingDataDialog() {
- ClearBrowsingDataView* clear_browsing_data_view =
- new ClearBrowsingDataView(profile_);
- ChromeViews::Window* clear_browsing_data_dialog =
- ChromeViews::Window::CreateChromeWindow(
- GetTopLevelHWND(), gfx::Rect(),
- clear_browsing_data_view, clear_browsing_data_view);
- clear_browsing_data_dialog->Show();
- clear_browsing_data_view->SetDialog(clear_browsing_data_dialog);
+ ChromeViews::Window::CreateChromeWindow(
+ GetTopLevelHWND(),
+ gfx::Rect(),
+ new ClearBrowsingDataView(profile_))->Show();
}
void Browser::RunSimpleFrameMenu(const CPoint& pt, HWND hwnd) {
diff --git a/chrome/browser/debugger/debugger_window.cc b/chrome/browser/debugger/debugger_window.cc
index ee21dd0..6e94a06 100644
--- a/chrome/browser/debugger/debugger_window.cc
+++ b/chrome/browser/debugger/debugger_window.cc
@@ -62,8 +62,7 @@ void DebuggerWindow::Show(TabContents* tab) {
return;
}
view_ = new DebuggerView(this);
- window_ = ChromeViews::Window::CreateChromeWindow(
- NULL, gfx::Rect(), view_, this);
+ window_ = ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), this);
view_->OnInit();
window_->Show();
view_->OnShow();
@@ -176,6 +175,10 @@ bool DebuggerWindow::CanResize() const {
return true;
}
+ChromeViews::View* DebuggerWindow::GetContentsView() {
+ return view_;
+}
+
///////////////////////////////////////////////////////////////////
// Overridden from ChromeViews::TextField::Controller:
diff --git a/chrome/browser/external_protocol_dialog.cc b/chrome/browser/external_protocol_dialog.cc
index 251a911..e493829 100644
--- a/chrome/browser/external_protocol_dialog.cc
+++ b/chrome/browser/external_protocol_dialog.cc
@@ -105,6 +105,10 @@ bool ExternalProtocolDialog::Accept() {
return true;
}
+ChromeViews::View* ExternalProtocolDialog::GetContentsView() {
+ return message_box_view_;
+}
+
///////////////////////////////////////////////////////////////////////////////
// ExternalProtocolDialog, private:
@@ -135,11 +139,7 @@ ExternalProtocolDialog::ExternalProtocolDialog(TabContents* tab_contents,
root_hwnd = NULL;
}
- ChromeViews::Window* dialog =
- ChromeViews::Window::CreateChromeWindow(root_hwnd, gfx::Rect(),
- message_box_view_, this);
-
- dialog->Show();
+ ChromeViews::Window::CreateChromeWindow(root_hwnd, gfx::Rect(), this)->Show();
}
std::wstring ExternalProtocolDialog::GetApplicationForProtocol() {
diff --git a/chrome/browser/external_protocol_dialog.h b/chrome/browser/external_protocol_dialog.h
index 13777c53..18f56d5 100644
--- a/chrome/browser/external_protocol_dialog.h
+++ b/chrome/browser/external_protocol_dialog.h
@@ -55,6 +55,7 @@ class ExternalProtocolDialog : public ChromeViews::DialogDelegate {
virtual std::wstring GetWindowTitle() const;
virtual void WindowClosing();
virtual bool Accept();
+ virtual ChromeViews::View* GetContentsView();
// ChromeViews::WindowDelegate Methods:
virtual bool IsAlwaysOnTop() const { return false; }
diff --git a/chrome/browser/first_run.cc b/chrome/browser/first_run.cc
index 950391b..51720ab 100644
--- a/chrome/browser/first_run.cc
+++ b/chrome/browser/first_run.cc
@@ -182,12 +182,8 @@ bool Upgrade::RelaunchChromeBrowser(const CommandLine& command_line) {
}
void OpenFirstRunDialog(Profile* profile) {
- FirstRunView* first_run_view = new FirstRunView(profile);
- ChromeViews::Window* first_run_dialog =
- ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(),
- first_run_view, first_run_view);
- first_run_dialog->Show();
- first_run_view->set_dialog(first_run_dialog);
+ ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(),
+ new FirstRunView(profile))->Show();
// We must now run a message loop (will be terminated when the First Run UI
// is closed) so that the window can receive messages and we block the
// browser window from showing up. We pass the accelerator handler here so
diff --git a/chrome/browser/importer.cc b/chrome/browser/importer.cc
index 2053527..f0b2b51 100644
--- a/chrome/browser/importer.cc
+++ b/chrome/browser/importer.cc
@@ -340,12 +340,8 @@ void ImporterHost::Observe(NotificationType type,
}
void ImporterHost::ShowWarningDialog() {
- ImporterLockView* view = new ImporterLockView(this);
- ChromeViews::Window* dialog =
- ChromeViews::Window::CreateChromeWindow(
- GetActiveWindow(), gfx::Rect(), view, view);
- dialog->Show();
- view->set_dialog(dialog);
+ ChromeViews::Window::CreateChromeWindow(GetActiveWindow(), gfx::Rect(),
+ new ImporterLockView(this))->Show();
}
void ImporterHost::OnLockViewEnd(bool is_continue) {
diff --git a/chrome/browser/jsmessage_box_handler.cc b/chrome/browser/jsmessage_box_handler.cc
index d3dacd8..1576a21 100644
--- a/chrome/browser/jsmessage_box_handler.cc
+++ b/chrome/browser/jsmessage_box_handler.cc
@@ -146,8 +146,8 @@ void JavascriptMessageBoxHandler::ShowModalDialog() {
web_contents_->Activate();
HWND root_hwnd = GetAncestor(web_contents_->GetHWND(), GA_ROOT);
- dialog_ = ChromeViews::Window::CreateChromeWindow(root_hwnd, gfx::Rect(),
- message_box_view_, this);
+ dialog_ =
+ ChromeViews::Window::CreateChromeWindow(root_hwnd, gfx::Rect(), this);
dialog_->Show();
}
@@ -160,6 +160,13 @@ void JavascriptMessageBoxHandler::ActivateModalDialog() {
}
///////////////////////////////////////////////////////////////////////////////
+// JavascriptMessageBoxHandler, ChromeViews::WindowDelegate implementation:
+
+ChromeViews::View* JavascriptMessageBoxHandler::GetContentsView() {
+ return message_box_view_;
+}
+
+///////////////////////////////////////////////////////////////////////////////
// JavascriptMessageBoxHandler, private:
void JavascriptMessageBoxHandler::Observe(NotificationType type,
diff --git a/chrome/browser/jsmessage_box_handler.h b/chrome/browser/jsmessage_box_handler.h
index 3369f7f..92a506f 100644
--- a/chrome/browser/jsmessage_box_handler.h
+++ b/chrome/browser/jsmessage_box_handler.h
@@ -72,6 +72,7 @@ class JavascriptMessageBoxHandler
// ChromeViews::WindowDelegate Methods:
virtual bool IsModal() const { return true; }
+ virtual ChromeViews::View* GetContentsView();
protected:
// Use RunJavaScriptMessageBox to use.
diff --git a/chrome/browser/page_info_window.cc b/chrome/browser/page_info_window.cc
index f3ea75e..dc6d8fa 100644
--- a/chrome/browser/page_info_window.cc
+++ b/chrome/browser/page_info_window.cc
@@ -509,7 +509,7 @@ void PageInfoWindow::RegisterPrefs(PrefService* prefs) {
prefs->RegisterDictionaryPref(prefs::kPageInfoWindowPlacement);
}
-PageInfoWindow::PageInfoWindow() : cert_id_(0) {
+PageInfoWindow::PageInfoWindow() : cert_id_(0), contents_(NULL) {
}
PageInfoWindow::~PageInfoWindow() {
@@ -526,15 +526,15 @@ void PageInfoWindow::Init(Profile* profile,
l10n_util::GetString(IDS_PAGEINFO_CERT_INFO_BUTTON));
cert_info_button_->SetListener(this);
- PageInfoContentView* contents = new PageInfoContentView();
+ contents_ = new PageInfoContentView();
DWORD sys_color = ::GetSysColor(COLOR_3DFACE);
SkColor color = SkColorSetRGB(GetRValue(sys_color), GetGValue(sys_color),
GetBValue(sys_color));
- contents->SetBackground(
+ contents_->SetBackground(
ChromeViews::Background::CreateSolidBackground(color));
- ChromeViews::GridLayout* layout = new ChromeViews::GridLayout(contents);
- contents->SetLayoutManager(layout);
+ ChromeViews::GridLayout* layout = new ChromeViews::GridLayout(contents_);
+ contents_->SetLayoutManager(layout);
ChromeViews::ColumnSet* columns = layout->AddColumnSet(0);
columns->AddPaddingColumn(0, kHorizontalPadding);
columns->AddColumn(ChromeViews::GridLayout::FILL, // Horizontal resize.
@@ -569,12 +569,12 @@ void PageInfoWindow::Init(Profile* profile,
}
}
- window_ = ChromeViews::Window::CreateChromeWindow(parent, gfx::Rect(),
- contents, this);
+ ChromeViews::Window::CreateChromeWindow(parent, gfx::Rect(), this);
+ // TODO(beng): (Cleanup) - cert viewer button should use GetExtraView.
if (cert_id_) {
- contents->GetParent()->AddChildView(cert_info_button_);
- contents->set_cert_viewer_button(cert_info_button_);
- contents->Layout();
+ contents_->GetParent()->AddChildView(cert_info_button_);
+ contents_->set_cert_viewer_button(cert_info_button_);
+ contents_->Layout();
}
}
@@ -589,7 +589,7 @@ ChromeViews::View* PageInfoWindow::CreateSecurityTabView(
}
void PageInfoWindow::Show() {
- window_->Show();
+ window()->Show();
opened_window_count_++;
}
@@ -604,20 +604,24 @@ std::wstring PageInfoWindow::GetWindowTitle() const {
void PageInfoWindow::SaveWindowPosition(const CRect& bounds,
bool maximized,
bool always_on_top) {
- window_->SaveWindowPositionToPrefService(g_browser_process->local_state(),
- prefs::kPageInfoWindowPlacement,
- bounds, maximized, always_on_top);
+ window()->SaveWindowPositionToPrefService(g_browser_process->local_state(),
+ prefs::kPageInfoWindowPlacement,
+ bounds, maximized, always_on_top);
}
bool PageInfoWindow::RestoreWindowPosition(CRect* bounds,
bool* maximized,
bool* always_on_top) {
- return window_->RestoreWindowPositionFromPrefService(
+ return window()->RestoreWindowPositionFromPrefService(
g_browser_process->local_state(),
prefs::kPageInfoWindowPlacement,
bounds, maximized, always_on_top);
}
+ChromeViews::View* PageInfoWindow::GetContentsView() {
+ return contents_;
+}
+
void PageInfoWindow::ButtonPressed(ChromeViews::NativeButton* sender) {
if (sender == cert_info_button_) {
DCHECK(cert_id_ != 0);
@@ -675,7 +679,7 @@ void PageInfoWindow::ShowCertDialog(int cert_id) {
view_info.dwSize = sizeof(view_info);
// We set our parent to the tab window. This makes the cert dialog created
// in CryptUIDlgViewCertificate modal to the browser.
- view_info.hwndParent = window_->owning_window();
+ view_info.hwndParent = window()->owning_window();
view_info.dwFlags = CRYPTUI_DISABLE_EDITPROPERTIES |
CRYPTUI_DISABLE_ADDTOSTORE;
view_info.pCertContext = cert->os_cert_handle();
diff --git a/chrome/browser/page_info_window.h b/chrome/browser/page_info_window.h
index 9246089..1e71ddd 100644
--- a/chrome/browser/page_info_window.h
+++ b/chrome/browser/page_info_window.h
@@ -42,6 +42,7 @@ class TabbedPane;
}
class NavigationEntry;
+class PageInfoContentView;
class PrefService;
class Profile;
class X509Certificate;
@@ -85,6 +86,7 @@ class PageInfoWindow : public ChromeViews::DialogDelegate,
virtual bool RestoreWindowPosition(CRect* bounds,
bool* maximized,
bool* always_on_top);
+ virtual ChromeViews::View* GetContentsView();
private:
ChromeViews::View* CreateGeneralTabView();
@@ -103,12 +105,12 @@ class PageInfoWindow : public ChromeViews::DialogDelegate,
// The id of the server cert for this page (0 means no cert).
int cert_id_;
+ // The page info contents.
+ PageInfoContentView* contents_;
+
// A counter of how many page info windows are currently opened.
static int opened_window_count_;
- // The Window
- ChromeViews::Window* window_;
-
DISALLOW_EVIL_CONSTRUCTORS(PageInfoWindow);
};
diff --git a/chrome/browser/repost_form_warning_dialog.cc b/chrome/browser/repost_form_warning_dialog.cc
index 4b19d3b..2d45028 100644
--- a/chrome/browser/repost_form_warning_dialog.cc
+++ b/chrome/browser/repost_form_warning_dialog.cc
@@ -75,18 +75,23 @@ void RepostFormWarningDialog::WindowClosing() {
}
bool RepostFormWarningDialog::Cancel() {
- dialog_ = NULL;
return true;
}
bool RepostFormWarningDialog::Accept() {
- dialog_ = NULL;
if (navigation_controller_)
navigation_controller_->ReloadDontCheckForRepost();
return true;
}
///////////////////////////////////////////////////////////////////////////////
+// RepostFormWarningDialog, ChromeViews::WindowDelegate implementation:
+
+ChromeViews::View* RepostFormWarningDialog::GetContentsView() {
+ return message_box_view_;
+}
+
+///////////////////////////////////////////////////////////////////////////////
// RepostFormWarningDialog, private:
RepostFormWarningDialog::RepostFormWarningDialog(
@@ -100,10 +105,7 @@ RepostFormWarningDialog::RepostFormWarningDialog(
HWND root_hwnd = NULL;
if (BrowserList::GetLastActive())
root_hwnd = BrowserList::GetLastActive()->GetTopLevelHWND();
- ChromeViews::Window* dialog_ =
- ChromeViews::Window::CreateChromeWindow(root_hwnd, gfx::Rect(),
- message_box_view_, this);
- dialog_->Show();
+ ChromeViews::Window::CreateChromeWindow(root_hwnd, gfx::Rect(), this)->Show();
NotificationService::current()->
AddObserver(this, NOTIFY_LOAD_START, NotificationService::AllSources());
NotificationService::current()->
@@ -116,10 +118,10 @@ void RepostFormWarningDialog::Observe(NotificationType type,
// Close the dialog if we load a page (because reloading might not apply to
// the same page anymore) or if the tab is closed, because then we won't have
// a navigation controller anymore.
- if (dialog_ && navigation_controller_ &&
+ if (window() && navigation_controller_ &&
(type == NOTIFY_LOAD_START || type == NOTIFY_TAB_CLOSING) &&
Source<NavigationController>(source).ptr() == navigation_controller_) {
navigation_controller_ = NULL;
- dialog_->Close();
+ window()->Close();
}
}
diff --git a/chrome/browser/repost_form_warning_dialog.h b/chrome/browser/repost_form_warning_dialog.h
index 6df1278..775c934 100644
--- a/chrome/browser/repost_form_warning_dialog.h
+++ b/chrome/browser/repost_form_warning_dialog.h
@@ -57,6 +57,7 @@ class RepostFormWarningDialog : public ChromeViews::DialogDelegate,
// ChromeViews::WindowDelegate Methods:
virtual bool IsModal() const { return true; }
+ virtual ChromeViews::View* GetContentsView();
private:
// Use RunRepostFormWarningDialog to use.
@@ -74,10 +75,6 @@ class RepostFormWarningDialog : public ChromeViews::DialogDelegate,
// Navigation controller, used to continue the reload.
NavigationController* navigation_controller_;
- // Our window. Used to close the dialog if we navigate or lose our navigation
- // controller before the user makes a decision.
- ChromeViews::Window* dialog_;
-
DISALLOW_EVIL_CONSTRUCTORS(RepostFormWarningDialog);
};
diff --git a/chrome/browser/task_manager.cc b/chrome/browser/task_manager.cc
index 26731c9..17cddba 100644
--- a/chrome/browser/task_manager.cc
+++ b/chrome/browser/task_manager.cc
@@ -823,7 +823,7 @@ void TaskManager::RegisterPrefs(PrefService* prefs) {
prefs->RegisterDictionaryPref(prefs::kTaskManagerWindowPlacement);
}
-TaskManager::TaskManager() : window_(NULL) {
+TaskManager::TaskManager() {
table_model_ = new TaskManagerTableModel(this);
contents_.reset(new TaskManagerContents(this, table_model_));
}
@@ -834,19 +834,16 @@ TaskManager::~TaskManager() {
// static
void TaskManager::Open() {
TaskManager* task_manager = GetInstance();
- if (task_manager->window_) {
- task_manager->window_->MoveToFront(true);
+ if (task_manager->window()) {
+ task_manager->window()->MoveToFront(true);
} else {
- task_manager->window_ =
- ChromeViews::Window::CreateChromeWindow(
- NULL, gfx::Rect(), task_manager->contents_.get(), task_manager);
+ ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), task_manager);
task_manager->table_model_->StartUpdating();
- task_manager->window_->Show();
+ task_manager->window()->Show();
}
}
void TaskManager::Close() {
- window_ = NULL;
table_model_->StopUpdating();
table_model_->Clear();
}
@@ -923,15 +920,15 @@ std::wstring TaskManager::GetWindowTitle() const {
void TaskManager::SaveWindowPosition(const CRect& bounds,
bool maximized,
bool always_on_top) {
- window_->SaveWindowPositionToPrefService(g_browser_process->local_state(),
- prefs::kTaskManagerWindowPlacement,
- bounds, maximized, always_on_top);
+ window()->SaveWindowPositionToPrefService(g_browser_process->local_state(),
+ prefs::kTaskManagerWindowPlacement,
+ bounds, maximized, always_on_top);
}
bool TaskManager::RestoreWindowPosition(CRect* bounds,
bool* maximized,
bool* always_on_top) {
- return window_->RestoreWindowPositionFromPrefService(
+ return window()->RestoreWindowPositionFromPrefService(
g_browser_process->local_state(),
prefs::kTaskManagerWindowPlacement,
bounds, maximized, always_on_top);
@@ -949,6 +946,10 @@ void TaskManager::WindowClosing() {
Close();
}
+ChromeViews::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 3dc89e8..dd5431e 100644
--- a/chrome/browser/task_manager.h
+++ b/chrome/browser/task_manager.h
@@ -150,6 +150,7 @@ class TaskManager : public ChromeViews::DialogDelegate {
bool* always_on_top);
virtual int GetDialogButtons() const;
virtual void WindowClosing();
+ virtual ChromeViews::View* GetContentsView();
private:
// Obtain an instance via GetInstance().
@@ -163,8 +164,6 @@ class TaskManager : public ChromeViews::DialogDelegate {
// Returns the singleton instance (and initializes it if necessary).
static TaskManager* GetInstance();
- ChromeViews::Window* window_;
-
// The model used for the list in the table that displays the list of tab
// processes. It is ref counted because it is passed as a parameter to
// MessageLoop::InvokeLater().
diff --git a/chrome/browser/user_data_dir_dialog.cc b/chrome/browser/user_data_dir_dialog.cc
index be0b9d9..56b6ba2 100644
--- a/chrome/browser/user_data_dir_dialog.cc
+++ b/chrome/browser/user_data_dir_dialog.cc
@@ -53,10 +53,7 @@ UserDataDirDialog::UserDataDirDialog(const std::wstring& user_data_dir)
message_box_view_ = new MessageBoxView(MessageBoxView::kIsConfirmMessageBox,
message_text.c_str(), std::wstring(), kDialogWidth);
- message_box_window_ = ChromeViews::Window::CreateChromeWindow(
- NULL, gfx::Rect(), message_box_view_, this);
-
- message_box_window_->Show();
+ ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), this)->Show();
}
UserDataDirDialog::~UserDataDirDialog() {
@@ -109,6 +106,10 @@ bool UserDataDirDialog::Cancel() {
return true;
}
+ChromeViews::View* UserDataDirDialog::GetContentsView() {
+ return message_box_view_;
+}
+
bool UserDataDirDialog::Dispatch(const MSG& msg) {
TranslateMessage(&msg);
DispatchMessage(&msg);
@@ -118,7 +119,7 @@ bool UserDataDirDialog::Dispatch(const MSG& msg) {
void UserDataDirDialog::FileSelected(const std::wstring& path, void* params) {
user_data_dir_ = path;
is_blocking_ = false;
- message_box_window_->Close();
+ window()->Close();
}
void UserDataDirDialog::FileSelectionCanceled(void* params) {
diff --git a/chrome/browser/user_data_dir_dialog.h b/chrome/browser/user_data_dir_dialog.h
index eca34e5..ce1bff5 100644
--- a/chrome/browser/user_data_dir_dialog.h
+++ b/chrome/browser/user_data_dir_dialog.h
@@ -67,6 +67,7 @@ class UserDataDirDialog : public ChromeViews::DialogDelegate,
// ChromeViews::WindowDelegate Methods:
virtual bool IsAlwaysOnTop() const { return false; }
virtual bool IsModal() const { return false; }
+ virtual ChromeViews::View* GetContentsView();
// MessageLoop::Dispatcher Method:
virtual bool Dispatch(const MSG& msg);
@@ -82,7 +83,6 @@ class UserDataDirDialog : public ChromeViews::DialogDelegate,
std::wstring user_data_dir_;
MessageBoxView* message_box_view_;
- ChromeViews::Window* message_box_window_;
scoped_refptr<SelectFileDialog> select_file_dialog_;
// Used to keep track of whether or not to block the message loop (still
diff --git a/chrome/browser/views/about_chrome_view.cc b/chrome/browser/views/about_chrome_view.cc
index 157ccc6..4ad5908 100644
--- a/chrome/browser/views/about_chrome_view.cc
+++ b/chrome/browser/views/about_chrome_view.cc
@@ -54,8 +54,7 @@
// AboutChromeView, public:
AboutChromeView::AboutChromeView(Profile* profile)
- : dialog_(NULL),
- profile_(profile),
+ : profile_(profile),
about_dlg_background_(NULL),
about_title_label_(NULL),
version_label_(NULL),
@@ -372,6 +371,10 @@ bool AboutChromeView::Accept() {
return false; // We never allow this button to close the window.
}
+ChromeViews::View* AboutChromeView::GetContentsView() {
+ return this;
+}
+
////////////////////////////////////////////////////////////////////////////////
// AboutChromeView, GoogleUpdateStatusListener implementation:
@@ -456,7 +459,7 @@ void AboutChromeView::UpdateStatus(GoogleUpdateUpgradeResult result,
l10n_util::GetString(IDS_PRODUCT_NAME),
new_version_available_));
show_success_indicator = true;
- RestartMessageBox::ShowMessageBox(dialog_->GetHWND());
+ RestartMessageBox::ShowMessageBox(window()->GetHWND());
break;
case UPGRADE_ERROR:
UserMetrics::RecordAction(L"UpgradeCheck_Error", profile_);
@@ -484,7 +487,7 @@ void AboutChromeView::UpdateStatus(GoogleUpdateUpgradeResult result,
parent->Layout();
// Check button may have appeared/disappeared. We cannot call this during
- // ViewHierarchyChanged because the |dialog_| pointer hasn't been set yet.
- if (dialog_)
- dialog_->UpdateDialogButtons();
+ // ViewHierarchyChanged because the |window()| pointer hasn't been set yet.
+ if (window())
+ window()->UpdateDialogButtons();
}
diff --git a/chrome/browser/views/about_chrome_view.h b/chrome/browser/views/about_chrome_view.h
index b304218..a46a741 100644
--- a/chrome/browser/views/about_chrome_view.h
+++ b/chrome/browser/views/about_chrome_view.h
@@ -61,8 +61,6 @@ class AboutChromeView : public ChromeViews::View,
// Initialize the controls on the dialog.
void Init();
- void SetDialog(ChromeViews::Window* dialog) { dialog_ = dialog; }
-
// Overridden from ChromeViews::View:
virtual void GetPreferredSize(CSize *out);
virtual void Layout();
@@ -82,6 +80,7 @@ class AboutChromeView : public ChromeViews::View,
virtual bool IsModal() const;
virtual std::wstring GetWindowTitle() const;
virtual bool Accept();
+ virtual ChromeViews::View* GetContentsView();
// Overridden from GoogleUpdateStatusListener:
virtual void OnReportResults(GoogleUpdateUpgradeResult result,
@@ -100,8 +99,6 @@ class AboutChromeView : public ChromeViews::View,
void UpdateStatus(GoogleUpdateUpgradeResult result,
GoogleUpdateErrorCode error_code);
- ChromeViews::Window* dialog_;
-
Profile* profile_;
// UI elements on the dialog.
diff --git a/chrome/browser/views/bookmark_editor_view.cc b/chrome/browser/views/bookmark_editor_view.cc
index e7a834a..da5a92d 100644
--- a/chrome/browser/views/bookmark_editor_view.cc
+++ b/chrome/browser/views/bookmark_editor_view.cc
@@ -79,7 +79,6 @@ BookmarkEditorView::BookmarkEditorView(Profile* profile,
#pragma warning(suppress: 4355) // Okay to pass "this" here.
new_group_button_(
l10n_util::GetString(IDS_BOOMARK_EDITOR_NEW_FOLDER_BUTTON)),
- dialog_(NULL),
url_(url),
title_(title),
running_menu_for_root_(false) {
@@ -122,6 +121,10 @@ bool BookmarkEditorView::AreAcceleratorsEnabled(DialogButton button) {
return !tree_view_.GetEditingNode();
}
+ChromeViews::View* BookmarkEditorView::GetContentsView() {
+ return this;
+}
+
void BookmarkEditorView::Layout() {
// Let the grid layout manager lay out most of the dialog...
GetLayoutManager()->Layout(this);
@@ -205,12 +208,11 @@ bool BookmarkEditorView::IsCommandEnabled(int id) const {
}
void BookmarkEditorView::Show(HWND parent_hwnd) {
- dialog_ = ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(),
- this, this);
+ ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(), this);
UserInputChanged();
if (bb_model_->IsLoaded())
ExpandAndSelect();
- dialog_->Show();
+ window()->Show();
// Select all the text in the name textfield.
title_tf_.SelectAll();
// Give focus to the name textfield.
@@ -218,8 +220,8 @@ void BookmarkEditorView::Show(HWND parent_hwnd) {
}
void BookmarkEditorView::Close() {
- DCHECK(dialog_);
- dialog_->Close();
+ DCHECK(window());
+ window()->Close();
}
void BookmarkEditorView::ShowContextMenu(View* source,
@@ -389,7 +391,7 @@ void BookmarkEditorView::UserInputChanged() {
url_tf_.SetBackgroundColor(kErrorColor);
else
url_tf_.SetDefaultBackgroundColor();
- dialog_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
void BookmarkEditorView::NewGroup() {
diff --git a/chrome/browser/views/bookmark_editor_view.h b/chrome/browser/views/bookmark_editor_view.h
index c12abeb..5a2b9d6 100644
--- a/chrome/browser/views/bookmark_editor_view.h
+++ b/chrome/browser/views/bookmark_editor_view.h
@@ -83,6 +83,7 @@ class BookmarkEditorView : public ChromeViews::View,
virtual std::wstring GetWindowTitle() const;
virtual bool Accept();
virtual bool AreAcceleratorsEnabled(DialogButton button);
+ virtual ChromeViews::View* GetContentsView();
// View methods.
virtual void Layout();
@@ -244,9 +245,6 @@ class BookmarkEditorView : public ChromeViews::View,
// Used for editing the title.
ChromeViews::TextField title_tf_;
- // Dialog we're contained in.
- ChromeViews::Window* dialog_;
-
// URL we were created with.
const GURL url_;
diff --git a/chrome/browser/views/bug_report_view.cc b/chrome/browser/views/bug_report_view.cc
index 2977409..45023e5 100644
--- a/chrome/browser/views/bug_report_view.cc
+++ b/chrome/browser/views/bug_report_view.cc
@@ -154,8 +154,7 @@ void BugReportView::PostCleanup::OnURLFetchComplete(
// This is separate from crash reporting, which is handled by Breakpad.
//
BugReportView::BugReportView(Profile* profile, TabContents* tab)
- : dialog_(NULL),
- include_page_source_checkbox_(NULL),
+ : include_page_source_checkbox_(NULL),
include_page_image_checkbox_(NULL),
profile_(profile),
post_url_(l10n_util::GetString(IDS_BUGREPORT_POST_URL)),
@@ -279,7 +278,7 @@ void BugReportView::ItemChanged(ChromeViews::ComboBox* combo_box,
include_page_image_checkbox_->SetEnabled(!is_phishing_report);
include_page_image_checkbox_->SetIsSelected(!is_phishing_report);
- dialog_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
void BugReportView::ContentsChanged(ChromeViews::TextField* sender,
@@ -340,6 +339,10 @@ bool BugReportView::Accept() {
return true;
}
+ChromeViews::View* BugReportView::GetContentsView() {
+ return this;
+}
+
void BugReportView::SetUrl(const GURL& url) {
page_url_text_->SetText(UTF8ToWide(url.spec()));
}
diff --git a/chrome/browser/views/bug_report_view.h b/chrome/browser/views/bug_report_view.h
index f50e63c..07919d3 100644
--- a/chrome/browser/views/bug_report_view.h
+++ b/chrome/browser/views/bug_report_view.h
@@ -67,7 +67,6 @@ class BugReportView : public ChromeViews::View,
explicit BugReportView(Profile* profile, TabContents* tab);
virtual ~BugReportView();
- void set_dialog(ChromeViews::Window* dialog) { dialog_ = dialog; }
void set_version(const std::wstring& version) { version_ = version; }
// NOTE: set_png_data takes ownership of the vector
void set_png_data(std::vector<unsigned char> *png_data) {
@@ -98,6 +97,7 @@ class BugReportView : public ChromeViews::View,
virtual bool IsModal() const;
virtual std::wstring GetWindowTitle() const;
virtual bool Accept();
+ virtual ChromeViews::View* GetContentsView();
void SetUrl(const GURL& url);
@@ -129,7 +129,6 @@ class BugReportView : public ChromeViews::View,
ChromeViews::CheckBox* include_page_image_checkbox_;
scoped_ptr<BugReportComboBoxModel> bug_type_model_;
- ChromeViews::Window* dialog_;
Profile* profile_;
diff --git a/chrome/browser/views/clear_browsing_data.cc b/chrome/browser/views/clear_browsing_data.cc
index 17341cd..b3721ab 100644
--- a/chrome/browser/views/clear_browsing_data.cc
+++ b/chrome/browser/views/clear_browsing_data.cc
@@ -54,8 +54,7 @@ static const int kExtraMarginForTimePeriodLabel = 3;
// ClearBrowsingDataView, public:
ClearBrowsingDataView::ClearBrowsingDataView(Profile* profile)
- : dialog_(NULL),
- del_history_checkbox_(NULL),
+ : del_history_checkbox_(NULL),
del_downloads_checkbox_(NULL),
del_cache_checkbox_(NULL),
del_cookies_checkbox_(NULL),
@@ -292,6 +291,10 @@ bool ClearBrowsingDataView::Accept() {
return false; // We close the dialog in OnDeletionDone().
}
+ChromeViews::View* ClearBrowsingDataView::GetContentsView() {
+ return this;
+}
+
////////////////////////////////////////////////////////////////////////////////
// ClearBrowsingDataView, ChromeViews::ComboBox::Model implementation:
@@ -319,7 +322,7 @@ std::wstring ClearBrowsingDataView::GetItemAt(ChromeViews::ComboBox* source,
void ClearBrowsingDataView::ButtonPressed(ChromeViews::NativeButton* sender) {
// When no checkbox is checked we should not have the action button enabled.
// This forces the button to evaluate what state they should be in.
- dialog_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
////////////////////////////////////////////////////////////////////////////////
@@ -335,7 +338,7 @@ ChromeViews::CheckBox* ClearBrowsingDataView::AddCheckbox(
}
void ClearBrowsingDataView::UpdateControlEnabledState() {
- dialog_->EnableClose(!delete_in_progress_);
+ window()->EnableClose(!delete_in_progress_);
del_history_checkbox_->SetEnabled(!delete_in_progress_);
del_downloads_checkbox_->SetEnabled(!delete_in_progress_);
@@ -352,7 +355,7 @@ void ClearBrowsingDataView::UpdateControlEnabledState() {
throbber_->Stop();
// Make sure to update the state for OK and Cancel buttons.
- dialog_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
// Convenience method that returns true if the supplied checkbox is selected
@@ -399,5 +402,5 @@ void ClearBrowsingDataView::OnDelete() {
}
void ClearBrowsingDataView::OnBrowsingDataRemoverDone() {
- dialog_->Close();
+ window()->Close();
}
diff --git a/chrome/browser/views/clear_browsing_data.h b/chrome/browser/views/clear_browsing_data.h
index bb41ef5..87cbc91 100644
--- a/chrome/browser/views/clear_browsing_data.h
+++ b/chrome/browser/views/clear_browsing_data.h
@@ -67,8 +67,6 @@ class ClearBrowsingDataView : public ChromeViews::View,
// Initialize the controls on the dialog.
void Init();
- void SetDialog(ChromeViews::Window* dialog) { dialog_ = dialog; }
-
// Overridden from ChromeViews::View:
virtual void GetPreferredSize(CSize *out);
virtual void Layout();
@@ -86,6 +84,7 @@ class ClearBrowsingDataView : public ChromeViews::View,
virtual bool IsModal() const;
virtual std::wstring GetWindowTitle() const;
virtual bool Accept();
+ virtual ChromeViews::View* GetContentsView();
// Overridden from ChromeViews::ComboBox::Model:
virtual int GetItemCount(ChromeViews::ComboBox* source);
@@ -125,8 +124,6 @@ class ClearBrowsingDataView : public ChromeViews::View,
// Used to signal enabled/disabled state for controls in the UI.
bool delete_in_progress_;
- ChromeViews::Window* dialog_;
-
Profile* profile_;
DISALLOW_EVIL_CONSTRUCTORS(ClearBrowsingDataView);
diff --git a/chrome/browser/views/constrained_window_impl.cc b/chrome/browser/views/constrained_window_impl.cc
index 2e7f837..d61e1dc 100644
--- a/chrome/browser/views/constrained_window_impl.cc
+++ b/chrome/browser/views/constrained_window_impl.cc
@@ -449,8 +449,8 @@ void ConstrainedWindowNonClientView::UpdateLocationBar() {
if (ShouldDisplayURLField()) {
std::wstring url_spec;
TabContents* tab = container_->constrained_contents();
- url_spec = gfx::ElideUrl(tab->GetURL(),
- ChromeFont(),
+ url_spec = gfx::ElideUrl(tab->GetURL(),
+ ChromeFont(),
0,
tab->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages));
std::wstring ev_text, ev_tooltip_text;
@@ -727,7 +727,7 @@ void ConstrainedWindowNonClientView::Layout() {
client_bounds_ = CalculateClientAreaBounds(GetWidth(), GetHeight());
if (should_display_url_field) {
location_bar_->SetBounds(client_bounds_.x() - kLocationBarOffset,
- client_bounds_.y() - location_bar_height -
+ client_bounds_.y() - location_bar_height -
kLocationBarSpacing,
client_bounds_.width() + kLocationBarOffset * 2,
location_bar_height);
@@ -914,9 +914,13 @@ void ConstrainedWindowNonClientView::InitClass() {
class ConstrainedTabContentsWindowDelegate
: public ChromeViews::WindowDelegate {
public:
- explicit ConstrainedTabContentsWindowDelegate(
- ConstrainedWindowImpl* window)
- : window_(window) {
+ explicit ConstrainedTabContentsWindowDelegate(TabContents* contents)
+ : contents_(contents),
+ contents_view_(NULL) {
+ }
+
+ void set_contents_view(ChromeViews::View* contents_view) {
+ contents_view_ = contents_view;
}
// ChromeViews::WindowDelegate implementation:
@@ -924,25 +928,21 @@ class ConstrainedTabContentsWindowDelegate
return true;
}
virtual std::wstring GetWindowTitle() const {
- TabContents* constrained_contents = window_->constrained_contents();
- if (constrained_contents)
- return constrained_contents->GetTitle();
-
- return std::wstring();
+ return contents_->GetTitle();
}
virtual bool ShouldShowWindowIcon() const {
return true;
}
virtual SkBitmap GetWindowIcon() {
- TabContents* constrained_contents = window_->constrained_contents();
- if (constrained_contents)
- return constrained_contents->GetFavIcon();
-
- return SkBitmap();
+ return contents_->GetFavIcon();
+ }
+ virtual ChromeViews::View* GetContentsView() {
+ return contents_view_;
}
private:
- ConstrainedWindowImpl* window_;
+ TabContents* contents_;
+ ChromeViews::View* contents_view_;
DISALLOW_EVIL_CONSTRUCTORS(ConstrainedTabContentsWindowDelegate);
};
@@ -955,19 +955,6 @@ class ConstrainedTabContentsWindowDelegate
static const int kPopupRepositionOffset = 5;
static const int kConstrainedWindowEdgePadding = 10;
-ConstrainedWindowImpl::ConstrainedWindowImpl(TabContents* owner)
- : CustomFrameWindow(new ConstrainedWindowNonClientView(this, owner)),
- owner_(owner),
- constrained_contents_(NULL),
- focus_restoration_disabled_(false),
- is_dialog_(false),
- titlebar_visibility_(0.0),
- contents_container_(NULL) {
- set_window_style(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION |
- WS_THICKFRAME | WS_SYSMENU);
- set_focus_on_creation(false);
-}
-
ConstrainedWindowImpl::~ConstrainedWindowImpl() {
}
@@ -1120,6 +1107,7 @@ void ConstrainedWindowImpl::OpenURLFromTab(TabContents* source,
const GURL& url,
WindowOpenDisposition disposition,
PageTransition::Type transition) {
+ // We ignore source right now.
owner_->OpenURL(this, url, disposition, transition);
}
@@ -1165,15 +1153,46 @@ TabContents* ConstrainedWindowImpl::GetConstrainingContents(
return owner_;
}
-void ConstrainedWindowImpl::ToolbarSizeChanged(TabContents* source,
+void ConstrainedWindowImpl::ToolbarSizeChanged(TabContents* source,
bool finished) {
- // We don't control the layout of anything that could be animating,
+ // We don't control the layout of anything that could be animating,
// so do nothing.
}
////////////////////////////////////////////////////////////////////////////////
// ConstrainedWindowImpl, private:
+ConstrainedWindowImpl::ConstrainedWindowImpl(
+ TabContents* owner,
+ ChromeViews::WindowDelegate* window_delegate,
+ TabContents* constrained_contents)
+ : CustomFrameWindow(window_delegate,
+ new ConstrainedWindowNonClientView(this, owner)),
+ contents_window_delegate_(window_delegate),
+ constrained_contents_(constrained_contents),
+ titlebar_visibility_(0.0) {
+ Init(owner);
+}
+
+ConstrainedWindowImpl::ConstrainedWindowImpl(
+ TabContents* owner,
+ ChromeViews::WindowDelegate* window_delegate)
+ : CustomFrameWindow(window_delegate,
+ new ConstrainedWindowNonClientView(this, owner)),
+ constrained_contents_(NULL) {
+ Init(owner);
+}
+
+void ConstrainedWindowImpl::Init(TabContents* owner) {
+ owner_ = owner;
+ focus_restoration_disabled_ = false;
+ is_dialog_ = false;
+ contents_container_ = NULL;
+ set_window_style(WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION |
+ WS_THICKFRAME | WS_SYSMENU);
+ set_focus_on_creation(false);
+}
+
void ConstrainedWindowImpl::ResizeConstrainedTitlebar() {
DCHECK(constrained_contents_)
<< "ResizeConstrainedTitlebar() is only valid for web popups";
@@ -1196,32 +1215,26 @@ void ConstrainedWindowImpl::ResizeConstrainedTitlebar() {
SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW);
}
-void ConstrainedWindowImpl::InitAsDialog(
- const gfx::Rect& initial_bounds,
- ChromeViews::View* contents_view,
- ChromeViews::WindowDelegate* window_delegate) {
+void ConstrainedWindowImpl::InitAsDialog(const gfx::Rect& initial_bounds) {
is_dialog_ = true;
- non_client_view()->set_window_delegate(window_delegate);
- CustomFrameWindow::Init(owner_->GetContainerHWND(), initial_bounds,
- contents_view, window_delegate);
+ non_client_view()->set_window_delegate(window_delegate());
+ CustomFrameWindow::Init(owner_->GetContainerHWND(), initial_bounds);
ActivateConstrainedWindow();
}
void ConstrainedWindowImpl::InitWindowForContents(
- TabContents* constrained_contents) {
+ TabContents* constrained_contents,
+ ConstrainedTabContentsWindowDelegate* delegate) {
constrained_contents_ = constrained_contents;
constrained_contents_->set_delegate(this);
contents_container_ = new ChromeViews::HWNDView;
- contents_window_delegate_.reset(
- new ConstrainedTabContentsWindowDelegate(this));
-
+ delegate->set_contents_view(contents_container_);
non_client_view()->set_window_delegate(contents_window_delegate_.get());
}
void ConstrainedWindowImpl::InitSizeForContents(
const gfx::Rect& initial_bounds) {
- CustomFrameWindow::Init(owner_->GetContainerHWND(), initial_bounds,
- contents_container_, contents_window_delegate_.get());
+ CustomFrameWindow::Init(owner_->GetContainerHWND(), initial_bounds);
contents_container_->Attach(constrained_contents_->GetContainerHWND());
constrained_contents_->SizeContents(
@@ -1412,7 +1425,7 @@ void ConstrainedWindow::GenerateInitialBounds(
// behvaiors below interact.
std::wstring app_name;
- if (parent->delegate() && parent->delegate()->IsApplication() &&
+ if (parent->delegate() && parent->delegate()->IsApplication() &&
parent->AsWebContents() && parent->AsWebContents()->web_app()) {
app_name = parent->AsWebContents()->web_app()->name();
}
@@ -1460,8 +1473,9 @@ ConstrainedWindow* ConstrainedWindow::CreateConstrainedDialog(
const gfx::Rect& initial_bounds,
ChromeViews::View* contents_view,
ChromeViews::WindowDelegate* window_delegate) {
- ConstrainedWindowImpl* window = new ConstrainedWindowImpl(parent);
- window->InitAsDialog(initial_bounds, contents_view, window_delegate);
+ ConstrainedWindowImpl* window = new ConstrainedWindowImpl(parent,
+ window_delegate);
+ window->InitAsDialog(initial_bounds);
return window;
}
@@ -1470,9 +1484,11 @@ ConstrainedWindow* ConstrainedWindow::CreateConstrainedPopup(
TabContents* parent,
const gfx::Rect& initial_bounds,
TabContents* constrained_contents) {
+ ConstrainedTabContentsWindowDelegate* d =
+ new ConstrainedTabContentsWindowDelegate(constrained_contents);
ConstrainedWindowImpl* window =
- new ConstrainedWindowImpl(parent);
- window->InitWindowForContents(constrained_contents);
+ new ConstrainedWindowImpl(parent, d, constrained_contents);
+ window->InitWindowForContents(constrained_contents, d);
gfx::Rect window_bounds;
if (initial_bounds.width() == 0 || initial_bounds.height() == 0) {
diff --git a/chrome/browser/views/constrained_window_impl.h b/chrome/browser/views/constrained_window_impl.h
index f3916ab..9e8c0b3 100644
--- a/chrome/browser/views/constrained_window_impl.h
+++ b/chrome/browser/views/constrained_window_impl.h
@@ -73,11 +73,13 @@ class ConstrainedWindowImpl : public ConstrainedWindow,
virtual void UpdateWindowTitle();
virtual const gfx::Rect& GetCurrentBounds() const;
- // Overridden from TabContentsDelegate:
+ // Overridden from PageNavigator (TabContentsDelegate's base interface):
virtual void OpenURLFromTab(TabContents* source,
const GURL& url,
WindowOpenDisposition disposition,
PageTransition::Type transition);
+
+ // Overridden from TabContentsDelegate:
virtual void NavigationStateChanged(const TabContents* source,
unsigned changed_flags);
virtual void ReplaceContents(TabContents* source,
@@ -123,7 +125,12 @@ class ConstrainedWindowImpl : public ConstrainedWindow,
private:
// Use the static factory methods on ConstrainedWindow to construct a
// ConstrainedWindow.
- ConstrainedWindowImpl(TabContents* owner);
+ ConstrainedWindowImpl(TabContents* owner,
+ ChromeViews::WindowDelegate* window_delegate,
+ TabContents* constrained_contents);
+ ConstrainedWindowImpl(TabContents* owner,
+ ChromeViews::WindowDelegate* window_delegate);
+ void Init(TabContents* owner);
friend class ConstrainedWindow;
@@ -136,9 +143,7 @@ class ConstrainedWindowImpl : public ConstrainedWindow,
// Initialize the Constrained Window as a Constrained Dialog containing a
// ChromeViews::View client area.
- void InitAsDialog(const gfx::Rect& initial_bounds,
- ChromeViews::View* contents_view,
- ChromeViews::WindowDelegate* window_delegate);
+ void InitAsDialog(const gfx::Rect& initial_bounds);
// Builds the underlying HWND and window delegates for a newly
// created popup window.
@@ -148,7 +153,8 @@ class ConstrainedWindowImpl : public ConstrainedWindow,
// so that when we query for desired size, we get accurate data. If
// we didn't do this, windows will initialize to being smaller then
// the desired content size plus room for browser chrome.
- void InitWindowForContents(TabContents* constrained_contents);
+ void InitWindowForContents(TabContents* constrained_contents,
+ ConstrainedTabContentsWindowDelegate* delegate);
// Sets the initial bounds for a newly created popup window.
//
@@ -183,7 +189,7 @@ class ConstrainedWindowImpl : public ConstrainedWindow,
// A default ChromeViews::WindowDelegate implementation for this window when
// a TabContents is being constrained. (For the Constrained Dialog case, the
// caller is required to provide the WindowDelegate).
- scoped_ptr<ConstrainedTabContentsWindowDelegate> contents_window_delegate_;
+ scoped_ptr<ChromeViews::WindowDelegate> contents_window_delegate_;
// We keep a reference on the HWNDView so we can properly detach the tab
// contents when detaching.
diff --git a/chrome/browser/views/edit_keyword_controller.cc b/chrome/browser/views/edit_keyword_controller.cc
index 413f91c..8fe9b00 100644
--- a/chrome/browser/views/edit_keyword_controller.cc
+++ b/chrome/browser/views/edit_keyword_controller.cc
@@ -78,13 +78,10 @@ EditKeywordController::EditKeywordController(
void EditKeywordController::Show() {
// Window interprets an empty rectangle as needing to query the content for
// the size as well as centering relative to the parent.
- window_ = ChromeViews::Window::CreateChromeWindow(
- ::IsWindow(parent_) ? parent_ : NULL,
- gfx::Rect(),
- view_,
- this);
- window_->Show();
- window_->UpdateDialogButtons();
+ ChromeViews::Window::CreateChromeWindow(::IsWindow(parent_) ? parent_ : NULL,
+ gfx::Rect(), this);
+ window()->Show();
+ window()->UpdateDialogButtons();
title_tf_->SelectAll();
title_tf_->RequestFocus();
}
@@ -180,9 +177,13 @@ bool EditKeywordController::Accept() {
return true;
}
+ChromeViews::View* EditKeywordController::GetContentsView() {
+ return view_;
+}
+
void EditKeywordController::ContentsChanged(TextField* sender,
const std::wstring& new_contents) {
- window_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
UpdateImageViews();
}
diff --git a/chrome/browser/views/edit_keyword_controller.h b/chrome/browser/views/edit_keyword_controller.h
index c7e362e..1050d99 100644
--- a/chrome/browser/views/edit_keyword_controller.h
+++ b/chrome/browser/views/edit_keyword_controller.h
@@ -74,6 +74,7 @@ class EditKeywordController : public ChromeViews::TextField::Controller,
virtual void WindowClosing();
virtual bool Cancel();
virtual bool Accept();
+ virtual ChromeViews::View* GetContentsView();
// ChromeViews::TextField::Controller overrides. Updates whether the user can
// accept the dialog as well as updating image views showing whether value is
@@ -142,9 +143,6 @@ class EditKeywordController : public ChromeViews::TextField::Controller,
// Profile whose TemplateURLModel we're modifying.
Profile* profile_;
- // Container for displaying the contents.
- ChromeViews::Window* window_;
-
// Text fields.
ChromeViews::TextField* title_tf_;
ChromeViews::TextField* keyword_tf_;
diff --git a/chrome/browser/views/first_run_customize_view.cc b/chrome/browser/views/first_run_customize_view.cc
index 6b8263a..88c824c 100644
--- a/chrome/browser/views/first_run_customize_view.cc
+++ b/chrome/browser/views/first_run_customize_view.cc
@@ -48,7 +48,8 @@
#include "generated_resources.h"
FirstRunCustomizeView::FirstRunCustomizeView(Profile* profile,
- ImporterHost* importer_host)
+ ImporterHost* importer_host,
+ CustomizeViewObserver* observer)
: FirstRunViewBase(profile),
main_label_(NULL),
import_cbox_(NULL),
@@ -57,7 +58,7 @@ FirstRunCustomizeView::FirstRunCustomizeView(Profile* profile,
shortcuts_label_(NULL),
desktop_shortcut_cbox_(NULL),
quick_shortcut_cbox_(NULL),
- customize_observer_(NULL) {
+ customize_observer_(observer) {
importer_host_ = importer_host;
DCHECK(importer_host_);
SetupControls();
@@ -202,6 +203,10 @@ std::wstring FirstRunCustomizeView::GetWindowTitle() const {
return l10n_util::GetString(IDS_FR_CUSTOMIZE_DLG_TITLE);
}
+ChromeViews::View* FirstRunCustomizeView::GetContentsView() {
+ return this;
+}
+
bool FirstRunCustomizeView::Accept() {
if (!IsDialogButtonEnabled(DIALOGBUTTON_OK))
return false;
@@ -226,7 +231,7 @@ bool FirstRunCustomizeView::Accept() {
} else {
int browser_selected = import_from_combo_->GetSelectedItem();
FirstRun::ImportSettings(profile_, browser_selected,
- GetDefaultImportItems(), dialog_->GetHWND());
+ GetDefaultImportItems(), window()->GetHWND());
}
if (default_browser_cbox_->IsSelected()) {
UserMetrics::RecordAction(L"FirstRunCustom_Do_DefBrowser", profile_);
diff --git a/chrome/browser/views/first_run_customize_view.h b/chrome/browser/views/first_run_customize_view.h
index 4a22cb6..69cf46e 100644
--- a/chrome/browser/views/first_run_customize_view.h
+++ b/chrome/browser/views/first_run_customize_view.h
@@ -63,16 +63,11 @@ class FirstRunCustomizeView : public FirstRunViewBase,
virtual void CustomizeCanceled() = 0;
};
- FirstRunCustomizeView(Profile* profile, ImporterHost* importer_host);
+ FirstRunCustomizeView(Profile* profile,
+ ImporterHost* importer_host,
+ CustomizeViewObserver* observer);
virtual ~FirstRunCustomizeView();
- void set_dialog(ChromeViews::Window* dialog) { dialog_ = dialog; }
-
- // Sets the object that receives UserAccept and UserCancel notifications.
- void set_observer(CustomizeViewObserver* observer) {
- customize_observer_ = observer;
- };
-
// Overridden from ChromeViews::View.
virtual void GetPreferredSize(CSize *out);
virtual void Layout();
@@ -90,13 +85,11 @@ class FirstRunCustomizeView : public FirstRunViewBase,
// Overridden from ChromeViews::WindowDelegate.
virtual std::wstring GetWindowTitle() const;
-
+ virtual ChromeViews::View* GetContentsView();
// Yes, we're modal.
// NOTE: if you change this you'll need to make sure it isn't possible to
// close the window while importing.
- virtual bool IsModal() const {
- return true;
- }
+ virtual bool IsModal() const { return true; }
private:
// Initializes the controls on the dialog.
diff --git a/chrome/browser/views/first_run_view.cc b/chrome/browser/views/first_run_view.cc
index 1beed44..d230efa 100644
--- a/chrome/browser/views/first_run_view.cc
+++ b/chrome/browser/views/first_run_view.cc
@@ -180,16 +180,10 @@ std::wstring FirstRunView::GetDialogButtonLabel(DialogButton button) const {
void FirstRunView::OpenCustomizeDialog() {
// The customize dialog now owns the importer host object.
- FirstRunCustomizeView* customize_view =
- new FirstRunCustomizeView(profile_, importer_host_);
-
- ChromeViews::Window* customize_dialog =
- ChromeViews::Window::CreateChromeWindow(dialog_->GetHWND(),
- gfx::Rect(), customize_view,
- customize_view);
- customize_dialog->Show();
- customize_view->set_dialog(customize_dialog);
- customize_view->set_observer(this);
+ ChromeViews::Window::CreateChromeWindow(
+ window()->GetHWND(),
+ gfx::Rect(),
+ new FirstRunCustomizeView(profile_, importer_host_, this))->Show();
}
void FirstRunView::LinkActivated(ChromeViews::Link* source, int event_flags) {
@@ -200,6 +194,10 @@ std::wstring FirstRunView::GetWindowTitle() const {
return l10n_util::GetString(IDS_FIRSTRUN_DLG_TITLE);
}
+ChromeViews::View* FirstRunView::GetContentsView() {
+ return this;
+}
+
bool FirstRunView::Accept() {
if (!IsDialogButtonEnabled(DIALOGBUTTON_OK))
return false;
@@ -210,7 +208,7 @@ bool FirstRunView::Accept() {
CreateQuickLaunchShortcut();
// Index 0 is the default browser.
FirstRun::ImportSettings(profile_, 0, GetDefaultImportItems(),
- dialog_->GetHWND());
+ window()->GetHWND());
UserMetrics::RecordAction(L"FirstRunDef_Accept", profile_);
return true;
@@ -224,7 +222,7 @@ bool FirstRunView::Cancel() {
// Notification from the customize dialog that the user accepted. Since all
// the work is done there we got nothing else to do.
void FirstRunView::CustomizeAccepted() {
- dialog_->Close();
+ window()->Close();
}
// Notification from the customize dialog that the user cancelled.
diff --git a/chrome/browser/views/first_run_view.h b/chrome/browser/views/first_run_view.h
index 47e3645..728ac96 100644
--- a/chrome/browser/views/first_run_view.h
+++ b/chrome/browser/views/first_run_view.h
@@ -66,6 +66,7 @@ class FirstRunView : public FirstRunViewBase,
// Overridden from ChromeViews::WindowDelegate:
virtual std::wstring GetWindowTitle() const;
+ virtual ChromeViews::View* GetContentsView();
// Overridden from ChromeViews::LinkActivated:
virtual void LinkActivated(ChromeViews::Link* source, int event_flags);
diff --git a/chrome/browser/views/first_run_view_base.cc b/chrome/browser/views/first_run_view_base.cc
index b9c04fe..4ee8aceb 100644
--- a/chrome/browser/views/first_run_view_base.cc
+++ b/chrome/browser/views/first_run_view_base.cc
@@ -54,8 +54,7 @@
#include "generated_resources.h"
FirstRunViewBase::FirstRunViewBase(Profile* profile)
- : dialog_(NULL),
- preferred_width_(0),
+ : preferred_width_(0),
background_image_(NULL),
separator_1_(NULL),
separator_2_(NULL),
@@ -148,9 +147,7 @@ void FirstRunViewBase::Layout() {
background_image_->GetHeight() - 2;
separator_1_->GetPreferredSize(&pref_size);
- separator_1_->SetBounds(0, next_v_space,
- canvas.cx + 1,
- pref_size.cy);
+ separator_1_->SetBounds(0 , next_v_space, canvas.cx + 1, pref_size.cy);
next_v_space = canvas.cy - kPanelSubVerticalSpacing;
separator_2_->GetPreferredSize(&pref_size);
@@ -182,7 +179,7 @@ int FirstRunViewBase::GetDefaultImportItems() const {
};
void FirstRunViewBase::DisableButtons() {
- dialog_->EnableClose(false);
+ window()->EnableClose(false);
ChromeViews::ClientView* cv =
reinterpret_cast<ChromeViews::ClientView*>(GetParent());
if (cv) {
diff --git a/chrome/browser/views/first_run_view_base.h b/chrome/browser/views/first_run_view_base.h
index 9266ce8..e18fd7b 100644
--- a/chrome/browser/views/first_run_view_base.h
+++ b/chrome/browser/views/first_run_view_base.h
@@ -54,9 +54,6 @@ class FirstRunViewBase : public ChromeViews::View,
explicit FirstRunViewBase(Profile* profile);
virtual ~FirstRunViewBase();
- // Sets the dialog window that host the view.
- void set_dialog(ChromeViews::Window* dialog) { dialog_ = dialog; }
-
// Overridden from ChromeViews::View.
virtual void Layout();
@@ -78,7 +75,7 @@ class FirstRunViewBase : public ChromeViews::View,
// Modifies the chrome configuration so that the first-run dialogs are not
// shown again.
bool FirstRunComplete();
-
+
// Disables the standard buttons of the dialog. Useful when importing.
void DisableButtons();
// Computes a tight dialog width given a contained UI element.
@@ -99,7 +96,6 @@ class FirstRunViewBase : public ChromeViews::View,
scoped_refptr<ImporterHost> importer_host_;
Profile* profile_;
- ChromeViews::Window* dialog_;
private:
// Initializes the controls on the dialog.
diff --git a/chrome/browser/views/html_dialog_view.cc b/chrome/browser/views/html_dialog_view.cc
index 1be835f..cdf48e8 100644
--- a/chrome/browser/views/html_dialog_view.cc
+++ b/chrome/browser/views/html_dialog_view.cc
@@ -39,7 +39,6 @@ HtmlDialogView::HtmlDialogView(Browser* parent_browser,
Profile* profile,
HtmlDialogContentsDelegate* delegate)
: DOMView(delegate->GetDialogContentURL()),
- dialog_(NULL),
parent_browser_(parent_browser),
profile_(profile),
delegate_(delegate) {
@@ -80,6 +79,10 @@ void HtmlDialogView::WindowClosing() {
OnDialogClosed("");
}
+ChromeViews::View* HtmlDialogView::GetContentsView() {
+ return this;
+}
+
////////////////////////////////////////////////////////////////////////////////
// HtmlDialogContentsDelegate implementation:
@@ -98,7 +101,7 @@ std::string HtmlDialogView::GetDialogArgs() const {
void HtmlDialogView::OnDialogClosed(const std::string& json_retval) {
delegate_->OnDialogClosed(json_retval);
delegate_ = NULL; // We will not communicate further with the delegate.
- dialog_->Close();
+ window()->Close();
}
////////////////////////////////////////////////////////////////////////////////
@@ -155,14 +158,14 @@ void HtmlDialogView::MoveContents(TabContents* source, const gfx::Rect& pos) {
// Determine the size the window containing the dialog at its requested size.
gfx::Size window_size =
- dialog_->CalculateWindowSizeForClientSize(pos.size());
+ window()->CalculateWindowSizeForClientSize(pos.size());
// Actually size the window.
CRect vc_bounds;
GetViewContainer()->GetBounds(&vc_bounds, true);
gfx::Rect bounds(vc_bounds.left, vc_bounds.top, window_size.width(),
window_size.height());
- dialog_->SetBounds(bounds);
+ window()->SetBounds(bounds);
}
bool HtmlDialogView::IsPopup(TabContents* source) {
@@ -187,9 +190,7 @@ void HtmlDialogView::UpdateTargetURL(TabContents* source, const GURL& url) {
////////////////////////////////////////////////////////////////////////////////
// HtmlDialogView:
-void HtmlDialogView::InitDialog(ChromeViews::Window* dialog) {
- dialog_ = dialog;
-
+void HtmlDialogView::InitDialog() {
// Now Init the DOMView. This view runs in its own process to render the html.
DOMView::Init(profile_, NULL);
diff --git a/chrome/browser/views/html_dialog_view.h b/chrome/browser/views/html_dialog_view.h
index 54f8f15..a07e5e3 100644
--- a/chrome/browser/views/html_dialog_view.h
+++ b/chrome/browser/views/html_dialog_view.h
@@ -60,7 +60,7 @@ class HtmlDialogView
virtual ~HtmlDialogView();
// Initializes the contents of the dialog (the DOMView and the callbacks).
- void InitDialog(ChromeViews::Window* dialog);
+ void InitDialog();
// Overridden from ChromeViews::View:
virtual void GetPreferredSize(CSize *out);
@@ -70,6 +70,7 @@ class HtmlDialogView
virtual bool IsModal() const;
virtual std::wstring GetWindowTitle() const;
virtual void WindowClosing();
+ virtual ChromeViews::View* GetContentsView();
// Overridden from HtmlDialogContentsDelegate:
virtual GURL GetDialogContentURL() const;
@@ -101,9 +102,6 @@ class HtmlDialogView
virtual void UpdateTargetURL(TabContents* source, const GURL& url);
private:
- // The dialog this view is displayed in.
- ChromeViews::Window* dialog_;
-
// The Browser object which created this html dialog; we send all
// window opening/navigations to this object.
Browser* parent_browser_;
diff --git a/chrome/browser/views/hung_renderer_view.cc b/chrome/browser/views/hung_renderer_view.cc
index 645c6df..2434118 100644
--- a/chrome/browser/views/hung_renderer_view.cc
+++ b/chrome/browser/views/hung_renderer_view.cc
@@ -140,8 +140,6 @@ class HungRendererWarningView : public ChromeViews::View,
void ShowForWebContents(WebContents* contents);
void EndForWebContents(WebContents* contents);
- void set_window(ChromeViews::Window* window) { window_ = window; }
-
// ChromeViews::WindowDelegate overrides:
virtual std::wstring GetWindowTitle() const;
virtual void WindowClosing();
@@ -150,7 +148,8 @@ class HungRendererWarningView : public ChromeViews::View,
ChromeViews::DialogDelegate::DialogButton button) const;
virtual ChromeViews::View* GetExtraView();
virtual bool Accept(bool window_closing);
-
+ virtual ChromeViews::View* GetContentsView();
+
// ChromeViews::NativeButton::Listener overrides:
virtual void ButtonPressed(ChromeViews::NativeButton* sender);
@@ -193,9 +192,6 @@ class HungRendererWarningView : public ChromeViews::View,
};
ButtonContainer* kill_button_container_;
- // The Window that contains this view.
- ChromeViews::Window* window_;
-
// The model that provides the contents of the table that shows a list of
// pages affected by the hang.
scoped_ptr<HungPagesTableModel> hung_pages_table_model_;
@@ -233,7 +229,6 @@ HungRendererWarningView::HungRendererWarningView()
hung_pages_table_(NULL),
kill_button_(NULL),
kill_button_container_(NULL),
- window_(NULL),
contents_(NULL),
initialized_(false) {
InitClass();
@@ -244,7 +239,7 @@ HungRendererWarningView::~HungRendererWarningView() {
}
void HungRendererWarningView::ShowForWebContents(WebContents* contents) {
- DCHECK(contents && window_);
+ DCHECK(contents && window());
contents_ = contents;
// Don't show the warning unless the foreground window is the frame, or this
@@ -253,13 +248,13 @@ void HungRendererWarningView::ShowForWebContents(WebContents* contents) {
HWND frame_hwnd = GetAncestor(contents->GetContainerHWND(), GA_ROOT);
HWND foreground_window = GetForegroundWindow();
if (foreground_window != frame_hwnd &&
- foreground_window != window_->GetHWND()) {
+ foreground_window != window()->GetHWND()) {
return;
}
- if (!window_->IsActive()) {
+ if (!window()->IsActive()) {
gfx::Rect bounds = GetDisplayBounds(contents);
- window_->SetBounds(bounds, frame_hwnd);
+ window()->SetBounds(bounds, frame_hwnd);
// We only do this if the window isn't active (i.e. hasn't been shown yet,
// or is currently shown but deactivated for another WebContents). This is
@@ -268,14 +263,14 @@ void HungRendererWarningView::ShowForWebContents(WebContents* contents) {
// the list of hung pages for a potentially unrelated renderer while this
// one is showing.
hung_pages_table_model_->InitForWebContents(contents);
- window_->Show();
+ window()->Show();
}
}
void HungRendererWarningView::EndForWebContents(WebContents* contents) {
DCHECK(contents);
if (contents_ && contents_->process() == contents->process()) {
- window_->Close();
+ window()->Close();
// Since we're closing, we no longer need this WebContents.
contents_ = NULL;
}
@@ -326,6 +321,13 @@ bool HungRendererWarningView::Accept(bool window_closing) {
return true;
}
+ChromeViews::View* HungRendererWarningView::GetContentsView() {
+ return this;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// HungRendererWarningView, ChromeViews::NativeButton::Listener implementation:
+
void HungRendererWarningView::ButtonPressed(
ChromeViews::NativeButton* sender) {
if (sender == kill_button_) {
@@ -401,7 +403,7 @@ void HungRendererWarningView::CreateKillButtonView() {
kill_button_->SetListener(this);
kill_button_container_ = new ButtonContainer;
-
+
using ChromeViews::GridLayout;
using ChromeViews::ColumnSet;
@@ -426,7 +428,7 @@ gfx::Rect HungRendererWarningView::GetDisplayBounds(
GetWindowRect(contents_hwnd, &contents_bounds);
CRect window_bounds;
- window_->GetBounds(&window_bounds, true);
+ window()->GetBounds(&window_bounds, true);
int window_x = contents_bounds.left +
(contents_bounds.Width() - window_bounds.Width()) / 2;
@@ -453,9 +455,7 @@ HungRendererWarningView* HungRendererWarning::instance_ = NULL;
static HungRendererWarningView* CreateHungRendererWarningView() {
HungRendererWarningView* cv = new HungRendererWarningView;
- ChromeViews::Window* window =
- ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), cv, cv);
- cv->set_window(window);
+ ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), cv);
return cv;
}
diff --git a/chrome/browser/views/importer_lock_view.cc b/chrome/browser/views/importer_lock_view.cc
index 9e4b00e..c48df4c 100644
--- a/chrome/browser/views/importer_lock_view.cc
+++ b/chrome/browser/views/importer_lock_view.cc
@@ -44,8 +44,7 @@ static const int kDefaultWindowWidth = 320;
static const int kDefaultWindowHeight = 100;
ImporterLockView::ImporterLockView(ImporterHost* host)
- : dialog_(NULL),
- description_label_(NULL),
+ : description_label_(NULL),
importer_host_(host) {
description_label_ = new ChromeViews::Label(
l10n_util::GetString(IDS_IMPORTER_LOCK_TEXT));
@@ -97,3 +96,7 @@ bool ImporterLockView::Cancel() {
importer_host_, &ImporterHost::OnLockViewEnd, false));
return true;
}
+
+ChromeViews::View* ImporterLockView::GetContentsView() {
+ return this;
+}
diff --git a/chrome/browser/views/importer_lock_view.h b/chrome/browser/views/importer_lock_view.h
index 876560a..4714656 100644
--- a/chrome/browser/views/importer_lock_view.h
+++ b/chrome/browser/views/importer_lock_view.h
@@ -50,10 +50,6 @@ class ImporterLockView : public ChromeViews::View,
explicit ImporterLockView(ImporterHost* host);
virtual ~ImporterLockView();
- void set_dialog(ChromeViews::Window* dialog) {
- dialog_ = dialog;
- }
-
// Overridden from ChromeViews::View.
virtual void GetPreferredSize(CSize *out);
virtual void Layout();
@@ -64,12 +60,11 @@ class ImporterLockView : public ChromeViews::View,
virtual std::wstring GetWindowTitle() const;
virtual bool Accept();
virtual bool Cancel();
+ virtual ChromeViews::View* GetContentsView();
private:
ChromeViews::Label* description_label_;
- ChromeViews::Window* dialog_;
-
ImporterHost* importer_host_;
DISALLOW_EVIL_CONSTRUCTORS(ImporterLockView);
diff --git a/chrome/browser/views/importer_view.cc b/chrome/browser/views/importer_view.cc
index bd71637..cd875ea 100644
--- a/chrome/browser/views/importer_view.cc
+++ b/chrome/browser/views/importer_view.cc
@@ -44,8 +44,7 @@ using ChromeViews::ColumnSet;
using ChromeViews::GridLayout;
ImporterView::ImporterView(Profile* profile)
- : dialog_(NULL),
- import_from_label_(NULL),
+ : import_from_label_(NULL),
profile_combobox_(NULL),
import_items_label_(NULL),
history_checkbox_(NULL),
@@ -169,6 +168,10 @@ bool ImporterView::Accept() {
return false;
}
+ChromeViews::View* ImporterView::GetContentsView() {
+ return this;
+}
+
int ImporterView::GetItemCount(ChromeViews::ComboBox* source) {
DCHECK(source == profile_combobox_);
DCHECK(importer_host_.get());
@@ -188,7 +191,7 @@ void ImporterView::ImportCanceled() {
void ImporterView::ImportComplete() {
// Now close this window since the import completed or was canceled.
- dialog_->Close();
+ window()->Close();
}
ChromeViews::CheckBox* ImporterView::InitCheckbox(
diff --git a/chrome/browser/views/importer_view.h b/chrome/browser/views/importer_view.h
index fe9ab11..cbfd2df 100644
--- a/chrome/browser/views/importer_view.h
+++ b/chrome/browser/views/importer_view.h
@@ -58,8 +58,6 @@ class ImporterView : public ChromeViews::View,
explicit ImporterView(Profile* profile);
virtual ~ImporterView();
- void set_dialog(ChromeViews::Window* dialog) { dialog_ = dialog; }
-
// Overridden from ChromeViews::View.
virtual void GetPreferredSize(CSize *out);
virtual void Layout();
@@ -69,6 +67,7 @@ class ImporterView : public ChromeViews::View,
virtual bool IsModal() const;
virtual std::wstring GetWindowTitle() const;
virtual bool Accept();
+ virtual ChromeViews::View* GetContentsView();
// Overridden from ChromeViews::ComboBox::Model.
virtual int GetItemCount(ChromeViews::ComboBox* source);
@@ -93,8 +92,6 @@ class ImporterView : public ChromeViews::View,
ChromeViews::CheckBox* passwords_checkbox_;
ChromeViews::CheckBox* search_engines_checkbox_;
- ChromeViews::Window* dialog_;
-
scoped_refptr<ImporterHost> importer_host_;
Profile* profile_;
diff --git a/chrome/browser/views/importing_progress_view.cc b/chrome/browser/views/importing_progress_view.cc
index aa99455..60953b3 100644
--- a/chrome/browser/views/importing_progress_view.cc
+++ b/chrome/browser/views/importing_progress_view.cc
@@ -63,7 +63,6 @@ ImportingProgressView::ImportingProgressView(const std::wstring& source_name,
l10n_util::GetString(IDS_IMPORT_PROGRESS_STATUS_HISTORY))),
label_cookies_(new ChromeViews::Label(
l10n_util::GetString(IDS_IMPORT_PROGRESS_STATUS_COOKIES))),
- window_(NULL),
parent_window_(parent_window),
coordinator_(coordinator),
import_observer_(observer),
@@ -167,7 +166,7 @@ void ImportingProgressView::ImportEnded() {
// In every case, we need to close the UI now.
importing_ = false;
coordinator_->SetObserver(NULL);
- window_->Close();
+ window()->Close();
if (import_observer_)
import_observer_->ImportComplete();
}
@@ -220,6 +219,10 @@ bool ImportingProgressView::Cancel() {
return false;
}
+ChromeViews::View* ImportingProgressView::GetContentsView() {
+ return this;
+}
+
////////////////////////////////////////////////////////////////////////////////
// ImportingProgressView, private:
@@ -296,10 +299,8 @@ void StartImportingWithUI(HWND parent_window,
DCHECK(items != 0);
ImportingProgressView* v = new ImportingProgressView(
source_profile.description, items, coordinator, observer, parent_window);
- ChromeViews::Window* window = ChromeViews::Window::CreateChromeWindow(
- parent_window, gfx::Rect(), v, v);
- v->set_window(window);
- window->Show();
+ ChromeViews::Window::CreateChromeWindow(parent_window, gfx::Rect(),
+ v)->Show();
coordinator->StartImportSettings(source_profile, items,
new ProfileWriter(target_profile),
first_run);
diff --git a/chrome/browser/views/importing_progress_view.h b/chrome/browser/views/importing_progress_view.h
index c3a560d..643868f 100644
--- a/chrome/browser/views/importing_progress_view.h
+++ b/chrome/browser/views/importing_progress_view.h
@@ -51,8 +51,6 @@ class ImportingProgressView : public ChromeViews::View,
HWND parent_window);
virtual ~ImportingProgressView();
- void set_window(ChromeViews::Window* window) { window_ = window; }
-
protected:
// Overridden from ImporterHost::Observer:
virtual void ImportItemStarted(ImportItem item);
@@ -66,6 +64,7 @@ class ImportingProgressView : public ChromeViews::View,
virtual bool IsModal() const;
virtual std::wstring GetWindowTitle() const;
virtual bool Cancel();
+ virtual ChromeViews::View* GetContentsView();
// Overridden from ChromeViews::View:
virtual void GetPreferredSize(CSize *out);
@@ -90,9 +89,6 @@ class ImportingProgressView : public ChromeViews::View,
scoped_ptr<ChromeViews::Label> label_history_;
scoped_ptr<ChromeViews::Label> label_cookies_;
- // The window that contains us.
- ChromeViews::Window* window_;
-
// The native window that we are parented to. Can be NULL.
HWND parent_window_;
diff --git a/chrome/browser/views/input_window.cc b/chrome/browser/views/input_window.cc
index 058e29d..f4c560e 100644
--- a/chrome/browser/views/input_window.cc
+++ b/chrome/browser/views/input_window.cc
@@ -51,13 +51,10 @@ class ContentView : public ChromeViews::View,
public:
explicit ContentView(InputWindowDelegate* delegate)
: delegate_(delegate),
- window_(NULL),
focus_grabber_factory_(this) {
DCHECK(delegate_);
}
- void set_window(ChromeViews::Window* window) { window_ = window; }
-
// ChromeViews::DialogDelegate overrides:
virtual bool IsDialogButtonEnabled(DialogButton button) const;
virtual bool Accept();
@@ -65,6 +62,7 @@ class ContentView : public ChromeViews::View,
virtual void WindowClosing();
virtual std::wstring GetWindowTitle() const;
virtual bool IsModal() const { return true; }
+ virtual ChromeViews::View* GetContentsView();
// ChromeViews::TextField::Controller overrides:
virtual void ContentsChanged(ChromeViews::TextField* sender,
@@ -91,9 +89,6 @@ class ContentView : public ChromeViews::View,
// caller.
InputWindowDelegate* delegate_;
- // The Window that owns this view.
- ChromeViews::Window* window_;
-
// Helps us set focus to the first TextField in the window.
ScopedRunnableMethodFactory<ContentView> focus_grabber_factory_;
@@ -127,12 +122,16 @@ std::wstring ContentView::GetWindowTitle() const {
return delegate_->GetWindowTitle();
}
+ChromeViews::View* ContentView::GetContentsView() {
+ return this;
+}
+
///////////////////////////////////////////////////////////////////////////////
// ContentView, ChromeViews::TextField::Controller implementation:
void ContentView::ContentsChanged(ChromeViews::TextField* sender,
const std::wstring& new_contents) {
- window_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
///////////////////////////////////////////////////////////////////////////////
@@ -185,10 +184,9 @@ void ContentView::FocusFirstFocusableControl() {
ChromeViews::Window* CreateInputWindow(HWND parent_hwnd,
InputWindowDelegate* delegate) {
- ContentView* cv = new ContentView(delegate);
- ChromeViews::Window* window = ChromeViews::Window::CreateChromeWindow(
- parent_hwnd, gfx::Rect(), cv, cv);
- cv->set_window(window);
+ ChromeViews::Window* window =
+ ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(),
+ new ContentView(delegate));
window->UpdateDialogButtons();
return window;
}
diff --git a/chrome/browser/views/keyword_editor_view.cc b/chrome/browser/views/keyword_editor_view.cc
index 04acd38..799d2e2 100644
--- a/chrome/browser/views/keyword_editor_view.cc
+++ b/chrome/browser/views/keyword_editor_view.cc
@@ -362,7 +362,7 @@ void KeywordEditorView::Show(Profile* profile) {
// Initialize the UI. By passing in an empty rect KeywordEditorView is
// queried for its preferred size.
open_window = ChromeViews::Window::CreateChromeWindow(
- NULL, gfx::Rect(), keyword_editor, keyword_editor);
+ NULL, gfx::Rect(), keyword_editor);
open_window->Show();
}
@@ -480,6 +480,10 @@ bool KeywordEditorView::Cancel() {
return true;
}
+ChromeViews::View* KeywordEditorView::GetContentsView() {
+ return this;
+}
+
void KeywordEditorView::Init() {
DCHECK(!table_model_.get());
diff --git a/chrome/browser/views/keyword_editor_view.h b/chrome/browser/views/keyword_editor_view.h
index 3512648..4d9fa3e 100644
--- a/chrome/browser/views/keyword_editor_view.h
+++ b/chrome/browser/views/keyword_editor_view.h
@@ -178,6 +178,7 @@ class KeywordEditorView : public ChromeViews::View,
virtual int GetDialogButtons() const;
virtual bool Accept();
virtual bool Cancel();
+ virtual ChromeViews::View* GetContentsView();
// Returns the TemplateURLModel we're using.
TemplateURLModel* template_url_model() const { return url_model_; }
diff --git a/chrome/browser/views/options/advanced_page_view.cc b/chrome/browser/views/options/advanced_page_view.cc
index f47e5a6..37c6936 100644
--- a/chrome/browser/views/options/advanced_page_view.cc
+++ b/chrome/browser/views/options/advanced_page_view.cc
@@ -84,22 +84,24 @@ class ResetDefaultsConfirmBox : public ChromeViews::DialogDelegate {
// ChromeViews::WindowDelegate
virtual void WindowClosing() { delete this; }
virtual bool IsModal() const { return true; }
+ virtual ChromeViews::View* GetContentsView() { return message_box_view_; }
private:
ResetDefaultsConfirmBox(HWND parent_hwnd, AdvancedPageView* page_view)
: advanced_page_view_(page_view) {
const int kDialogWidth = 400;
// Also deleted when the window closes.
- MessageBoxView* message_box_view = new MessageBoxView(
+ message_box_view_ = new MessageBoxView(
MessageBoxView::kFlagHasMessage | MessageBoxView::kFlagHasOKButton,
l10n_util::GetString(IDS_OPTIONS_RESET_MESSAGE).c_str(),
std::wstring(),
kDialogWidth);
ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(),
- message_box_view, this)->Show();
+ this)->Show();
}
virtual ~ResetDefaultsConfirmBox() { }
+ MessageBoxView* message_box_view_;
AdvancedPageView* advanced_page_view_;
DISALLOW_EVIL_CONSTRUCTORS(ResetDefaultsConfirmBox);
diff --git a/chrome/browser/views/options/content_page_view.cc b/chrome/browser/views/options/content_page_view.cc
index 6ed056f..8814986 100644
--- a/chrome/browser/views/options/content_page_view.cc
+++ b/chrome/browser/views/options/content_page_view.cc
@@ -249,11 +249,10 @@ void ContentPageView::ButtonPressed(ChromeViews::NativeButton* sender) {
UserMetricsRecordAction(L"Options_ShowPasswordManager", NULL);
PasswordManagerView::Show(profile());
} else if (sender == change_content_fonts_button_) {
- FontsLanguagesWindowView* flwv = new FontsLanguagesWindowView(profile());
- ChromeViews::Window* w =
- ChromeViews::Window::CreateChromeWindow(GetRootWindow(), gfx::Rect(),
- flwv, flwv);
- w->Show();
+ ChromeViews::Window::CreateChromeWindow(
+ GetRootWindow(),
+ gfx::Rect(),
+ new FontsLanguagesWindowView(profile()))->Show();
}
}
diff --git a/chrome/browser/views/options/cookies_view.cc b/chrome/browser/views/options/cookies_view.cc
index 3b59198..bd5424d 100644
--- a/chrome/browser/views/options/cookies_view.cc
+++ b/chrome/browser/views/options/cookies_view.cc
@@ -561,7 +561,7 @@ void CookiesView::ShowCookiesWindow(Profile* profile) {
if (!instance_) {
CookiesView* cookies_view = new CookiesView(profile);
instance_ = ChromeViews::Window::CreateChromeWindow(
- NULL, gfx::Rect(), cookies_view, cookies_view);
+ NULL, gfx::Rect(), cookies_view);
}
if (!instance_->IsVisible()) {
instance_->Show();
@@ -649,6 +649,10 @@ void CookiesView::WindowClosing() {
instance_ = NULL;
}
+ChromeViews::View* CookiesView::GetContentsView() {
+ return this;
+}
+
///////////////////////////////////////////////////////////////////////////////
// CookiesView, ChromeViews::View overrides:
diff --git a/chrome/browser/views/options/cookies_view.h b/chrome/browser/views/options/cookies_view.h
index 9547acc..1f72a5c 100644
--- a/chrome/browser/views/options/cookies_view.h
+++ b/chrome/browser/views/options/cookies_view.h
@@ -81,6 +81,7 @@ class CookiesView : public ChromeViews::View,
virtual bool CanResize() const { return true; }
virtual std::wstring GetWindowTitle() const;
virtual void WindowClosing();
+ virtual ChromeViews::View* GetContentsView();
// ChromeViews::View overrides:
virtual void Layout();
diff --git a/chrome/browser/views/options/fonts_languages_window_view.cc b/chrome/browser/views/options/fonts_languages_window_view.cc
index 7b7788d..a6d9948 100644
--- a/chrome/browser/views/options/fonts_languages_window_view.cc
+++ b/chrome/browser/views/options/fonts_languages_window_view.cc
@@ -63,15 +63,22 @@ FontsLanguagesWindowView::~FontsLanguagesWindowView() {
///////////////////////////////////////////////////////////////////////////////
// FontsLanguagesWindowView, ChromeViews::DialogDelegate implementation:
+bool FontsLanguagesWindowView::Accept() {
+ fonts_page_->SaveChanges();
+ languages_page_->SaveChanges();
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// FontsLanguagesWindowView, ChromeViews::WindowDelegate implementation:
+
std::wstring FontsLanguagesWindowView::GetWindowTitle() const {
return l10n_util::GetStringF(IDS_FONT_LANGUAGE_SETTING_WINDOWS_TITLE,
l10n_util::GetString(IDS_PRODUCT_NAME));
}
-bool FontsLanguagesWindowView::Accept() {
- fonts_page_->SaveChanges();
- languages_page_->SaveChanges();
- return true;
+ChromeViews::View* FontsLanguagesWindowView::GetContentsView() {
+ return this;
}
///////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/views/options/fonts_languages_window_view.h b/chrome/browser/views/options/fonts_languages_window_view.h
index bdae5ea..c3e6a40 100644
--- a/chrome/browser/views/options/fonts_languages_window_view.h
+++ b/chrome/browser/views/options/fonts_languages_window_view.h
@@ -50,17 +50,13 @@ class FontsLanguagesWindowView : public ChromeViews::View,
explicit FontsLanguagesWindowView(Profile* profile);
virtual ~FontsLanguagesWindowView();
- ChromeViews::Window* container() const { return container_; }
- void set_container(ChromeViews::Window* container) {
- container_ = container;
- }
-
// ChromeViews::DialogDelegate implementation:
virtual bool Accept();
- virtual std::wstring GetWindowTitle() const;
// ChromeViews::WindowDelegate Methods:
virtual bool IsModal() const { return true; }
+ virtual std::wstring GetWindowTitle() const;
+ virtual ChromeViews::View* GetContentsView();
// ChromeViews::View overrides:
virtual void Layout();
@@ -78,9 +74,6 @@ class FontsLanguagesWindowView : public ChromeViews::View,
// The Tab view that contains all of the options pages.
ChromeViews::TabbedPane* tabs_;
- // The Options dialog window.
- ChromeViews::Window* container_;
-
// Fonts Page View handle remembered so that prefs is updated only when
// OK is pressed.
FontsPageView* fonts_page_;
diff --git a/chrome/browser/views/options/languages_page_view.cc b/chrome/browser/views/options/languages_page_view.cc
index 2c9ef19..fb449fc 100644
--- a/chrome/browser/views/options/languages_page_view.cc
+++ b/chrome/browser/views/options/languages_page_view.cc
@@ -243,6 +243,7 @@ class AddLanguageWindowView : public ChromeViews::View,
// ChromeViews::WindowDelegate method.
virtual bool IsModal() const { return true; }
+ virtual ChromeViews::View* GetContentsView() { return this; }
// ChromeViews::ComboBox::Listener implementation:
virtual void ItemChanged(ChromeViews::ComboBox* combo_box,
@@ -525,12 +526,10 @@ void LanguagesPageView::ButtonPressed(ChromeViews::NativeButton* sender) {
OnRemoveLanguage();
language_table_edited_ = true;
} else if (sender == add_button_) {
- AddLanguageWindowView* instance = new AddLanguageWindowView(this, profile());
- HWND parent_hwnd = GetViewContainer()->GetHWND();
- ChromeViews::Window* w =
- ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(),
- instance, instance);
- w->Show();
+ ChromeViews::Window::CreateChromeWindow(
+ GetViewContainer()->GetHWND(),
+ gfx::Rect(),
+ new AddLanguageWindowView(this, profile()))->Show();
language_table_edited_ = true;
}
}
diff --git a/chrome/browser/views/options/options_window_view.cc b/chrome/browser/views/options/options_window_view.cc
index 72c7029..5b29fdb 100644
--- a/chrome/browser/views/options/options_window_view.cc
+++ b/chrome/browser/views/options/options_window_view.cc
@@ -60,11 +60,6 @@ class OptionsWindowView : public ChromeViews::View,
explicit OptionsWindowView(Profile* profile);
virtual ~OptionsWindowView();
- ChromeViews::Window* container() const { return container_; }
- void set_container(ChromeViews::Window* container) {
- container_ = container;
- }
-
// Shows the Tab corresponding to the specified OptionsPage.
void ShowOptionsPage(OptionsPage page, OptionsGroup highlight_group);
@@ -73,6 +68,7 @@ class OptionsWindowView : public ChromeViews::View,
virtual std::wstring GetWindowTitle() const;
virtual void WindowClosing();
virtual bool Cancel();
+ virtual ChromeViews::View* GetContentsView();
// ChromeViews::TabbedPane::Listener implementation:
virtual void TabSelectedAt(int index);
@@ -96,9 +92,6 @@ class OptionsWindowView : public ChromeViews::View,
// The Tab view that contains all of the options pages.
ChromeViews::TabbedPane* tabs_;
- // The Options dialog window.
- ChromeViews::Window* container_;
-
// The Profile associated with these options.
Profile* profile_;
@@ -135,10 +128,10 @@ void OptionsWindowView::ShowOptionsPage(OptionsPage page,
OptionsGroup highlight_group) {
// If the window is not yet visible, we need to show it (it will become
// active), otherwise just bring it to the front.
- if (!container_->IsVisible()) {
- container_->Show();
+ if (!window()->IsVisible()) {
+ window()->Show();
} else {
- container_->Activate();
+ window()->Activate();
}
if (page == OPTIONS_PAGE_DEFAULT) {
@@ -171,6 +164,10 @@ bool OptionsWindowView::Cancel() {
return GetCurrentOptionsPageView()->CanClose();
}
+ChromeViews::View* OptionsWindowView::GetContentsView() {
+ return this;
+}
+
///////////////////////////////////////////////////////////////////////////////
// OptionsWindowView, ChromeViews::TabbedPane::Listener implementation:
@@ -246,8 +243,7 @@ void ShowOptionsWindow(OptionsPage page,
// about this case this will have to be fixed.
if (!instance_) {
instance_ = new OptionsWindowView(profile);
- instance_->set_container(ChromeViews::Window::CreateChromeWindow(
- NULL, gfx::Rect(), instance_, instance_));
+ ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), instance_);
// The window is alive by itself now...
}
instance_->ShowOptionsPage(page, highlight_group);
diff --git a/chrome/browser/views/password_manager_view.cc b/chrome/browser/views/password_manager_view.cc
index cf5eb50..86c6434 100644
--- a/chrome/browser/views/password_manager_view.cc
+++ b/chrome/browser/views/password_manager_view.cc
@@ -185,15 +185,12 @@ void PasswordManagerView::Show(Profile* profile) {
instance_ = new PasswordManagerView(profile);
// manager is owned by the dialog window, so Close() will delete it.
- instance_->dialog_ = ChromeViews::Window::CreateChromeWindow(NULL,
- gfx::Rect(),
- instance_,
- instance_);
+ ChromeViews::Window::CreateChromeWindow(NULL, gfx::Rect(), instance_);
}
- if (!instance_->dialog_->IsVisible()) {
- instance_->dialog_->Show();
+ if (!instance_->window()->IsVisible()) {
+ instance_->window()->Show();
} else {
- instance_->dialog_->Activate();
+ instance_->window()->Activate();
}
}
@@ -358,7 +355,7 @@ std::wstring PasswordManagerView::GetWindowTitle() const {
}
void PasswordManagerView::ButtonPressed(ChromeViews::NativeButton* sender) {
- DCHECK(dialog_);
+ DCHECK(window());
// Close will result in our destruction.
if (sender == &remove_all_button_) {
table_model_.ForgetAndRemoveAllSignons();
@@ -397,3 +394,7 @@ void PasswordManagerView::WindowClosing() {
// instance is created.
instance_ = NULL;
}
+
+ChromeViews::View* PasswordManagerView::GetContentsView() {
+ return this;
+}
diff --git a/chrome/browser/views/password_manager_view.h b/chrome/browser/views/password_manager_view.h
index 19c92ad..a9eeb39 100644
--- a/chrome/browser/views/password_manager_view.h
+++ b/chrome/browser/views/password_manager_view.h
@@ -140,6 +140,7 @@ class PasswordManagerView : public ChromeViews::View,
virtual bool HasAlwaysOnTopMenu() const;
virtual std::wstring GetWindowTitle() const;
virtual void WindowClosing();
+ virtual ChromeViews::View* GetContentsView();
private:
// Wire up buttons, the model, and the table view, and query the DB for
@@ -162,9 +163,6 @@ class PasswordManagerView : public ChromeViews::View,
ChromeViews::NativeButton remove_all_button_;
ChromeViews::Label password_label_;
- // The window containing this view.
- ChromeViews::Window* dialog_;
-
DISALLOW_EVIL_CONSTRUCTORS(PasswordManagerView);
};
#endif // CHROME_BROWSER_PASSWORD_MANAGER_VIEW_H__
diff --git a/chrome/browser/views/restart_message_box.cc b/chrome/browser/views/restart_message_box.cc
index 3d940ab..d3f52cd 100644
--- a/chrome/browser/views/restart_message_box.cc
+++ b/chrome/browser/views/restart_message_box.cc
@@ -65,19 +65,23 @@ bool RestartMessageBox::IsModal() const {
return true;
}
+ChromeViews::View* RestartMessageBox::GetContentsView() {
+ return message_box_view_;
+}
+
////////////////////////////////////////////////////////////////////////////////
// RestartMessageBox, private:
RestartMessageBox::RestartMessageBox(HWND parent_hwnd) {
const int kDialogWidth = 400;
// Also deleted when the window closes.
- MessageBoxView* message_box_view = new MessageBoxView(
+ message_box_view_ = new MessageBoxView(
MessageBoxView::kFlagHasMessage | MessageBoxView::kFlagHasOKButton,
l10n_util::GetString(IDS_OPTIONS_RESTART_REQUIRED).c_str(),
std::wstring(),
kDialogWidth);
ChromeViews::Window::CreateChromeWindow(parent_hwnd, gfx::Rect(),
- message_box_view, this)->Show();
+ this)->Show();
}
RestartMessageBox::~RestartMessageBox() {
diff --git a/chrome/browser/views/restart_message_box.h b/chrome/browser/views/restart_message_box.h
index 5a5da45..3ae42dd 100644
--- a/chrome/browser/views/restart_message_box.h
+++ b/chrome/browser/views/restart_message_box.h
@@ -33,6 +33,8 @@
#include "base/basictypes.h"
#include "chrome/views/dialog_delegate.h"
+class MessageBoxView;
+
// A dialog box that tells the user that s/he needs to restart Chrome
// for a change to take effect.
class RestartMessageBox : public ChromeViews::DialogDelegate {
@@ -49,11 +51,14 @@ class RestartMessageBox : public ChromeViews::DialogDelegate {
// ChromeViews::WindowDelegate:
virtual void WindowClosing();
virtual bool IsModal() const;
+ virtual ChromeViews::View* GetContentsView();
private:
explicit RestartMessageBox(HWND parent_hwnd);
virtual ~RestartMessageBox();
+ MessageBoxView* message_box_view_;
+
DISALLOW_EVIL_CONSTRUCTORS(RestartMessageBox);
};
diff --git a/chrome/browser/views/shelf_item_dialog.cc b/chrome/browser/views/shelf_item_dialog.cc
index bbec8e9..670453a 100644
--- a/chrome/browser/views/shelf_item_dialog.cc
+++ b/chrome/browser/views/shelf_item_dialog.cc
@@ -242,8 +242,7 @@ class PossibleURLModel : public ChromeViews::TableModel {
ShelfItemDialog::ShelfItemDialog(ShelfItemDialogDelegate* delegate,
Profile* profile,
bool show_title)
- : dialog_(NULL),
- profile_(profile),
+ : profile_(profile),
expected_title_handle_(0),
delegate_(delegate) {
DCHECK(profile_);
@@ -338,10 +337,8 @@ ShelfItemDialog::~ShelfItemDialog() {
}
void ShelfItemDialog::Show(HWND parent) {
- DCHECK(!dialog_);
- dialog_ =
- ChromeViews::Window::CreateChromeWindow(parent, gfx::Rect(), this, this);
- dialog_->Show();
+ DCHECK(!window());
+ ChromeViews::Window::CreateChromeWindow(parent, gfx::Rect(), this)->Show();
if (title_field_) {
title_field_->SetText(l10n_util::GetString(IDS_ASI_DEFAULT_TITLE));
title_field_->SelectAll();
@@ -354,8 +351,8 @@ void ShelfItemDialog::Show(HWND parent) {
}
void ShelfItemDialog::Close() {
- DCHECK(dialog_);
- dialog_->Close();
+ DCHECK(window());
+ window()->Close();
}
std::wstring ShelfItemDialog::GetWindowTitle() const {
@@ -416,7 +413,7 @@ void ShelfItemDialog::ContentsChanged(ChromeViews::TextField* sender,
// so we reset the expected handle to an impossible value.
if (sender == title_field_)
expected_title_handle_ = 0;
- dialog_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
bool ShelfItemDialog::Accept() {
@@ -437,6 +434,10 @@ bool ShelfItemDialog::IsDialogButtonEnabled(DialogButton button) const {
return true;
}
+ChromeViews::View* ShelfItemDialog::GetContentsView() {
+ return this;
+}
+
void ShelfItemDialog::PerformModelChange() {
DCHECK(delegate_);
GURL url(GetInputURL());
@@ -455,7 +456,7 @@ void ShelfItemDialog::GetPreferredSize(CSize *out) {
bool ShelfItemDialog::AcceleratorPressed(
const ChromeViews::Accelerator& accelerator) {
if (accelerator.GetKeyCode() == VK_ESCAPE) {
- dialog_->Close();
+ window()->Close();
} else if (accelerator.GetKeyCode() == VK_RETURN) {
ChromeViews::FocusManager* fm = ChromeViews::FocusManager::GetFocusManager(
GetViewContainer()->GetHWND());
@@ -467,8 +468,8 @@ bool ShelfItemDialog::AcceleratorPressed(
// is invalid, focus is left on the url field.
if (GetInputURL().is_valid()) {
PerformModelChange();
- if (dialog_)
- dialog_->Close();
+ if (window())
+ window()->Close();
} else {
url_field_->SelectAll();
}
@@ -492,7 +493,7 @@ void ShelfItemDialog::OnSelectionChanged() {
UTF8ToWide(url_table_model_->GetURL(selection).spec()));
if (title_field_)
title_field_->SetText(url_table_model_->GetTitle(selection));
- dialog_->UpdateDialogButtons();
+ window()->UpdateDialogButtons();
}
}
@@ -501,8 +502,8 @@ void ShelfItemDialog::OnDoubleClick() {
if (selection >= 0 && selection < url_table_model_->RowCount()) {
OnSelectionChanged();
PerformModelChange();
- if (dialog_)
- dialog_->Close();
+ if (window())
+ window()->Close();
}
}
diff --git a/chrome/browser/views/shelf_item_dialog.h b/chrome/browser/views/shelf_item_dialog.h
index e5c0b7d..e7f9161 100644
--- a/chrome/browser/views/shelf_item_dialog.h
+++ b/chrome/browser/views/shelf_item_dialog.h
@@ -88,6 +88,7 @@ class ShelfItemDialog : public ChromeViews::View,
virtual std::wstring GetDialogButtonLabel(DialogButton button) const;
virtual bool Accept();
virtual bool IsDialogButtonEnabled(DialogButton button) const;
+ virtual ChromeViews::View* GetContentsView();
// TextField::Controller.
virtual void ContentsChanged(ChromeViews::TextField* sender,
@@ -122,9 +123,6 @@ class ShelfItemDialog : public ChromeViews::View,
// Returns the URL the user has typed.
GURL GetInputURL() const;
- // The dialog controller for our current dialog.
- ChromeViews::Window* dialog_;
-
// Profile.
Profile* profile_;