diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-09 11:59:02 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-09 11:59:02 +0000 |
commit | 965bb0937dc924fbabe69a350c427aa3d84f76ab (patch) | |
tree | ce6e1ebfa7f64a97467e2b1555cfd26462676d86 /chrome/browser/repost_form_warning_controller.h | |
parent | e14c72d324f6eddfc0f1b1d462ea7e897da5fc1c (diff) | |
download | chromium_src-965bb0937dc924fbabe69a350c427aa3d84f76ab.zip chromium_src-965bb0937dc924fbabe69a350c427aa3d84f76ab.tar.gz chromium_src-965bb0937dc924fbabe69a350c427aa3d84f76ab.tar.bz2 |
Refactor common, platform-independent code for the repost form warning dialog on all platforms into a delegate.
The platform-dependent ConstrainedWindow{Gtk,Mac,Win} classes each have their own platform-dependent |ConstrainedWindowDelegate| to inherit from, so instead of a common superclass they now have a RepostFormWarningDelegate.
Also, change the RELOADING notification to REPOST_WARNING_SHOWN to avoid trying to close the dialog while it's already in the process of being closed.
BUG=none
TEST=RepostFormWarningTest.*
Review URL: http://codereview.chromium.org/1520023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44074 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/repost_form_warning_controller.h')
-rw-r--r-- | chrome/browser/repost_form_warning_controller.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/chrome/browser/repost_form_warning_controller.h b/chrome/browser/repost_form_warning_controller.h new file mode 100644 index 0000000..2b2c0a8 --- /dev/null +++ b/chrome/browser/repost_form_warning_controller.h @@ -0,0 +1,53 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_REPOST_FORM_WARNING_CONTROLLER_H_ +#define CHROME_BROWSER_REPOST_FORM_WARNING_CONTROLLER_H_ + +#include "chrome/browser/tab_contents/constrained_window.h" +#include "chrome/common/notification_registrar.h" + +class NavigationController; +class TabContents; + +// This class is used to continue or cancel a pending reload when the +// repost form warning is shown. It is owned by the platform-dependent +// |RepostFormWarning{Gtk,Mac,View}| classes and deletes itself after closing +// the dialog. +class RepostFormWarningController : public NotificationObserver { + public: + explicit RepostFormWarningController(TabContents* tab_contents); + + // Show the warning dialog. + void Show(ConstrainedWindowDelegate* window_delegate); + + // Cancel the reload. + void Cancel(); + + // Continue the reload. + void Continue(); + + private: + virtual ~RepostFormWarningController(); + + // NotificationObserver implementation. + // Watch for a new load or a closed tab and dismiss the dialog if they occur. + void Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details); + + // Close the warning dialog. + void CloseDialog(); + + NotificationRegistrar registrar_; + + // Tab contents, used to continue the reload. + TabContents* tab_contents_; + + ConstrainedWindow* window_; + + DISALLOW_COPY_AND_ASSIGN(RepostFormWarningController); +}; + +#endif // CHROME_BROWSER_REPOST_FORM_WARNING_CONTROLLER_H_ |