diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-31 20:53:53 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-31 20:53:53 +0000 |
commit | 14f3408a98e69385382ab026a98a7421d6cf0a2f (patch) | |
tree | 833aad9b3012fe8c122cd4cca8be881895fa61b8 /chrome/browser/views | |
parent | 2163916abe6e98e336012144a689c30537f33725 (diff) | |
download | chromium_src-14f3408a98e69385382ab026a98a7421d6cf0a2f.zip chromium_src-14f3408a98e69385382ab026a98a7421d6cf0a2f.tar.gz chromium_src-14f3408a98e69385382ab026a98a7421d6cf0a2f.tar.bz2 |
Gtk confirm form resubmission dialog.
Refactor so that the dialog is shown by calling BrowserWindow::ShowRepostFormWarningDialog
BUG=19761
TEST=see bug
Review URL: http://codereview.chromium.org/174294
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24930 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r-- | chrome/browser/views/browser_dialogs.h | 4 | ||||
-rw-r--r-- | chrome/browser/views/dialog_stubs_gtk.cc | 5 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 4 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/repost_form_warning_view.cc | 36 | ||||
-rw-r--r-- | chrome/browser/views/repost_form_warning_view.h | 6 |
6 files changed, 37 insertions, 19 deletions
diff --git a/chrome/browser/views/browser_dialogs.h b/chrome/browser/views/browser_dialogs.h index c2b13f3..805f565 100644 --- a/chrome/browser/views/browser_dialogs.h +++ b/chrome/browser/views/browser_dialogs.h @@ -97,6 +97,10 @@ void EditSearchEngine(gfx::NativeWindow parent, EditSearchEngineControllerDelegate* delegate, Profile* profile); +// Shows the repost form confirmation dialog box. +void ShowRepostFormWarningDialog(gfx::NativeWindow parent_window, + TabContents* tab_contents); + } // namespace browser #endif // CHROME_BROWSER_VIEWS_BROWSER_DIALOGS_H_ diff --git a/chrome/browser/views/dialog_stubs_gtk.cc b/chrome/browser/views/dialog_stubs_gtk.cc index f57446d..0fe25e5 100644 --- a/chrome/browser/views/dialog_stubs_gtk.cc +++ b/chrome/browser/views/dialog_stubs_gtk.cc @@ -74,6 +74,11 @@ void EditSearchEngine(gfx::NativeWindow parent, NOTIMPLEMENTED(); } +void ShowRepostFormWarningDialog(gfx::NativeWindow parent_window, + TabContents* tab_contents) { + NOTIMPLEMENTED(); +} + } // namespace browser void ShowOptionsWindow(OptionsPage page, diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc index ae02466..b7e7f28 100644 --- a/chrome/browser/views/frame/browser_view.cc +++ b/chrome/browser/views/frame/browser_view.cc @@ -937,6 +937,10 @@ void BrowserView::ShowNewProfileDialog() { browser::ShowNewProfileDialog(); } +void BrowserView::ShowRepostFormWarningDialog(TabContents* tab_contents) { + browser::ShowRepostFormWarningDialog(GetNativeHandle(), tab_contents); +} + void BrowserView::ConfirmBrowserCloseWithPendingDownloads() { DownloadInProgressConfirmDialogDelegate* delegate = new DownloadInProgressConfirmDialogDelegate(browser_.get()); diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h index 2fd3d4a..bbdfd6f 100644 --- a/chrome/browser/views/frame/browser_view.h +++ b/chrome/browser/views/frame/browser_view.h @@ -245,6 +245,7 @@ class BrowserView : public BrowserWindow, virtual void ShowPasswordManager(); virtual void ShowSelectProfileDialog(); virtual void ShowNewProfileDialog(); + virtual void ShowRepostFormWarningDialog(TabContents* tab_contents); virtual void ConfirmBrowserCloseWithPendingDownloads(); virtual void ShowHTMLDialog(HtmlDialogUIDelegate* delegate, gfx::NativeWindow parent_window); diff --git a/chrome/browser/views/repost_form_warning_view.cc b/chrome/browser/views/repost_form_warning_view.cc index c9ef167..2a6f810 100644 --- a/chrome/browser/views/repost_form_warning_view.cc +++ b/chrome/browser/views/repost_form_warning_view.cc @@ -9,19 +9,27 @@ #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_window.h" #include "chrome/browser/tab_contents/navigation_controller.h" +#include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/common/notification_service.h" #include "grit/generated_resources.h" #include "views/controls/message_box_view.h" #include "views/window/window.h" -// Implementation of function declared in -// browser/tab_contents/repost_form_warning.h -void RunRepostFormWarningDialog(NavigationController* navigation_controller) { - RepostFormWarningView* dialog = - new RepostFormWarningView(navigation_controller); +namespace browser { + +// Declared in browser_dialogs.h so others don't have to depend on our header. +void ShowRepostFormWarningDialog(gfx::NativeWindow parent_window, + TabContents* tab_contents) { + new RepostFormWarningView(parent_window, &tab_contents->controller()); } +} // namespace browser + +////////////////////////////////////////////////////////////////////////////// +// RepostFormWarningView, constructor & destructor: + RepostFormWarningView::RepostFormWarningView( + gfx::NativeWindow parent_window, NavigationController* navigation_controller) : navigation_controller_(navigation_controller), message_box_view_(NULL) { @@ -29,19 +37,12 @@ RepostFormWarningView::RepostFormWarningView( MessageBoxFlags::kIsConfirmMessageBox, l10n_util::GetString(IDS_HTTP_POST_WARNING), L""); - // TODO(beng): fix this - this dialog box should be shown by a method on the - // Browser. - HWND root_hwnd = NULL; - if (BrowserList::GetLastActive()) { - root_hwnd = reinterpret_cast<HWND>(BrowserList::GetLastActive()-> - window()->GetNativeHandle()); - } - views::Window::CreateChromeWindow(root_hwnd, gfx::Rect(), this)->Show(); + views::Window::CreateChromeWindow(parent_window, gfx::Rect(), this)->Show(); registrar_.Add(this, NotificationType::LOAD_START, - NotificationService::AllSources()); + Source<NavigationController>(navigation_controller_)); registrar_.Add(this, NotificationType::TAB_CLOSING, - NotificationService::AllSources()); + Source<NavigationController>(navigation_controller_)); } RepostFormWarningView::~RepostFormWarningView() { @@ -95,8 +96,9 @@ void RepostFormWarningView::Observe(NotificationType type, // a navigation controller anymore. if (window() && navigation_controller_ && (type == NotificationType::LOAD_START || - type == NotificationType::TAB_CLOSING) && - Source<NavigationController>(source).ptr() == navigation_controller_) { + type == NotificationType::TAB_CLOSING)) { + DCHECK_EQ(Source<NavigationController>(source).ptr(), + navigation_controller_); navigation_controller_ = NULL; window()->Close(); } diff --git a/chrome/browser/views/repost_form_warning_view.h b/chrome/browser/views/repost_form_warning_view.h index 40db8ac..3c8538b 100644 --- a/chrome/browser/views/repost_form_warning_view.h +++ b/chrome/browser/views/repost_form_warning_view.h @@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_VIEWS_REPOST_FORM_WARNING_VIEW_H_ #define CHROME_BROWSER_VIEWS_REPOST_FORM_WARNING_VIEW_H_ +#include "base/gfx/native_widget_types.h" #include "chrome/common/notification_registrar.h" #include "views/window/dialog_delegate.h" @@ -17,8 +18,9 @@ class Window; class RepostFormWarningView : public views::DialogDelegate, public NotificationObserver { public: - // Use RunRepostFormWarningDialog (declared in repost_form_warning.h) to use. - RepostFormWarningView(NavigationController* navigation_controller); + // Use BrowserWindow::ShowRepostFormWarningDialog to use. + RepostFormWarningView(gfx::NativeWindow parent_window, + NavigationController* navigation_controller); virtual ~RepostFormWarningView(); // views::DialogDelegate Methods: |