13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_MANAGER_H_
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_MANAGER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/javascript_dialog_manager.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellJavaScriptDialog;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShellJavaScriptDialogManager : public JavaScriptDialogManager {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ShellJavaScriptDialogManager();
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~ShellJavaScriptDialogManager();
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // JavaScriptDialogManager:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunJavaScriptDialog(
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebContents* web_contents,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GURL& origin_url,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& accept_lang,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      JavaScriptMessageType javascript_message_type,
28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const base::string16& message_text,
29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const base::string16& default_prompt_text,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const DialogClosedCallback& callback,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool* did_suppress_message) OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunBeforeUnloadDialog(
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebContents* web_contents,
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const base::string16& message_text,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool is_reload,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const DialogClosedCallback& callback) OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void CancelActiveAndPendingDialogs(
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      WebContents* web_contents) OVERRIDE;
41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void WebContentsDestroyed(WebContents* web_contents) OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called by the ShellJavaScriptDialog when it closes.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DialogClosed(ShellJavaScriptDialog* dialog);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used for content_browsertests.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_dialog_request_callback(const base::Closure& callback) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dialog_request_callback_ = callback;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_MACOSX) || defined(OS_WIN)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The dialog being shown. No queueing.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ShellJavaScriptDialog> dialog_;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO: implement ShellJavaScriptDialog for other platforms, drop this #if
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Closure dialog_request_callback_;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShellJavaScriptDialogManager);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif  // CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_MANAGER_H_
68