javascript_dialog_manager.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
1// Copyright (c) 2012 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 CONTENT_PUBLIC_BROWSER_JAVASCRIPT_DIALOG_MANAGER_H_
6#define CONTENT_PUBLIC_BROWSER_JAVASCRIPT_DIALOG_MANAGER_H_
7
8#include <string>
9
10#include "base/callback.h"
11#include "base/strings/string16.h"
12#include "content/common/content_export.h"
13#include "content/public/common/javascript_message_type.h"
14#include "googleurl/src/gurl.h"
15#include "ui/gfx/native_widget_types.h"
16
17namespace content {
18
19class WebContents;
20
21// An interface consisting of methods that can be called to produce and manage
22// JavaScript dialogs.
23class CONTENT_EXPORT JavaScriptDialogManager {
24 public:
25  typedef base::Callback<void(bool /* success */,
26                              const string16& /* user_input */)>
27                                  DialogClosedCallback;
28
29  // Displays a JavaScript dialog. |did_suppress_message| will not be nil; if
30  // |true| is returned in it, the caller will handle faking the reply.
31  virtual void RunJavaScriptDialog(
32      WebContents* web_contents,
33      const GURL& origin_url,
34      const std::string& accept_lang,
35      JavaScriptMessageType javascript_message_type,
36      const string16& message_text,
37      const string16& default_prompt_text,
38      const DialogClosedCallback& callback,
39      bool* did_suppress_message) = 0;
40
41  // Displays a dialog asking the user if they want to leave a page.
42  virtual void RunBeforeUnloadDialog(WebContents* web_contents,
43                                     const string16& message_text,
44                                     bool is_reload,
45                                     const DialogClosedCallback& callback) = 0;
46
47  // Accepts or dismisses the active JavaScript dialog, which must be owned
48  // by the given |web_contents|. If |prompt_override| is not null, the prompt
49  // text of the dialog should be set before accepting. Returns true if the
50  // dialog was handled.
51  virtual bool HandleJavaScriptDialog(WebContents* web_contents,
52                                      bool accept,
53                                      const string16* prompt_override);
54
55  // Cancels all pending dialogs and resets any saved JavaScript dialog state
56  // for the given WebContents.
57  virtual void ResetJavaScriptState(WebContents* web_contents) = 0;
58
59  virtual ~JavaScriptDialogManager() {}
60};
61
62}  // namespace content
63
64#endif  // CONTENT_PUBLIC_BROWSER_JAVASCRIPT_DIALOG_MANAGER_H_
65