summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-31 20:53:53 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-31 20:53:53 +0000
commit14f3408a98e69385382ab026a98a7421d6cf0a2f (patch)
tree833aad9b3012fe8c122cd4cca8be881895fa61b8 /chrome/browser/views
parent2163916abe6e98e336012144a689c30537f33725 (diff)
downloadchromium_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.h4
-rw-r--r--chrome/browser/views/dialog_stubs_gtk.cc5
-rw-r--r--chrome/browser/views/frame/browser_view.cc4
-rw-r--r--chrome/browser/views/frame/browser_view.h1
-rw-r--r--chrome/browser/views/repost_form_warning_view.cc36
-rw-r--r--chrome/browser/views/repost_form_warning_view.h6
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: