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