1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_REPOST_FORM_WARNING_CONTROLLER_H_
6#define CHROME_BROWSER_REPOST_FORM_WARNING_CONTROLLER_H_
7#pragma once
8
9#include "content/browser/tab_contents/constrained_window.h"
10#include "content/common/notification_observer.h"
11#include "content/common/notification_registrar.h"
12
13class TabContents;
14
15// This class is used to continue or cancel a pending reload when the
16// repost form warning is shown. It is owned by the platform-dependent
17// |RepostFormWarning{Gtk,Mac,View}| classes.
18class RepostFormWarningController : public NotificationObserver {
19 public:
20  explicit RepostFormWarningController(TabContents* tab_contents);
21  virtual ~RepostFormWarningController();
22
23  // Show the warning dialog.
24  void Show(ConstrainedWindowDelegate* window_delegate);
25
26  // Cancel the reload.
27  void Cancel();
28
29  // Continue the reload.
30  void Continue();
31
32 private:
33  // NotificationObserver implementation.
34  // Watch for a new load or a closed tab and dismiss the dialog if they occur.
35  virtual void Observe(NotificationType type,
36                       const NotificationSource& source,
37                       const NotificationDetails& details);
38
39  // Close the warning dialog.
40  void CloseDialog();
41
42  NotificationRegistrar registrar_;
43
44  // Tab contents, used to continue the reload.
45  TabContents* tab_contents_;
46
47  ConstrainedWindow* window_;
48
49  DISALLOW_COPY_AND_ASSIGN(RepostFormWarningController);
50};
51
52#endif  // CHROME_BROWSER_REPOST_FORM_WARNING_CONTROLLER_H_
53