Home | History | Annotate | Download | only in browser
      1 // Copyright 2013 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_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_MANAGER_H_
      6 #define CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_MANAGER_H_
      7 
      8 #include "base/callback_forward.h"
      9 #include "base/compiler_specific.h"
     10 #include "base/memory/scoped_ptr.h"
     11 #include "content/public/browser/javascript_dialog_manager.h"
     12 
     13 namespace content {
     14 
     15 class ShellJavaScriptDialog;
     16 
     17 class ShellJavaScriptDialogManager : public JavaScriptDialogManager {
     18  public:
     19   ShellJavaScriptDialogManager();
     20   virtual ~ShellJavaScriptDialogManager();
     21 
     22   // JavaScriptDialogManager:
     23   virtual void RunJavaScriptDialog(
     24       WebContents* web_contents,
     25       const GURL& origin_url,
     26       const std::string& accept_lang,
     27       JavaScriptMessageType javascript_message_type,
     28       const base::string16& message_text,
     29       const base::string16& default_prompt_text,
     30       const DialogClosedCallback& callback,
     31       bool* did_suppress_message) OVERRIDE;
     32 
     33   virtual void RunBeforeUnloadDialog(
     34       WebContents* web_contents,
     35       const base::string16& message_text,
     36       bool is_reload,
     37       const DialogClosedCallback& callback) OVERRIDE;
     38 
     39   virtual void CancelActiveAndPendingDialogs(
     40       WebContents* web_contents) OVERRIDE;
     41 
     42   virtual void WebContentsDestroyed(WebContents* web_contents) OVERRIDE;
     43 
     44   // Called by the ShellJavaScriptDialog when it closes.
     45   void DialogClosed(ShellJavaScriptDialog* dialog);
     46 
     47   // Used for content_browsertests.
     48   void set_dialog_request_callback(const base::Closure& callback) {
     49     dialog_request_callback_ = callback;
     50   }
     51 
     52  private:
     53 #if defined(OS_MACOSX) || defined(OS_WIN) || defined(TOOLKIT_GTK)
     54   // The dialog being shown. No queueing.
     55   scoped_ptr<ShellJavaScriptDialog> dialog_;
     56 #else
     57   // TODO: implement ShellJavaScriptDialog for other platforms, drop this #if
     58 #endif
     59 
     60   base::Closure dialog_request_callback_;
     61 
     62   DISALLOW_COPY_AND_ASSIGN(ShellJavaScriptDialogManager);
     63 };
     64 
     65 }  // namespace content
     66 
     67 #endif  // CONTENT_SHELL_BROWSER_SHELL_JAVASCRIPT_DIALOG_MANAGER_H_
     68