chromium/android_webview/browser/aw_javascript_dialog_manager.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ANDROID_WEBVIEW_BROWSER_AW_JAVASCRIPT_DIALOG_MANAGER_H_
#define ANDROID_WEBVIEW_BROWSER_AW_JAVASCRIPT_DIALOG_MANAGER_H_

#include "content/public/browser/javascript_dialog_manager.h"

namespace android_webview {

/**
 * Implements JavaScriptDialogManager for WebView.
 *
 * This class is a singleton, but it doesn't store any state, each method just
 * calls through to the AwContentsClientBridge tied to the Web Contents. If
 * you add state, please consider how this will work with Multi-profile.
 *
 * Lifetime: Singleton
 */
class AwJavaScriptDialogManager : public content::JavaScriptDialogManager {
 public:
  AwJavaScriptDialogManager();

  AwJavaScriptDialogManager(const AwJavaScriptDialogManager&) = delete;
  AwJavaScriptDialogManager& operator=(const AwJavaScriptDialogManager&) =
      delete;

  ~AwJavaScriptDialogManager() override;

  // Overridden from content::JavaScriptDialogManager:
  void RunJavaScriptDialog(content::WebContents* web_contents,
                           content::RenderFrameHost* render_frame_host,
                           content::JavaScriptDialogType dialog_type,
                           const std::u16string& message_text,
                           const std::u16string& default_prompt_text,
                           DialogClosedCallback callback,
                           bool* did_suppress_message) override;
  void RunBeforeUnloadDialog(content::WebContents* web_contents,
                             content::RenderFrameHost* render_frame_host,
                             bool is_reload,
                             DialogClosedCallback callback) override;
  void CancelDialogs(content::WebContents* web_contents,
                     bool reset_state) override;
};

}  // namespace android_webview

#endif  // ANDROID_WEBVIEW_BROWSER_AW_JAVASCRIPT_DIALOG_MANAGER_H_