aac9f559d9c9fdabc6bd9e2ad181bc835ae94cf3
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / efl_integration / browser / javascript_dialog_manager_efl.h
1 // Copyright 2014 Samsung Electronics. 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 JAVASCRIPT_DIALOG_MANAGER_EFL_H_
6 #define JAVASCRIPT_DIALOG_MANAGER_EFL_H_
7
8 #include <string>
9 #include "base/strings/string16.h"
10 #include "content/public/browser/javascript_dialog_manager.h"
11 #include "eweb_view.h"
12 #include "public/ewk_view.h"
13 #include "url/gurl.h"
14
15 namespace content {
16 class WebContents;
17 }
18 class JavaScriptModalDialogEfl;
19
20 class JavaScriptModalCallbacksData {
21  public:
22   bool Run(Evas_Object* obj,
23            const char* content_text,
24            const char* default_text);
25   static JavaScriptModalCallbacksData* CreateWithAlertDialogData(
26       Ewk_View_JavaScript_Alert_Callback callback,
27       void* user_data);
28   static JavaScriptModalCallbacksData* CreateWithConfirmDialogData(
29       Ewk_View_JavaScript_Confirm_Callback callback,
30       void* user_data);
31   static JavaScriptModalCallbacksData* CreateWithPromptDialogData(
32       Ewk_View_JavaScript_Prompt_Callback callback,
33       void* user_data);
34   ~JavaScriptModalCallbacksData() {}
35
36  private:
37   JavaScriptModalCallbacksData(
38       content::JavaScriptDialogType javascript_dialog_type,
39       void* user_data);
40   union {
41     Ewk_View_JavaScript_Alert_Callback alert_callback_;
42     Ewk_View_JavaScript_Confirm_Callback confirm_callback_;
43     Ewk_View_JavaScript_Prompt_Callback prompt_callback_;
44   };
45   void* user_data_;
46   content::JavaScriptDialogType javascript_dialog_type_;
47 };
48
49 class JavaScriptDialogManagerEfl : public content::JavaScriptDialogManager {
50  public:
51   JavaScriptDialogManagerEfl();
52   virtual ~JavaScriptDialogManagerEfl();
53
54   // JavaScriptDialogManager:
55   void RunJavaScriptDialog(content::WebContents* web_contents,
56                            content::RenderFrameHost* render_frame_host,
57                            content::JavaScriptDialogType dialog_type,
58                            const base::string16& message_text,
59                            const base::string16& default_prompt_text,
60                            DialogClosedCallback callback,
61                            bool* did_suppress_message) override;
62   void RunBeforeUnloadDialog(content::WebContents* web_contents,
63                              content::RenderFrameHost* render_frame_host,
64                              bool is_reload,
65                              DialogClosedCallback callback) override;
66   bool HandleJavaScriptDialog(content::WebContents* web_contents,
67                               bool accept,
68                               const base::string16* prompt_override) override;
69   void CancelDialogs(content::WebContents* web_contents,
70                      bool reset_state) override;
71
72   void SetAlertCallback(Ewk_View_JavaScript_Alert_Callback callback,
73                         void* user_data);
74   void SetConfirmCallback(Ewk_View_JavaScript_Confirm_Callback callback,
75                           void* user_data);
76   void SetPromptCallback(Ewk_View_JavaScript_Prompt_Callback callback,
77                          void* user_data);
78   void ExecuteDialogClosedCallBack(bool result, const std::string prompt_data);
79   void SetPopupSize(int width, int height);
80
81  private:
82   std::unique_ptr<JavaScriptModalDialogEfl> dialog_;
83   std::unique_ptr<JavaScriptModalCallbacksData> alert_callback_data_;
84   std::unique_ptr<JavaScriptModalCallbacksData> confirm_callback_data_;
85   std::unique_ptr<JavaScriptModalCallbacksData> prompt_callback_data_;
86   DialogClosedCallback dialog_closed_callback_;
87
88   DISALLOW_COPY_AND_ASSIGN(JavaScriptDialogManagerEfl);
89 };
90
91 #endif /* JAVASCRIPT_DIALOG_MANAGER_EFL_H_ */