1 // Copyright (c) 2012 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 COMPONENTS_JAVASCRIPT_DIALOGS_ANDROID_APP_MODAL_DIALOG_VIEW_ANDROID_H_ 6 #define COMPONENTS_JAVASCRIPT_DIALOGS_ANDROID_APP_MODAL_DIALOG_VIEW_ANDROID_H_ 7 8 #include <memory> 9 10 #include "base/android/jni_weak_ref.h" 11 #include "base/android/scoped_java_ref.h" 12 #include "base/macros.h" 13 #include "components/javascript_dialogs/app_modal_dialog_view.h" 14 #include "ui/gfx/native_widget_types.h" 15 16 namespace javascript_dialogs { 17 18 class AppModalDialogController; 19 20 class AppModalDialogViewAndroid : public AppModalDialogView { 21 public: 22 AppModalDialogViewAndroid(JNIEnv* env, 23 AppModalDialogController* controller, 24 gfx::NativeWindow parent); 25 ~AppModalDialogViewAndroid() override; 26 27 // AppModalDialogView: 28 void ShowAppModalDialog() override; 29 void ActivateAppModalDialog() override; 30 void CloseAppModalDialog() override; 31 void AcceptAppModalDialog() override; 32 void CancelAppModalDialog() override; 33 bool IsShowing() const override; 34 35 // Called when java confirms or cancels the dialog. 36 void DidAcceptAppModalDialog( 37 JNIEnv* env, 38 const base::android::JavaParamRef<jobject>& obj, 39 const base::android::JavaParamRef<jstring>& prompt_text, 40 bool suppress_js_dialogs); 41 void DidCancelAppModalDialog(JNIEnv* env, 42 const base::android::JavaParamRef<jobject>&, 43 bool suppress_js_dialogs); 44 45 const base::android::ScopedJavaGlobalRef<jobject>& GetDialogObject() const; 46 47 private: 48 std::unique_ptr<AppModalDialogController> controller_; 49 base::android::ScopedJavaGlobalRef<jobject> dialog_jobject_; 50 JavaObjectWeakGlobalRef parent_jobject_weak_ref_; 51 52 DISALLOW_COPY_AND_ASSIGN(AppModalDialogViewAndroid); 53 }; 54 55 } // namespace javascript_dialogs 56 57 #endif // COMPONENTS_JAVASCRIPT_DIALOGS_ANDROID_APP_MODAL_DIALOG_VIEW_ANDROID_H_ 58