XWalk WebView patchset, README and LICENSE files.
[platform/framework/web/xwalk_webview.git] / patchset / 0021-Add-loading-indication-API-and-use-it-in-example-app.patch
1 From 42b9ec78f75f8b0b48487e340eaae31e0ab07305 Mon Sep 17 00:00:00 2001
2 From: Alexander Shalamov <alexander.shalamov@intel.com>
3 Date: Thu, 8 Aug 2013 17:48:37 +0300
4 Subject: [PATCH 21/33] Add loading indication API and use it in example
5  application
6
7 ---
8  efl_webview/examples/main.cc                   | 19 +++++++++++++++++++
9  efl_webview/lib/web_contents_delegate_xwalk.cc |  8 +++++---
10  efl_webview/lib/web_contents_delegate_xwalk.h  |  3 +--
11  efl_webview/lib/webview.cc                     |  2 +-
12  efl_webview/lib/webview_callbacks.h            |  4 ++--
13  efl_webview/public/xwalk_view.h                |  2 +-
14  6 files changed, 29 insertions(+), 9 deletions(-)
15
16 diff --git a/efl_webview/examples/main.cc b/efl_webview/examples/main.cc
17 index 7ea8738..c0cbf4b 100644
18 --- a/efl_webview/examples/main.cc
19 +++ b/efl_webview/examples/main.cc
20 @@ -67,6 +67,14 @@ on_url_changed(void *user_data, Evas_Object *xwalk_view, void *event_info)
21      free(url);
22  }
23  
24 +static void
25 +on_loadingstate_changed(void *user_data,
26 +                        Evas_Object *xwalk_view,
27 +                        void *event_info)
28 +{
29 +  elm_progressbar_pulse((Evas_Object*)user_data, *(bool*)event_info);
30 +}
31 +
32  static void window_create()
33  {
34    /* Create elementary window */
35 @@ -123,6 +131,15 @@ static void window_create()
36    elm_box_pack_end(horizontal_layout, url_entry);
37    evas_object_show(url_entry);
38  
39 +  Evas_Object* progress_bar = elm_progressbar_add(elm_window);
40 +  elm_progressbar_span_size_set(progress_bar, 10);
41 +  elm_progressbar_pulse_set(progress_bar, EINA_TRUE);
42 +  elm_progressbar_unit_format_set(progress_bar, NULL);
43 +  evas_object_size_hint_align_set(progress_bar, EVAS_HINT_FILL, 1);
44 +  evas_object_size_hint_weight_set(progress_bar, 0.01, EVAS_HINT_EXPAND);
45 +  elm_box_pack_end(horizontal_layout, progress_bar);
46 +  evas_object_show(progress_bar);
47 +
48    /* Create WebView */
49    Evas_Object* web_view = xwalk_view_add(evas_object_evas_get(elm_window));
50    evas_object_size_hint_weight_set(web_view, EVAS_HINT_EXPAND,
51 @@ -147,6 +164,8 @@ static void window_create()
52                                   on_title_changed, elm_window);
53    evas_object_smart_callback_add(web_view, "url,changed",
54                                   on_url_changed, url_entry);
55 +  evas_object_smart_callback_add(web_view, "loadingstate,changed",
56 +                                 on_loadingstate_changed, progress_bar);
57  
58    evas_object_resize(elm_window, window_width, window_height);
59    evas_object_show(elm_window);
60 diff --git a/efl_webview/lib/web_contents_delegate_xwalk.cc b/efl_webview/lib/web_contents_delegate_xwalk.cc
61 index 8700b32..d173fbc 100644
62 --- a/efl_webview/lib/web_contents_delegate_xwalk.cc
63 +++ b/efl_webview/lib/web_contents_delegate_xwalk.cc
64 @@ -26,9 +26,11 @@ WebContentsDelegateXWalk::WebContentsDelegateXWalk(
65    web_contents_->SetDelegate(this);
66  }
67  
68 -void WebContentsDelegateXWalk::LoadProgressChanged(content::WebContents* source,
69 -                                 double progress) {
70 -  web_view_->SmartCallback<webviewcallbacks::LoadProgress>().Call(&progress);
71 +void WebContentsDelegateXWalk::LoadingStateChanged
72 +    (content::WebContents* source) {
73 +  bool is_loading = source->IsLoading();
74 +  web_view_->SmartCallback<webviewcallbacks::LoadingStateChanged>().Call(
75 +      &is_loading);
76  }
77  
78  bool WebContentsDelegateXWalk::TakeFocus(
79 diff --git a/efl_webview/lib/web_contents_delegate_xwalk.h b/efl_webview/lib/web_contents_delegate_xwalk.h
80 index fae5e68..5fd1409 100644
81 --- a/efl_webview/lib/web_contents_delegate_xwalk.h
82 +++ b/efl_webview/lib/web_contents_delegate_xwalk.h
83 @@ -22,8 +22,7 @@ class WebContentsDelegateXWalk : public content::WebContentsDelegate {
84   public:
85    WebContentsDelegateXWalk(content::BrowserContext*, WebView*);
86  
87 -  virtual void LoadProgressChanged(content::WebContents* source,
88 -                                   double progress) OVERRIDE;
89 +  virtual void LoadingStateChanged(content::WebContents* source) OVERRIDE;
90  
91    virtual bool TakeFocus(content::WebContents* source,
92                           bool reverse) OVERRIDE;
93 diff --git a/efl_webview/lib/webview.cc b/efl_webview/lib/webview.cc
94 index a60ac13..2eccd1e 100644
95 --- a/efl_webview/lib/webview.cc
96 +++ b/efl_webview/lib/webview.cc
97 @@ -22,7 +22,7 @@ namespace callbacks = xwalk::webviewcallbacks;
98  const char evas_smart_xwalk_view_type[] = "Evas_Smart_Xwalk_View";
99  
100  const Evas_Smart_Cb_Description g_smart_callbacks[] = {
101 -  {callbacks::CallbackName<callbacks::LoadProgress>(), "d"},
102 +  {callbacks::CallbackName<callbacks::LoadingStateChanged>(), "d"},
103    {callbacks::CallbackName<callbacks::TitleChange>(), "s"},
104    {NULL, NULL}};
105  
106 diff --git a/efl_webview/lib/webview_callbacks.h b/efl_webview/lib/webview_callbacks.h
107 index 241b1d6..38df9eb 100644
108 --- a/efl_webview/lib/webview_callbacks.h
109 +++ b/efl_webview/lib/webview_callbacks.h
110 @@ -12,7 +12,7 @@ namespace xwalk {
111  namespace webviewcallbacks {
112  
113  enum CallbackType {
114 -  LoadProgress,
115 +  LoadingStateChanged,
116    TitleChange,
117    URLChanged
118  };
119 @@ -70,7 +70,7 @@ struct CallBackInfo<callbackType> {                              \
120  }
121  
122  // Note: type 'void' means that no arguments are expected.
123 -DECLARE_XWALK_VIEW_CALLBACK(LoadProgress, "load,progress", double*);
124 +DECLARE_XWALK_VIEW_CALLBACK(LoadingStateChanged, "loadingstate,changed", bool*);
125  DECLARE_XWALK_VIEW_CALLBACK(TitleChange, "title,changed", const char*);
126  DECLARE_XWALK_VIEW_CALLBACK(URLChanged, "url,changed", const char*);
127  }  // namespace webviewcallbacks
128 diff --git a/efl_webview/public/xwalk_view.h b/efl_webview/public/xwalk_view.h
129 index 680a5ab..e6f70a5 100644
130 --- a/efl_webview/public/xwalk_view.h
131 +++ b/efl_webview/public/xwalk_view.h
132 @@ -8,7 +8,7 @@
133   * The following signals (see evas_object_smart_callback_add()) are emitted:
134   *
135   * - "title,changed", const char*: title of the main frame was changed.
136 - * - "load,progress", double*: load progress has changed (value from 0.0 to 1.0).
137 + * - "loadingstate,changed", Eina_Bool*: loading state has changed, @c EINA_TRUE if main frame is in loading state; @c EINA_FALSE, otherwise.
138   * - "url,changed", const char*: url of the main frame was changed.
139   */
140  
141 -- 
142 1.8.1.2
143