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