blob: 1aec6b28c4e8b9868f23d5d43bfea601ee84fb2c [file] [log] [blame]
// Copyright (c) 2012 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.
#include <string>
#include "base/callback_forward.h"
#include "base/strings/string16.h"
#include "content/common/content_export.h"
#include "content/public/common/javascript_dialog_type.h"
#include "ui/gfx/native_widget_types.h"
#include "url/gurl.h"
namespace content {
class RenderFrameHost;
class WebContents;
// An interface consisting of methods that can be called to produce and manage
// JavaScript dialogs.
class CONTENT_EXPORT JavaScriptDialogManager {
using DialogClosedCallback =
base::OnceCallback<void(bool /* success */,
const base::string16& /* user_input */)>;
// Displays a JavaScript dialog. |did_suppress_message| will not be nil; if
// |true| is returned in it, the caller will handle faking the reply.
virtual void RunJavaScriptDialog(WebContents* web_contents,
RenderFrameHost* render_frame_host,
JavaScriptDialogType dialog_type,
const base::string16& message_text,
const base::string16& default_prompt_text,
DialogClosedCallback callback,
bool* did_suppress_message) = 0;
// Displays a dialog asking the user if they want to leave a page.
virtual void RunBeforeUnloadDialog(WebContents* web_contents,
RenderFrameHost* render_frame_host,
bool is_reload,
DialogClosedCallback callback) = 0;
// Accepts or dismisses the active JavaScript dialog, which must be owned
// by the given |web_contents|. If |prompt_override| is not null, the prompt
// text of the dialog should be set before accepting. Returns true if the
// dialog was handled.
virtual bool HandleJavaScriptDialog(WebContents* web_contents,
bool accept,
const base::string16* prompt_override);
// Cancels all active and pending dialogs for the given WebContents. If
// |reset_state| is true, resets any saved state tied to |web_contents|.
virtual void CancelDialogs(WebContents* web_contents,
bool reset_state) = 0;
virtual ~JavaScriptDialogManager() {}
} // namespace content