1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_JS_MODAL_DIALOG_COCOA_H_
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_JS_MODAL_DIALOG_COCOA_H_
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#pragma once
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/logging.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_nsobject.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#if __OBJC__
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen@class NSAlert;
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen@class JavaScriptAppModalDialogHelper;
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#else
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass NSAlert;
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass JavaScriptAppModalDialogHelper;
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass JSModalDialogCocoa : public NativeAppModalDialog {
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  explicit JSModalDialogCocoa(JavaScriptAppModalDialog* dialog);
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual ~JSModalDialogCocoa();
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Overridden from NativeAppModalDialog:
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual int GetAppModalDialogButtons() const;
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void ShowAppModalDialog();
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void ActivateAppModalDialog();
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void CloseAppModalDialog();
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void AcceptAppModalDialog();
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  virtual void CancelAppModalDialog();
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  JavaScriptAppModalDialog* dialog() const { return dialog_.get(); }
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private:
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<JavaScriptAppModalDialog> dialog_;
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_nsobject<JavaScriptAppModalDialogHelper> helper_;
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  NSAlert* alert_; // weak, owned by |helper_|.
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(JSModalDialogCocoa);
45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif  // CHROME_BROWSER_UI_COCOA_JS_MODAL_DIALOG_COCOA_H_
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
49