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